c語言課程設計報告(成績管理系統)_第1頁
c語言課程設計報告(成績管理系統)_第2頁
c語言課程設計報告(成績管理系統)_第3頁
c語言課程設計報告(成績管理系統)_第4頁
c語言課程設計報告(成績管理系統)_第5頁
免費預覽已結束,剩余11頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、學號:_C語言課程設計設計說明書學生成績管理系統起止日期:2016年12月12日至2016年12月23日學生姓名班級_成績_指導教師_電子信息工程系1、課程設計題目要求 .32、課程設計應完成的工作 .33、總體設計要求.33.1總體功能要求.33.2主要模塊功能包括.44、程序流程圖.55、源代碼及注釋 .56、代碼運行效果說明 .137、總結.:.15一、課程設計題目要求:學生信息包括學號、姓名、3門考試成績。試設計一學生成績管理系統,使之能提供 以下功能:1、學生成績錄入功能(成績信息用文件保存,也可不用)2、統計:1)輸入學生的學號統計該生的總分及平均分;2)輸入課程求該門課程的平均分

2、。3、排序:按學號4、查找 :輸入一個學生學號,輸出其姓名及平均成績5、修改、刪除學生信息(任選一項)調試環境:VC+6.0二、課程設計應完成的工作:(1)編寫算法(2)算法測試,并有具體的測試結果和結果分析(3)撰寫課程設計報告。內容包括:a.封面扉頁b.設計任務書c.目錄d.設計總體方案(包括流程圖)e.使用說明及運行實例(包括界面)f.源程序代碼注釋三、總體設計總體功能要求:(1)鏈表的建立,每個節點包括:學號、姓名、性別、語文、數學、英語、總分。(2)節點的插入,按學號的順序插入。(3)刪除鏈表中的節點,按學號或者姓名。鏈表的輸出。按學號排序、按總分排序功能模塊圖、流程圖(要求有總體的

3、功能模塊圖、各部分流程圖):使 p 指向第一個鰭點輸出 p 所指向的結點P 指向下一個結點當 P 指向的不是尾表輸出屣表的函數打工 2主要功能模塊包括:1、成績錄入功能2、成績輸出功能3、成績查詢功能4、刪除功能5、排序功能6、統計功能四、程序流程圖:五、源代碼及注釋#include #include #include #define LEN sizeof(Student)#define NULL 0typedef struct studentint num; /*學號*/char name20; /*姓名*/char sex2; /*性另1J */ int score3;/*成績*/int

4、sum; /*總成績*/ struct student *next;Student;int n; /*聲明一個全局變量*/Student *cin(void);Student *sort_1(Student *head,int);/*聲明按學號排序函數*/void sort_2(Student *head);/*聲明按總分排序函數*/ void print(Student *head);/*聲明顯示函數*/ Student*sort_all(Student *head);/*聲明排序函數*/ void find(Student *head);/*聲明查詢函數*/ Student *add_ne

5、w(Student*head);Student *cin() int flag;Student *head,*p1,*p2;n=0;head=(Student *)malloc(LEN);p2=head;printf(n請輸入第dg學生的學號,學號為0表示結束輸入:”,n+1); scanf(%d,&flag);while(getchar()!=n);for(;flag;)/*輸入每個學生的信息*/ n+;p1=(Student *)malloc(LEN);p1-num=flag;printf(請輸入第%d名學生的姓名:,n);/*輸入女4名*/ scanf(%s,p1-name);p

