版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGEPAGE25程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)報(bào)告書設(shè)計(jì)題目班級(jí)成績(jī)管理系統(tǒng)姓名李和桓專業(yè)班級(jí)信息管理及信息系統(tǒng)10-1班學(xué)號(hào)1010030106指導(dǎo)教師溫廷新成績(jī)工商管理學(xué)院信息管理系2011年3月目錄TOC\o"1-2"\h\z\u一、引言 21.1課程設(shè)計(jì)目的 21.2實(shí)踐依據(jù) 21.3擬創(chuàng)新點(diǎn) 31.4實(shí)踐意義 3二、系統(tǒng)功能和原始數(shù)據(jù) 32.1原始數(shù)據(jù) 32.2系統(tǒng)功能 3三、程序總體設(shè)計(jì) 43.1數(shù)據(jù)結(jié)構(gòu) 43.2模塊劃分和層次結(jié)構(gòu) 43.3函數(shù)原型清單 63.4程序總體框架 6四、功能模塊函數(shù)設(shè)計(jì)和調(diào)試 74.1模塊函數(shù)的設(shè)計(jì) 74.2模塊函數(shù)的調(diào)試 13五、程序清單 18六、課程設(shè)計(jì)總結(jié) 24七、參考文獻(xiàn) 25一、引言1.1課程設(shè)計(jì)目的隨著計(jì)算機(jī)技術(shù)的普及,計(jì)算機(jī)已成為各行各業(yè)最基本的工具之一。C語言作為國(guó)際上廣泛流行的程設(shè)語言,它的功能強(qiáng)大,使用靈活,既具有高級(jí)語言的特點(diǎn),又具有低級(jí)語言的特點(diǎn);既可以編寫系統(tǒng)軟件,又可以編寫應(yīng)用軟件。所以我們要好好掌握這門語言。C語言課程設(shè)計(jì)可以使我們進(jìn)一步掌握C語言的運(yùn)用和程序設(shè)計(jì)能力,培養(yǎng)我們的理解和運(yùn)用程序化設(shè)計(jì)的思想和方法。1.2實(shí)踐依據(jù)班級(jí)成績(jī)管理系統(tǒng)這一題目貼近我們的生活,有很強(qiáng)的實(shí)踐性,這一程序我運(yùn)用switch語句對(duì)各個(gè)模塊的分支選擇,用結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)對(duì)學(xué)生數(shù)據(jù)的輸入和整理,使整個(gè)程序能夠并實(shí)現(xiàn)其功能。1.3擬創(chuàng)新點(diǎn)本程序運(yùn)用switch語句實(shí)現(xiàn)各個(gè)模塊的分支選擇,簡(jiǎn)化了程序的結(jié)構(gòu),是程序表達(dá)簡(jiǎn)練,模塊結(jié)構(gòu)分明,方便程序的調(diào)試,switch語句的運(yùn)用是本程序的一個(gè)創(chuàng)新點(diǎn)。通過函數(shù)的調(diào)用使整個(gè)程序?qū)哟畏置?,利于讀程序,函數(shù)的調(diào)用是本程序的另一創(chuàng)新點(diǎn)。1.4實(shí)踐意義班級(jí)成績(jī)管理系統(tǒng)對(duì)于班集體學(xué)生成績(jī)信息的管理有很大的幫助作用,通過這一程序可實(shí)現(xiàn)學(xué)生成績(jī)的錄入,排序等功能。同時(shí)在設(shè)計(jì)此程序時(shí)又可以將理論知識(shí)運(yùn)用到實(shí)踐當(dāng)中,可以對(duì)課上知識(shí)更好的理解,曾強(qiáng)自己的運(yùn)用能力,強(qiáng)化編程思維,所以此課程設(shè)計(jì)有很強(qiáng)的實(shí)踐意義。二、系統(tǒng)功能和原始數(shù)據(jù)2.1原始數(shù)據(jù)1.數(shù)據(jù)錄入:錄入系統(tǒng)所需數(shù)據(jù),運(yùn)用結(jié)構(gòu)體數(shù)組組織數(shù)據(jù);2.數(shù)據(jù)顯示:將輸入的數(shù)據(jù)顯示出來,用循環(huán)體來實(shí)現(xiàn)數(shù)組數(shù)據(jù)的顯示;3.數(shù)據(jù)排序:對(duì)要求的數(shù)據(jù)進(jìn)行排序,運(yùn)用循環(huán)嵌套和冒泡法實(shí)現(xiàn)對(duì)學(xué)生平均成績(jī)的降序排列。4.數(shù)據(jù)添加:根據(jù)需求添加所需數(shù)據(jù);5.數(shù)據(jù)刪除:根據(jù)需求刪除指定數(shù)據(jù),運(yùn)用循環(huán)和條件語句實(shí)現(xiàn)。2.2系統(tǒng)功能此系統(tǒng)具有錄入學(xué)生信息,顯示學(xué)生信息,成績(jī)排序,添加學(xué)生信息,刪除學(xué)生信息,退出系統(tǒng)的六大功能。系統(tǒng)功能圖如圖2-1所示:主菜單主菜單錄入學(xué)生信息顯示學(xué)生信息成績(jī)排序信息添加學(xué)生信息刪除學(xué)生信息退出 圖2-1圖2-1三、程序總體設(shè)計(jì)3.1數(shù)據(jù)結(jié)構(gòu)班級(jí)成績(jī)管理系統(tǒng)采用一個(gè)結(jié)構(gòu)體數(shù)組,學(xué)生信息數(shù)據(jù)結(jié)構(gòu)如下:structstudent/*定義結(jié)構(gòu)體數(shù)組*/{intno;/*定義整型變量學(xué)號(hào)no*/charname[20];/*定義字符串變量姓名name[20]*/charsex[4];/*定義字符串變量性別sex[4]*/floatscore1;/*定義浮點(diǎn)型變量成績(jī)score1*/floatscore2;/*定義浮點(diǎn)型變量成績(jī)score2*/floatscore3;/*定義浮點(diǎn)型變量成績(jī)score3*/floatsort;/*定義浮點(diǎn)型變量排序sort*/floatave;/*定義浮點(diǎn)型變量平均成績(jī)ave*/floatsum;/*定義浮點(diǎn)型變量總成績(jī)sum*/}3.2模塊劃分和層次結(jié)構(gòu)3.2.1模塊劃分本程序劃分為七個(gè)模塊,分別為功能選擇模塊,錄入學(xué)生信息模塊模塊,顯示學(xué)生信息模塊,成績(jī)排序信息模塊,添加學(xué)生信息模塊,刪除學(xué)生信息模塊和退出模塊。功能選擇模塊:運(yùn)用switch函數(shù)實(shí)現(xiàn)以下各個(gè)功能模塊的分支選擇。錄入學(xué)生信息模塊:調(diào)用input函數(shù),主要使用scanf語句定義input函數(shù),用來實(shí)現(xiàn)學(xué)生信息數(shù)據(jù)的錄入。顯示學(xué)生信息模塊:調(diào)用display函數(shù),主要使用for循環(huán)實(shí)現(xiàn)已輸入學(xué)生信息數(shù)據(jù)的讀取和輸出。成績(jī)排序信息模塊:調(diào)用sort函數(shù),采用for循環(huán)語句和冒泡法實(shí)現(xiàn)按學(xué)生平均成績(jī)降序排序。添加學(xué)生信息模塊:調(diào)用insert函數(shù),運(yùn)用do…while函數(shù)實(shí)現(xiàn)循環(huán),運(yùn)用gets語句實(shí)現(xiàn)結(jié)構(gòu)體的輸入。刪除學(xué)生信息模塊:調(diào)用del函數(shù),用for語句的循環(huán)嵌套和if條件語句實(shí)現(xiàn)對(duì)指定學(xué)生信息數(shù)組的替換,達(dá)到刪除學(xué)生信息數(shù)據(jù)的目的。退出模塊:調(diào)用exit(0)函數(shù),正常結(jié)束程序運(yùn)行。3.2.2層次結(jié)構(gòu)層次結(jié)構(gòu)如圖3-1所示:主函數(shù)主函數(shù)功能選擇模塊功能選擇模塊退出模塊刪除學(xué)生信息模塊添加學(xué)生信息退出模塊刪除學(xué)生信息模塊添加學(xué)生信息模塊成績(jī)排序信息模塊顯示學(xué)生信息模塊錄入學(xué)生信息模塊息圖3-1圖3-13.3函數(shù)原型清單main()函數(shù):主調(diào)函數(shù),控制菜單函數(shù)提供用戶選擇界面input()函數(shù):輸入函數(shù),學(xué)生數(shù)據(jù)輸入。sort()函數(shù):排序數(shù)據(jù)函數(shù),將學(xué)生的平均成績(jī)數(shù)據(jù)按降序排序。display()函數(shù):顯示數(shù)據(jù)函數(shù),將輸入的數(shù)據(jù)學(xué)生信息及成績(jī)數(shù)據(jù)輸出顯示出來。insert()函數(shù):插入數(shù)據(jù)函數(shù),輸入學(xué)生編號(hào),之后輸入學(xué)生的姓名,性別,各科成績(jī),建立一個(gè)數(shù)組,將此編號(hào)后的學(xué)生編號(hào)依次加一。del()函數(shù):刪除數(shù)據(jù)函數(shù),輸入要?jiǎng)h除的學(xué)生編號(hào),查找此編號(hào)下的學(xué)生數(shù)據(jù),此數(shù)據(jù)被下一編號(hào)的學(xué)生數(shù)據(jù)替換,此編號(hào)之后的學(xué)生編號(hào)依次減一。3.4程序總體框架程序總體框架如圖3-2所示:開始選擇系統(tǒng)功能1~6開始選擇系統(tǒng)功能1~6Break是執(zhí)行input函數(shù)執(zhí)行input函數(shù)Break是執(zhí)行input函數(shù)執(zhí)行input函數(shù)Case1是執(zhí)行exit(0)函數(shù)BreakCase6Case5Case4Case3Case2是是否否否否否是執(zhí)行exit(0)函數(shù)BreakCase6Case5Case4Case3Case2是是否否否否否否是是執(zhí)行display函數(shù)執(zhí)行sort函數(shù)執(zhí)行insert函數(shù)執(zhí)行del函數(shù)BreakBreakBreakBreak結(jié)束結(jié)束圖3-2圖3-2四、功能模塊函數(shù)設(shè)計(jì)和調(diào)試4.1模塊函數(shù)的設(shè)計(jì)4.1.1功能選擇模塊運(yùn)用switch函數(shù)實(shí)現(xiàn)功能的分支選擇,運(yùn)用printf語句顯示模塊功能,使用scanf語句實(shí)現(xiàn)功能的選擇。程序流程圖如圖4-1所示:開始選擇系統(tǒng)功能1~6開始選擇系統(tǒng)功能1~6Case1Case1是執(zhí)行input函數(shù)Break執(zhí)行input函數(shù)BreakCCase2CCase3Case4Case4CCase5Break執(zhí)行exit(0)函數(shù)Break執(zhí)行exit(0)函數(shù)Case6是是否是是否是是執(zhí)行display函數(shù)執(zhí)行sort函數(shù)執(zhí)行insert函數(shù)執(zhí)行del函數(shù)BreakBreakBreakBreak是否否否否否結(jié)束結(jié)束圖4-1圖4-14.1.2錄入學(xué)生信息模塊輸入模塊采用do…while函數(shù)進(jìn)行循環(huán)控制,主要用printf和scanf函數(shù)實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出。程序流程圖如圖4-2所示:開始開始i=0輸入數(shù)據(jù)i++輸出:是否繼續(xù)輸入?(y/n)輸入:&chch==n清屏否否是是圖4-2圖4-24.1.3顯示學(xué)生信息模塊采用do…while循環(huán)控制,里面嵌套for循環(huán),實(shí)現(xiàn)按照學(xué)生序號(hào)輸出信息,運(yùn)用printf語句輸出。程序流程圖如圖4-3所示:開始開始輸出所需文字輸出所需文字i=0i=0stu[i]stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;輸出:按任意鍵返回主菜單返回主菜單輸出:按任意鍵返回主菜單返回主菜單輸出學(xué)生信息i<now_noi++否否是是圖4-3圖4-34.1.4成績(jī)排序信息模塊采用for循環(huán)的嵌套使用和if條件語句構(gòu)成冒泡法,實(shí)現(xiàn)對(duì)數(shù)據(jù)的降序排序并用printf語句輸出。程序n-s圖如圖4-4所示:for(i=1;i<now_no;i++)for(j=1;j<=now_no-i;j++)if(stu[j-1].ave<stu[j].ave)假真stu[j-1].avestu[j-1].ave和stu[j].ave和stu[j].ave不互換位置互換位置清屏圖4-4圖4-44.1.5添加模塊采用do…while循環(huán)控制。運(yùn)用printf語句輸出提示所需輸入信息,運(yùn)用scanf語句實(shí)現(xiàn)添加輸入信息。函數(shù)流程圖如圖4-5所示:開始開始輸出所需輸入數(shù)據(jù)輸入學(xué)生編號(hào):&stu[now_no].no輸入其他所需信息now_no=now_no+1輸出:是否繼續(xù)輸入?(Y/N)輸入字符:&chch==n清屏 否否是是是是圖4-5圖4-54.1.6刪除學(xué)生信息模塊采用for循環(huán)的嵌套和if條件語句實(shí)現(xiàn)對(duì)指定數(shù)據(jù)的替換,達(dá)到刪除的目的,采用scanf語句實(shí)現(xiàn)指定需要?jiǎng)h除數(shù)據(jù)的功能。函數(shù)流程圖如圖4-6所示:開始開始定義定義intinum,i,j輸出:輸出:輸入要?jiǎng)h除學(xué)員的編號(hào)輸入編號(hào)&inum輸入編號(hào)&inumi=0i=0否是stu[i].no==inum否是stu[i].no==inumi++i++j=ij=ij++j++stu[i]=stu[i+1]stu[i]=stu[i+1]否否j<now_noj<now_no是是圖4-6清屏圖4-6清屏4.2模塊函數(shù)的調(diào)試4.2.1運(yùn)行選擇模塊界面運(yùn)行選擇模塊界面如圖4-7所示:圖4-7圖4-74.2.2選擇輸入模塊功能輸入1,按回車鍵,界面如圖4-8所示:圖4-8圖4-8每次輸入數(shù)據(jù)按回車鍵顯示所需輸入的下一數(shù)據(jù),最后若輸入Y,重復(fù)上述輸入,界面顯示第二個(gè)學(xué)員信息,以此類推。界面顯示如圖4-9所示:圖4-9圖4-9若輸入N.則返回主菜單界面顯示如圖4-10所示:圖4-10圖4-104.2.3選擇顯示學(xué)生信息模塊功能輸入5組學(xué)生數(shù)據(jù),選擇第二個(gè)功能項(xiàng),界面如圖4-11所示:圖4-11圖4-114.2.4選擇成績(jī)排序模塊功能按任意鍵返回主菜單,之后選擇排序功能模塊從新輸入學(xué)生數(shù)據(jù),輸入3,按回車鍵,界面顯示如圖4-12所示:圖4-12圖4-124.2.5選擇添加學(xué)生信息模塊功能按任意鍵返回主菜單,之后選擇第四個(gè)添加功能模塊,輸入4,按回車鍵,界面顯示是如圖4-13所示:圖4-13圖4-13按照界面提示完成數(shù)據(jù)的輸入最后輸入n,(例如輸入編號(hào)6,姓名ff,性別吧,語文成績(jī)91,數(shù)學(xué)成績(jī)98,英語成績(jī)82,)界面顯示如圖4-14示圖4-14圖4-144.2.6選擇刪除學(xué)生信息模塊功能按任意鍵返回主菜單,輸入5,選擇刪除功能,顯示界面如圖4-15示:圖4-15圖4-15按照界面提示完成數(shù)據(jù)輸入,(例如輸入01),運(yùn)行界面如圖4-16示:圖4-16圖4-164.2.7選擇退出模塊功能按任意鍵返回主菜單之后,輸入6,選擇退出,界面顯示如圖4-17所示:圖4-17圖4-17按任意鍵程序停止運(yùn)行,退出程序。五、程序清單#include<time.h>#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<math.h>#defineMAX50voidinput();voidsort();voiddisplay();voidinsert();voiddel();voidaverage();intnow_no=0;structstudent{intno;charname[20];charsex[4];floatscore1;floatscore2;floatscore3;floatsort;floatave;floatsum;};structstudentstu[MAX],*p;main()//主函數(shù){charas;start:printf("\t\t\t歡迎使用學(xué)生成績(jī)管理系統(tǒng)\n\n");//一下為功能選擇模塊do{printf("\n\t\t\t\t1.錄入學(xué)生信息\n\t\t\t\t2.顯示學(xué)生信息\n\t\t\t\t3.成績(jī)排序信息\n\t\t\t\t4.添加學(xué)生信息\n\t\t\t\t5.刪除學(xué)生信息\n\t\t\t\t6.退出\n");printf("\t\t\t\t選擇功能選項(xiàng):");as=getch();switch(as){case'1':system("cls");input();break;case'2':system("cls");display();break;case'3':system("cls");sort();display();break;case'4':system("cls");display();insert();break;case'5':system("cls");del();display();break;case'6':system("exit");exit(0);default:system("cls");gotostart;}}while(1);//至此功能選擇結(jié)束}voidinput()//原始數(shù)據(jù)錄入模塊{inti=0;charch;do{printf("\t\t\t\t1.錄入學(xué)員信息\n輸入第%d個(gè)學(xué)員的信息\n",i+1);printf("\n輸入學(xué)生編號(hào):");scanf("%d",&stu[i].no);fflush(stdin);printf("\n輸入學(xué)員姓名:");fflush(stdin);gets(stu[i].name);printf("\n輸入學(xué)員性別:");fflush(stdin);gets(stu[i].sex);printf("\n輸入學(xué)員語文成績(jī):");fflush(stdin);scanf("%f",&stu[i].score1);printf("\n輸入學(xué)員數(shù)學(xué)成績(jī):");fflush(stdin);scanf("%f",&stu[i].score2);printf("\n輸入學(xué)員英語成績(jī):");fflush(stdin);scanf("%f",&stu[i].score3);printf("\n\n");i++;now_no=i;printf("%d",now_no);printf("是否繼續(xù)輸入?(Y/N)");ch=getch();system("cls");}while(ch!='n');system("cls");}voidsort()//排序數(shù)據(jù)函數(shù){structstudenttemp;inti,j;for(i=1;i<now_no;i++){for(j=1;j<=now_no-i;j++){if(stu[j-1].ave<stu[j].ave){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=temp;}}}}voiddisplay()//顯示數(shù)據(jù)函數(shù){inti;charas;floatave;do{printf("\t\t班級(jí)學(xué)員信息列表\n");printf("編號(hào)\t姓名\t性別\t語文成績(jī)\t數(shù)學(xué)成績(jī)\t英語成績(jī)\t平均值\n");for(i=0;i<now_no;i++){stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("%d\t%s\t%s\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);}printf("\t\t按任意鍵返回主菜單.");as=getch();gotoexit;}while(as!='n');exit:system("cls");}voidinsert()//插入數(shù)據(jù)函數(shù){charch;do{printf("\n\t\t輸入新插入學(xué)員隊(duì)信息\n");printf("\n輸入學(xué)生編號(hào):");scanf("%d",&stu[now_no].no);fflush(stdin);printf("\n輸入學(xué)員姓名:");fflush(stdin);gets(stu[now_no].name);printf("\n輸入學(xué)員性別:");fflush(stdin);gets(stu[now_no].sex);printf("\n輸入學(xué)員成績(jī):");fflush(stdin);scanf("%f",&stu[now_no].score1);printf("\n輸入學(xué)員成績(jī):");fflush(stdin);scanf("%f",&stu[now_no].score2);printf("\n輸入學(xué)員成績(jī):");fflush(stdin);scanf("%f",&stu[now_no].score3);printf("\n\n");now_no=now_no+1;sort();printf("是否繼續(xù)輸入?(Y/N)");ch=getch();system("cls");}while(ch!='n');}voiddel()//刪除數(shù)據(jù)函數(shù){intinum,i,j;printf("輸入要?jiǎng)h除學(xué)員的編號(hào):");fflush(stdin);scanf("%d",&inum);for(i=0;i<now_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 招投標(biāo)項(xiàng)目供應(yīng)鏈管理優(yōu)化
- 商業(yè)廣場(chǎng)樓面耐磨施工合同
- 籃球場(chǎng)水電布線施工協(xié)議
- 石油開采挖機(jī)計(jì)時(shí)租賃合同
- 商務(wù)樓宇治安管理規(guī)則
- 生物科技項(xiàng)目跟投管理
- 舞臺(tái)座位分配指南
- 廣告?zhèn)髅綆?kù)房施工合同
- 藝術(shù)展覽設(shè)計(jì)審查策略
- 言語康復(fù)治療師年終總結(jié)
- 潛油泵及潛油泵加油機(jī)講義
- 物業(yè)服務(wù)公司各崗位規(guī)范用語
- 醫(yī)患溝通內(nèi)容要求記錄模板(入院、入院三日、術(shù)前、術(shù)后、出院)
- Excel 會(huì)計(jì)記賬模板-錄入憑證自動(dòng)生成財(cái)務(wù)報(bào)表(超實(shí)用)
- 航海學(xué)天文定位第四篇第6章天文定位
- 淺談深度教學(xué)中小學(xué)數(shù)學(xué)U型學(xué)習(xí)模式
- 物理電學(xué)暗箱專題30道
- 裝修公司員工勞動(dòng)合同
- 江西上饒鉛山汽車駕駛科目三考試線路
- 通過一起放火案件淺析放火案件的移交工作
- 南京農(nóng)業(yè)大學(xué)學(xué)生在校學(xué)習(xí)期間現(xiàn)實(shí)表現(xiàn)證明
評(píng)論
0/150
提交評(píng)論