版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、西安文理學院 信息工程學院軟件編程課程設(shè)計報告設(shè)計題目:學生成績管理系統(tǒng)課程設(shè)計 學生學號: 0204140137 專業(yè)班級: 物聯(lián)網(wǎng)工程一班 學生姓名: 張旺陽 學生成績: 指導教師(職稱): 課題工作時間: 2015-11-25 至 2015-12-9 信息工程學院軟件編程課程設(shè)計任務(wù)書學生姓名張旺陽學號0204140137專業(yè)班級物聯(lián)網(wǎng)工程一班設(shè)計題目學生成績管理系統(tǒng)設(shè)計學生成績信息包括:學期,學號,班別,姓名,四門課程成績(語文、數(shù)學、英語和計算機)。主要功能:(1) 能按學期、按班級完成對學生成績的錄入、修改(2) 能按班級統(tǒng)計學生的成績,求學生的總分及平均分,設(shè)計并輸出統(tǒng)計報表(3
2、) 能查詢學生成績,不及格科目及學生名單(4) 能按班級輸出學生的成績單(5) 能按班級,按課程,對學生成績進行排序。指導教師: 日 期:2015年11月25日成績評定表學生姓名: 張旺陽 學號: 0204140137 專業(yè)/班級: 物聯(lián)網(wǎng)工程一班 類別合計分值各項分值評分標準實際得分合計得分備注平時表現(xiàn)1010按時參加設(shè)計指導,無違反紀律情況。完成情況3020按設(shè)計任務(wù)書的要求完成了全部任務(wù),能完整演示其設(shè)計內(nèi)容,符合要求。10能對其設(shè)計內(nèi)容進行詳細、完整的介紹,并能就指導教師提出的問題進行正確的回答。報告質(zhì)量3515報告文字通順,內(nèi)容翔實,論述充分、完整,立論正確,結(jié)構(gòu)嚴謹合理;報告字數(shù)符
3、合相關(guān)要求,工整規(guī)范,整齊劃一。5課題背景介紹清楚,綜述分析充分。5設(shè)計方案合理、可行,論證嚴謹,邏輯性強,具有說服力。5符號統(tǒng)一;圖表完備、符合規(guī)范要求。5能對整個設(shè)計過程進行全面的總結(jié),得出有價值的結(jié)論或結(jié)果。答辯情況2510在規(guī)定時間內(nèi)能就所設(shè)計的內(nèi)容進行闡述,言簡意明,重點突出,論點正確,條理清晰。15在規(guī)定時間內(nèi)能準確、完整、流利地回答教師所提出的問題??傇u成績: 分 指導教師: (簽字)日 期: 年 月 日歡迎下載目 錄1. 概述11.1課題背景11.2系統(tǒng)功能3 1.3設(shè)計要求 42. 概要設(shè)計 52.1系統(tǒng)功能模塊52.2各模塊流程圖63. 詳細設(shè)計83.1 程序中使用的數(shù)據(jù)結(jié)
4、構(gòu)83.2 函數(shù)列表104. 設(shè)計結(jié)果與分析 125. 總結(jié)與體會15參考文獻X附錄 主要程序代碼X歡迎下載1.1課題背景 隨著計算機的普及,計算機在生活中得到越來越多的應(yīng)用,其中在計算機上運行的各種軟件在解決生活中的實際問題中起到重大的作用,而目前在編寫應(yīng)用程序時,c+以其高效及靈活性成為大多數(shù)程序設(shè)計者的首選,其次對于普通用戶者,利用c+語言設(shè)計出適用的小型軟件對解決生活中的繁瑣問題有很大的作用。 在學?;虬嗉墸處熃?jīng)常會對某次考試中的所有學生的成績進行統(tǒng)計和管理,由于學生數(shù)目經(jīng)常繁多,所以在處理統(tǒng)計學生總成績和平均成績時工作會相對繁瑣,所以針對這種情況,同時我分析了成績管理所需要的功能,
5、在利用C+語言及VC+6.0程序運行平臺之下,設(shè)計一種小型的學生成績管理系統(tǒng)。1.2系統(tǒng)功能1. 錄入2. 修改3. 求總分4. 求平均分5. 查詢6. 排序1.3設(shè)計要求學生成績信息包括:學期,學號,班別,姓名,四門課程成績(語文、數(shù)學、英語和計算機)。主要功能:(1) 能按學期、按班級完成對學生成績的錄入、修改(2) 能按班級統(tǒng)計學生的成績,求學生的總分及平均分,設(shè)計并輸出統(tǒng)計報表(3) 能查詢學生成績,不及格科目及學生名單(4) 能按班級輸出學生的成績單(5) 能按班級,按課程,對學生成績進行排序。要求:使用二進制文件方式存儲數(shù)據(jù),系統(tǒng)以菜單方式工作第二章 概要設(shè)計2.1系統(tǒng)功能模塊(1
6、)創(chuàng)建主菜單(2)實現(xiàn)學生成績信息錄入(3)實現(xiàn)學生成績信息查詢(4)實現(xiàn)學生成績信息修改 (一)修改某個學生的成績 (a)按學期查詢學生的成績 (b)按班級查詢學生的成績 (c)按學號查詢學生的成績 (二)查詢不及格的科目和學生名單(5)實現(xiàn)學生成績統(tǒng)計 (a)按班級統(tǒng)計學生的總分。(b)按班級統(tǒng)計學生的平均分。(6)實現(xiàn)學生成績信息輸出(7)保存學生的成績信息于文件2.2系統(tǒng)功能流程圖第三章 詳細設(shè)計3.1主要數(shù)據(jù)結(jié)構(gòu) typedef struct studentMark int term; int classes; char name10; int number; char sex7;
7、float chinese;float math;float english;float computer; struct studentMark *next; MARK;這是定義一個結(jié)構(gòu)體,主要包括學期,班級,姓名,學號,性別,語文成績,數(shù)學成績,英語成績,計算機成績,以及包括一個結(jié)構(gòu)體指針。另外還用了typedef這個關(guān)鍵字。因此,在程序的后面也可以用MARK來定義結(jié)構(gòu)體變量或結(jié)構(gòu)體指針變量。int term; 定義學期,學期只能是第一學期或者第二學期。 例如int 1;則表示第一學期。 int classes; 定義班級,班級只能是一班或者二班。 例如 int 2;則是表示定義為二班。
8、char name10; 定義姓名,在數(shù)組中存放字符串。 例如 char name=“yang”;則該學生的姓名為yang int number; 定義學號,例如int 1;則該學生學號為1號。 char sex7; 定義姓別,其性別最大長度為7. 例如 char sex=“man”;說明該學生為男生。同樣可以這樣定義女生。 float chinese; 定義語文成績。float math; 定義數(shù)學成績。float english; 定義英語成績。float computer; 定義計算機成績。 struct studentMark *next; 定義一個結(jié)構(gòu)體指針。3.1.1 主函數(shù)int
9、 main(); 主函數(shù),程序的入口。void m(MARK *head); 主菜單的函數(shù)原型,在函數(shù)m(head)中主要有選擇創(chuàng)建學生成績信息,查詢學生成績信息,修改學生成績信息,統(tǒng)計學生成績信息,輸出學生成績信息,存儲學生成績信息于文件,以及退出體統(tǒng)等選項可供用戶選擇。 MARK *creat(void ); 創(chuàng)建函數(shù)的函數(shù)原型,在函數(shù)creat()中用戶可以輸入初始的學生信息:其中包括學生的學期、班級、姓名、學號和性別以及學生的語文、數(shù)學、英語和計算機等相關(guān)信息。3.1.2 查詢函數(shù)void searchMark(MARK *head); 查詢菜單的函數(shù)原型,在函數(shù)searchMark(
10、head)中用戶可以自由選擇是查詢某一個學生的成績還是查詢不及格學生的成績。而這通過調(diào)用函數(shù)searchMarkStusentone(head)和函數(shù)searchMarkFail(head)完成操作。void searchMarkStusentone(MARK *head); 查詢某個學生成績的函數(shù)原型,在函數(shù)searchMarkStusentone(head)中用戶可以按學號或班級或者是按學期來查找某個學生的成績。通過函數(shù)searchnumber(head)和函數(shù) searchclasses(head)以及函數(shù)searchterm(head)完成操作。void searchnumber(MA
11、RK *head) 按學號查找學生的函數(shù)原型,;void searchclasses(MARK *head); 按班級查找學生的函數(shù)原型,void searchterm(MARK *head); 按學期查找學生的函數(shù)原型,void searchMarkFail(MARK *head); 查詢沒有及格的學生的函數(shù)原型,通過這個函數(shù)可以查找學生不及格科目及學生名單。3.1.3 修改函數(shù)MARK *changeMark(MARK *head); 修改學生成績信息的函數(shù)原型,可以修改學生的學期、班級、姓名、學號和性別以及學生的語文、數(shù)學、英語和計算機等相關(guān)信息。3.1.4 統(tǒng)計函數(shù)void conun
12、tMark(MARK *head); 統(tǒng)計學生成績的函數(shù)原型,在函數(shù)conuntMark(head)中用戶可以統(tǒng)計學生的總成績以及平均成績,通過調(diào)用函數(shù)totalMark(head)和函數(shù)aveMark(head)完成操作。3.1.5 輸出函數(shù)void totalMark(MARK *head); 統(tǒng)計學生總成績的函數(shù)原型,void aveMark(MARK *head); 統(tǒng)計學生平均成績的函數(shù)原型,void printClassMark(MARK *head); 輸出學生成績信息的函數(shù)原型,通過此函數(shù)可以輸出學生的學期、班級、姓名、學號和性別以及學生的語文、數(shù)學、英語和計算機等相關(guān)信息到屏
13、幕上。void saveFileMark(MARK *head); 存儲學生成績信息于文件的函數(shù)原型,通過此函數(shù)可以輸出學生的學期、班級、姓名、學號和性別以及學生的語文、數(shù)學、英語和計算機等相關(guān)信息與文件中。第四章設(shè)計 結(jié)果及分析4.1程序設(shè)計結(jié)果4.1.1源程序如下:#include#include#include#include#define MAR (struct studentMark *)malloc(sizeof(struct studentMark)typedef struct studentMark int term; int classes; char name10; int
14、 number; char sex7; float chinese;float math;float english;float computer; struct studentMark *next; MARK;void m(MARK *head); MARK *creat(void );void searchMark(MARK *head);void searchMarkStusentone(MARK *head);void searchnumber(MARK *head);void searchclasses(MARK *head);void searchterm(MARK *head);
15、void searchMarkFail(MARK *head);MARK *changeMark(MARK *head);void conuntMark(MARK *head);void totalMark(MARK *head); void aveMark(MARK *head);void printClassMark(MARK *head);void saveFileMark(MARK *head);int main(void)MARK *head=NULL; printf( *n); printf( # 歡迎進入學生成績信息管理系統(tǒng)#n); printf( *n);printf(n);h
16、ead=creat();m(head);return(0);void m(MARK *head )int choose;while(1) printf(*n); printf( 學生成績信息管理n); printf(*n); printf( 1創(chuàng)建成績信息n); printf( 2查詢成績信息n); printf( 3修改成績信息n); printf( 4統(tǒng)計成績信息n); printf( 5按班級輸出學生信息n); printf( 6保存成績信息于文件n); printf( 7退出系統(tǒng)n); printf(*n);fflush(stdin);printf(請選擇:);scanf(%d,&ch
17、oose);if(1=choose)head=creat();else if(2=choose)searchMark(head);else if(3=choose)head=changeMark(head);else if(4=choose)conuntMark(head);else if(5=choose)printClassMark(head);else if(6=choose)saveFileMark(head);elseprintf(退出系統(tǒng));break;/創(chuàng)建一個學生成績信息系統(tǒng)MARK *creat() MARK *head=NULL,*p1=NULL,*p2=NULL;char
18、 ch;fflush(stdin);printf(請問是否輸入信息?(y 或n)n);scanf(%c,&ch);head=p1=p2=MAR; while(p1!=NULL & ch=y) p1=MAR; printf(請輸入要錄入學生信息的學期(學期只能為 1 或 2 ):); fflush(stdin); scanf(%d,&p1-term); while(p1-term!=1 & p1-term!=2) getchar(); printf(輸入錯誤!請重新輸入:); scanf(%d,&p1-term); printf(請輸入要錄入學生成績信息的班級:); fflush(stdin);
19、 scanf(%d,&p1-classes); while(p1-classes!=1 & p1-classes!=2) getchar(); printf(輸入錯誤!請重新輸入:); scanf(%d,&p1-classes); printf(請輸入該班的學生信息!n); printf(請輸入學生學號:); fflush(stdin); scanf(%d,&p1-number); printf(請輸入學生姓名:); fflush(stdin); scanf(%s,p1-name); printf(請輸入學生姓別:); fflush(stdin); scanf(%s,p1-sex); fflu
20、sh(stdin); printf(請輸入語文成績(0-100):); scanf(%f,&p1-chinese); fflush(stdin); printf(請輸入數(shù)學成績(0-100):); scanf(%f,&p1-math); fflush(stdin); printf(請輸入英語成績(0-100):); scanf(%f,&p1-english); fflush(stdin); printf(請輸入計算機成績(0-100):); scanf(%f,&p1-computer); p2-next=p1; p2=p1; printf(是否還要輸入信息(y/n):); fflush(std
21、in); scanf(%c,&ch);p2-next = NULL; /鏈表結(jié)尾return(head);/查找學生成績信息void searchMark(MARK *head)int choose1;while(1)printf(*n);printf( 查詢學生成績信息n);printf( 1查詢某個學生成績n);printf( 2查詢不及格學生成績n);printf( 3返回主菜單n);printf(*n);fflush(stdin);printf(請選擇:);scanf(%d,&choose1);if(1=choose1)searchMarkStusentone(head);else i
22、f(2=choose1)searchMarkFail(head);elseprintf(返回主菜單);break;/修改學生成績信息(按學期或按學號修改)MARK *changeMark(MARK *head)int choose2;MARK *p=head-next;char name10;char ch;int number; printf(*n);printf( 你所需要修改的n);printf( 1修改學號n);printf( 2修改姓名n);printf( 3修改班級n); printf( 4修改性別n);printf( 5修改成績n);printf(*n);fflush(stdin
23、);printf(請選擇:);scanf(%d,&choose2);while(1)while(p!=NULL)if(1=choose2) printf(你要修改的信息是:學號!n); /按姓名修改學號 fflush(stdin); printf(請輸入你要修改的學生姓名:); scanf(%s,name); if (strcmp(name,p-name)=0) fflush(stdin); printf(請輸入該學生新的學號:); /輸入新學號scanf(%d,&p-number);printf(修改學生的學號后:n);printf(%s學生的新學號是%dn,p-name,p-number)
24、;break; else if(2=choose2) printf(你要修改的信息是:姓名!n); fflush(stdin); printf(請輸入你要修改的學生的學號:); scanf(%d,&number); if(number=p-number) /輸入學號,判斷條件 fflush(stdin); printf(請輸入該學生的姓名:); scanf(%s,p-name); /輸入要做修改的學生姓名 printf(修改學生的姓名后:n); printf(%s是該學生的新姓名n,p-name); break; else if(3=choose2)printf(你要修改的信息是:班級!n);
25、 /按學號修改班級fflush(stdin);printf(請輸入你要修改的學生的學號:);scanf(%d,&number);if(number=p-number) fflush(stdin); printf(請輸入該學生的班級:); /輸入要做修改的班級 scanf(%d,&p-classes); printf(修改班級后n); printf(該學生的新班級為:%dn,p-classes); break; else if(4=choose2)printf(你要修改的信息是:性別!n); /按學號修改性別fflush(stdin);printf(請輸入你要修改的學生的學號:);scanf(%
26、d,&number);if(number=p-number) fflush(stdin); printf(請輸入該學生的性別:); /輸入要做修改的性別 scanf(%s,p-sex); printf(修改該學生的性別后n); printf(該學生的新性別為:%sn,p-sex); break;else if(5=choose2) printf(你要修改的信息是:成績!n); /按學號修改成績fflush(stdin); printf(請輸入你要修改的學生的學號:);scanf(%d,&number);if(number=p-number) /輸入學號 fflush(stdin); print
27、f(請輸入該學生新的語文成績:n); scanf(%f,&p-chinese); fflush(stdin); printf(請輸入該學生新的數(shù)學成績:n); scanf(%f,&p-math); /輸入新的四門成績 fflush(stdin); printf(請輸入該學生新的英語成績:n); scanf(%f,&p-english); fflush(stdin); printf(請輸入該學生新的計算機成績:n); scanf(%f,&p-computer); printf(修改后的成績n); printf(該學生新的語文成績:%fn,p-chinese); printf(該學生新的數(shù)學成績:
28、%fn,p-math); printf(請該學生新的英語成績:%fn,p-english); printf(該學生新的計算機成績:%fn,p-computer); break;elsep=p-next; printf(是否還要繼續(xù)修改信息(y/n):n); /判斷,是否還要修改信息,跳出循環(huán) fflush(stdin); if(ch=getchar()=n)break; return(head);/統(tǒng)計學生成績總分和平均分void conuntMark(MARK *head) MARK *p=head-next;int classes;char ch1,ch2; fflush(stdin);p
29、rintf(請輸入要統(tǒng)計成績的班級(1或2):); scanf(%d,&classes);printf(正在統(tǒng)計該班級學生的總分,請稍侯!n);while(1) totalMark(p); printf(是否還要繼續(xù)統(tǒng)計其他學生的成績(y/n):);fflush(stdin);if(ch1=getchar()=n)break; printf(是否統(tǒng)計該班級學生平均分?(y/n):);fflush(stdin); if(ch2=getchar()!=n)printf(正在統(tǒng)計該班學生平均分進行統(tǒng)計,請稍侯!n);aveMark(p); /調(diào)用平均分函數(shù)printf(n);/按班級輸出學生信息vo
30、id printClassMark(MARK *head) MARK *p;p=head-next;printf(*n);printf(學期t學號t班別t姓名t性別t語文tt數(shù)學tt英語tt計算機ttn);printf(*n);while(p!=NULL) printf(%dt,p-term); printf(%dt,p-number); printf(%dt,p-classes); printf(%st,p-name); printf(%st,p-sex);printf(%ft,p-chinese); printf(%1ft,p-math);printf(%1ft,p-english);pr
31、intf(%1ft,p-computer);p=p-next;printf(n);printf(*n);/保存學生成績信息于文件void saveFileMark(MARK *head)char *fileName;FILE *stu;MARK *p=head-next;if(p=NULL)printf(沒有任何信息,請先存入信息!n);printf(請按任意鍵返回主菜單!n);getchar();else fileName=(char *)malloc(sizeof(char); fflush(stdin); printf(請輸入你要保存的文件名!n); gets(fileName); fi
32、leName=strcat(fileName,.txt); stu=fopen(fileName,wb+); while(p!=NULL) fprintf(stu,%d %d,p-term ,p-classes ); fprintf(stu,%s %d,p-name,p-number); fprintf(stu,%s,p-sex ); fprintf(stu,%f %f %f %f,p-chinese ,p-math ,p-english ,p-computer ); p=p-next ; fclose(stu); printf(已經(jīng)保存文件在%s中!n,fileName); printf(請
33、按任意鍵返回主菜單!n); getchar();/查找某個學生的成績void searchMarkStusentone(MARK *head)char ch1,ch2; MARK *p=head-next; if(p=NULL)printf(沒有任何信息,請先存入信息!n);printf(請按任意鍵返回主菜單!n);getchar();elsewhile(1) printf( 你要選擇何種方式查詢成績!n); printf( n); printf( a、學號: n); printf( b、班級: n); printf( c、學期: n); printf( n); fflush(stdin);
34、scanf(%c,&ch1); switch(ch1) case a:searchnumber(head);break; case b:searchclasses(head);break; case c:searchterm(head);break; printf(n); printf(是否還要繼續(xù)查詢學生的信息(y/n):); fflush(stdin); if(ch2=getchar()=n) break; /查詢不及格學生void searchMarkFail(MARK *head)MARK *p=head-next ;char name10;int number,flag=0;int
35、choose5;dofflush(stdin);printf(請輸入! (1按姓名查詢 2按學號查詢 3 返回)n);scanf(%d,&choose5);switch(choose5)case 1 :fflush(stdin);printf(請輸入要查找的名字n);gets(name);while(p!=NULL)if(!strcmp(name,p-name)printf(姓名 學號n);printf(%s %dn,p-name ,p-number );if(p-chinese name );if(p-math name );if(p-english name );if(p-computer name ); flag+;printf(n); p=p-next;if(flag=0)printf(沒有你要找的信息!n);break;case 2 :fflush(stdin);printf(請輸入你想要查找的學號:n)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度生態(tài)農(nóng)業(yè)科技園承包經(jīng)營合同范本3篇
- 2025年度綠色能源儲藏室建設(shè)與維護合同3篇
- 二零二五版城市綜合體建設(shè)項目建筑垃圾清運及環(huán)保處理合同3篇
- 2025年度體育場館租賃與賽事組織合同3篇
- 二零二五年高性能保溫施工合同補充條款及驗收標準3篇
- 2025年水電暖安裝與節(jié)能改造項目總承包合同3篇
- 2025年度醫(yī)院窗簾定制及消毒防菌合同3篇
- 2025年度智能化倉庫場地租賃服務(wù)合同范本3篇
- 2025年度拍賣物品售后服務(wù)反饋合同范本
- 2025年度智能租賃平臺廠房租賃居間協(xié)議3篇
- 2024-2030年中國電子郵箱行業(yè)市場運營模式及投資前景預(yù)測報告
- 基礎(chǔ)設(shè)施零星維修 投標方案(技術(shù)方案)
- 人力資源 -人效評估指導手冊
- 大疆80分鐘在線測評題
- 2024屆廣東省廣州市高三上學期調(diào)研測試英語試題及答案
- 中煤平朔集團有限公司招聘筆試題庫2024
- 2023年成都市青白江區(qū)村(社區(qū))“兩委”后備人才考試真題
- 不付租金解除合同通知書
- 區(qū)域合作伙伴合作協(xié)議書范本
- 中學數(shù)學教學設(shè)計全套教學課件
- 環(huán)衛(wèi)公司年終工作總結(jié)
評論
0/150
提交評論