6、rintf(請輸入第%d學生的性別:,n); /*輸入性別*/scanf(%s,p1-sex);printf(請輸入第%d名學生的語文成績:,n);/*輸入語文成績*/scanf(%d,&p1-score0);printf(請輸入第%d名學生的數學成績:,n);/*輸入數學成績*/scanf(%d,&p1-score1);printf(請輸入第%d名學生的英語成績:”,n);/*輸入英語成績*/scanf(%d,&p1-score2);p1-sum=p1-score0+p1-score1+p1-score2;p2-next=p1;p2=p1;printf(n請輸入第%d

7、名學生的學號,沒有此學生則輸入0表示結束:”,n+1);scanf(%d,&flag);p2-next=NULL;printf(nn);return head;Student *sort_all(Student *head) /*定義排序函數*/int choose;for(;)printf(ntt# # # # #學生成績統計排序# # # #n);printf(tt#t1.按學生學號排序t #n);printf(tt#t2.按學生總分排序t #n);printf(tt#t7.單科高分及均分t #n);printf(tt#t8.顯示當前學生成績t #n);printf(tt#t0.返

8、回上一級菜單t #n);printf(請輸入你要執行的操作:);scanf(%d,&choose);while(getchar()!=n);switch(choose)case 1:case 2:case 3:case 4:case 5:case 6:head=sort_1(head,choose);break;case 7:print(head);sort_2(head);break;case 8:print(head);break;case 0:return head;default: printf(nn您的輸入有誤!請重新輸入:nn);break; Student *sort_1

9、(Student *head,int choose) /*定義按學號排序函數*/ Student *p1,*p2=head-next,*pm,*px;Student mid;if (!p2) return head;for(p1=p2;p1-next!=NULL;p1=p1-next)pm=p1;for(p2=p1-next;p2!=NULL;p2=p2-next) switch(choose)case 1:if (pm-nump2-num) pm=p2;break;case 2:if (pm-sumsum) pm=p2;break;case 3:if (pm-score0score0) pm

10、=p2;break;case 4:if (pm-score1score1) pm=p2;break; case 5:if (pm-score2score2) pm=p2;break;if (pm!=p1)mid=*pm;*pm=*p1;*p1=mid;px=pm-next;pm-next=p1-next;p1-next=px;printf(n排序后的成績表為:n);print(head);return head;void sort_2(Student *head) /*定義按總分排序函數*/Student *p=head-next;int max_1,max_2,max_3,min_1,min

11、_2,min_3;int max_sum,min_sum;int sum_1=0,sum_2=0,sum_3=0;float aver_1,aver_2,aver_3,aver_sum;if (!p) return;max_1=min_1=p-score0;max_2=min_2=p-score1;max_3=min_3=p-score2;max_sum=min_sum=p-sum;for(;p;p=p-next)if (max_1score0) max_1=p-score0;else if (min_1p-score0) min_1=p-score0;if (max_2score1) max

12、_2=p-score1;else if (min_2p-score1) min_2=p-score1;if (max_3score2) max_3=p-score2;else if (min_3p-score2) min_3=p-score2;if (max_sumsum) max_sum=p-sum;else if (min_sump-sum) min_sum=p-sum;sum_1+=p-score0;sum_2+=p-score1;sum_3+=p-score2;aver_1=1.0*sum_1/n;aver_2=1.0*sum_2/n;aver_3=1.0*sum_3/n;aver_s

13、um=aver_1+aver_2+aver_3;printf(總共d名學生,具體數據為:n,n);printf(總分最高分為d,最低分位d,平均分為%.2fn, max_sum,min_sum,aver_sum);void find(Student *head)/*定義查詢函數*/Student *p;int choose,fnum;char tem20;if (n=0) printf(n當前系統沒有任何學生數據!n );return;for(;)printf(n請輸入您要查詢學生的方式:nn);printf(1、按學號查詢;2、按姓名查詢;0、我不查詢了。nn);printf(請選擇:);s

14、canf(%d,&choose);while(getchar()!=n);if (choose=1)printf(n請輸入你要查詢的學生的學號,輸入0退出學號查詢:);scanf(%d,&fnum);for(;fnum;)for(p=head-next;p!=NULL&p-num!=fnum;p=p-next);if (!p)printf(nn找不到你要查詢的學號,請重新輸入,輸入0表示結束:);scanf(%d,&fnum);else if (p-num=fnum)printf(n學號為%d學生的數據為:n,p-num);printf(學號t姓名t性別t語文成

15、績數學成績英語成績總分n);/*輸出所有的學生信息*/printf(%dt%st%st %d %d %d %dn,p-num,p-name,p-sex ,p-score0,p-score1,p-score2,p-sum);printf(nn請輸入你還要查詢的學生的學號,輸入0表示不按學號查詢了:);scanf(%d,&fnum);else if (choose=2)printf(n請輸入你要查詢的學生的姓名,輸入0退出姓名查詢:);scanf(%s,tem);for(;strcmp(tem,0);)for(p=head-next;p!=NULL&strcmp(p-name,te

16、m);p=p-next);if (!p) printf(nn找不到你要查詢的姓名,請重新輸入,輸入0表示結 束:”);scanf(%s,tem); else if (!strcmp(p-name,tem)printf(n姓名為$學生的數據為:n,p-name);printf(學號t姓名t性別t語文成績數學成績英語成績 總分n);printf(%dt%st%st %d %d %d %dn,p-num,p-name,p-sex ,p-score0,p-score1,p-score2,p-sum);printf(nn請輸入你還要查詢的學生的姓名,輸入0表示 不按姓名查詢了 :);scanf(%s,t

17、em); else if (choose=0) printf(n你選擇了不查詢!n);break;else printf(n你以其他方式選擇了不查詢!n);break;Student *add_new(Student *head) /*定義插入函數*/Student *p;int flag;printf(nn請輸入你要新加入學生的學號,學號為0表示結束輸入:”);scanf(%d,&flag);while(getchar()!=n);for(;flag;)p=(Student *)malloc(LEN);p-num=flag;printf(請輸入新加入學生的姓名:,n); /*輸入姓名

18、*/ scanf(%s”,p-name);p-num,p-name,p-sex pscore0pscore1pscore2psum=p-score0+p-score1+ p-score2);printf(請輸入新加入學生的性別scanf(%s,p-sex);printf(請輸入新加入學生的語文成績scanf(%d,&p-score0);printf(請輸入新加入學生的數學成績scanf(%d,&p-score1);printf(請輸入新加入學生的英語成績scanf(%d,&p-score2);:);/*輸入性別*/:,n); /*輸入語文成績:,n); /*輸入數學成績

19、:,n); /*輸入英語成績*/*/*/p-sum=p-score0+p-score1+p-score2;p-next=head-next;head-next=p;n+;printf(n請輸入還要加入學生的學號,沒有此學生則輸入scanf(%d,&flag);head=sort_1(head,1);printf(加入后的成績表為:n);print(head);return head;。表示結束:);void print(Student *head)Student *p=head-next;if (!p) printf(nn此系統目前沒有任何學生數據!nnn);return;printf

20、(此系統目前共計學生print*”*n);printf(學號t姓名t性別tfor(;p;p=p-next)printf(%dt%st%st%d名:n,n);學生成績統計一覽*語文成績數學成績英語成績總分n);%d%d%d%dn”,struct student *del(struct student *head,long num) /*定義刪除學生信息函數*/struct student *p1,*p2;if(head=NULL) printf(nlist null! n);return head;p1=head;while(num!=p1-num & p1-next!=NULL)p2=

21、p1;p1=p1-next;if(num=p1-num)if(p1=head)head=p1-next;else p2-next=p1-next;printf(delete:%ldn,num);n=n-1;else printf(%ld not deen found! n,num);return(head);int main()/*主函數即用戶的操作界面*/Student *head;int choose,i,num; /*聲明局部變量*/ head=(Student *)malloc(LEN);head-next=NULL;for(;)printf(ntt* * * * *學生成績管理系統*

22、 * * *n); /*學生成績管理系統*/printf(tt*t1.學生數據鍵盤錄入t *n);/*.學生數據鍵盤錄入*/printf(tt*t2.學生數據統計排序t *n);/*學生數據統計排序*/printf(tt*t3.查詢學生數據tt *n);/*.查詢學生數據*/printf(tt*t4.插入學生數據tt *n);/*插入學生數據*/printf(tt*t5.顯示當前成績表t *n);/*顯示當前成績表*/printf(tt*t6.刪除學生數據tt *n);/*刪除學生數據*/printf(tt*t0.退出成績管理系統t *n);/*退出成績管理系統*/ printf(n請輸入你要

23、執行的操作:);/*請輸入你要執行的操作*/ scanf(%d,&choose);while(getchar()!=n); switch(choose)printf(nn此選項將會建立新的學生數據系統不再存在,你確信要刪除原來的數據并建立新的數據系統么?nn);printf(1、建立新的數據系統;0、放棄建立新的數據系統。nn);printf(請選擇:);scanf(%d,&i);if (i=1) head=cin();print(head);break;else if (i=0) printf(n你選擇了放棄建立case 1:printf(ntttt*注思*”);,原來的數據

24、將新的數據系統!n);break;else printf(n你做出別的選擇,當作放棄建立!n);break;case 2:head=sort_all(head);break; /*調用排序函數*/case 3:find(head);break; /*調用查詢函數*/case 4:head=add_new(head); /*調用插入函數*/case 5:print(head);break; /*調用顯示函數*/case 6:printf(請輸入要刪除的學生學號:);scanf(%d,&num);del(head,num); /*調用刪除函數*/case 0:system(pause);r

25、eturn 0; /*退出系統*/ default: printf(nn您的輸入有誤!請重新輸入:nn);break;六、代碼運行效果說明- -PACPAC課設9 9位四課設成績學生信息管理系筑exHexH*學生成績管理系統* * * *L學生數據鍵盤錄入木*Z學生數據統計排序*3.查詢學生數據*辛文插入學生數據*5.顯示當前成績表*&刪除學生數據+*0.退出成績管理系統*請輸入你要執行的操作:.圖1進入系統| | DD:CC課設DebugDebug課設成績學生信息管理系筑exHexH- - a a x x*4.插入學生數據*5.顯示前屣績表*6.刪除學生數據*0.退出成績管理系統+請

26、輸入你要執行的操作:1此選項將會建立新的學生數據系統,原來的數據將不再存在,你確信要刪除原來的數據 并建立新的數據系統么?k建立新的數據系統;。、放棄建立新的數據系統。請選擇:1請輸入第1名學生的學號,學號為0表示結束輸入;1。0請輸入第1名學生的姓名:小王請輸入第1學生的性別:男請輸入第1名學生的語文成績:州情輸入第1名學生的數學成績:78請輸入第1名學生的英語成績:90請輸入第2名學生的學號,沒有此學生則輸入。表示結束:.搜狗拼音輸入法 全:圖2通過鍵盤輸入學生的信息,9:9:支課設工DebugDebug,課設成績學生信息管理系統由XE*XE*- -乂請輸入第4名學生的數學成績:90請輸入

27、第4名學生的英語成績:78請輸入第5名學生的學號,沒有此學生則輸入0表示結束:0此系統目前共討學生4名:* 學生 成績統i|覽* 來*聿 * 拿*聿 *學號姓名性別語文成績數學成績英語成績總分100小白S9907825798小黑986770235101小亮979067254103小風879078255* * *學生成績管理系統* * * *L學生數據犍盤錄入*2學生數據統計排序*3.香詢學生數據+電4,插入學生數據*5.顯示當前成績表*6.刪除學生數據*0.退出成績管理系統率請輸入你要執行的操作: 搜狗拼音輸入法全:圖3顯示所有學生的信息排序后的成績表為:愀系統目前共計學生4名;忻電 * * * * * * 學 生 成績統ii覽 * * * * * * *,114 Ed字 F姓名性別語文成績數學成績英語成績 !總分ps小黑9867702351.00小白899078257101小亮9790672541.03小風879078255圖4按學號排序請輸入您要查詢學生的方式:1、按學號查詢;2、按姓名杳詢:0、我不查詢了,請選擇:1 1請輸入你要查詢的學生的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論