版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C高級程序設計設計說明書班級成績管理系統(tǒng)班 級12計科組 別第X組組 長 靜待花開組 員 靜待花開指導教師李伙友、魏龍華計算機科學與技術系2013年 6月摘 要 學生管理系統(tǒng)在日常教學中有著十分重要的作用,它可以幫助老師和學生快速的查找所需的學生信息,該系統(tǒng)具有準確、高效、全面等特點。錄入和輸出是該系統(tǒng)數據資源的基礎;對于學生成績的相關運算在教學中顯得必要;學生成績等等的排名能夠幫助使用系統(tǒng)的人快速獲得所需的信息,對于成績的排名,排序法中的冒泡排序是數據處理中經常使用的一種重要運算。冒泡排序算法的運作如下:1.比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。2.對每一對相鄰元素作同樣的工
2、作,從開始第一對到結尾的最后一對。在這一點,最 后的元素應該會是最大的數。3.針對所有的元素重復以上的步驟,除了最后一個。4.持續(xù)每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較.關鍵詞:冒泡排序 目 錄1 課題綜述······························
3、3;···························4 1.1課題內容·····················&
4、#183;······································4 1.2意義··········
5、··················································
6、······4 1.3預期目標··········································
7、83;···················42 系統(tǒng)分析·····························
8、183;····························5 2.1相關基礎知識···················
9、83;·······································5 2.2 總體方案·········
10、;··················································
11、;····53 系統(tǒng)設計············································
12、3;·············6 3.1 輸入模塊···································
13、···························6 3.2 輸出模塊·····················
14、183;········································7 3.3 平均分模塊·······
15、83;·················································
16、83;····8 3.4 統(tǒng)計、排名模塊···········································
17、183;··················9 3.5 查找模塊·····························
18、3;·······························10 3.6 刪除模塊·················
19、;············································104 代碼編寫及運行····
20、···············································12 4.1 總程序·
21、183;·················································
22、183;············12總 結····································
23、83;······················30致 謝··························
24、3;································31參考文獻················
25、3;·········································31 41 課題綜述 1.1課題內容 每個學生的信息為:姓名、學號、性別、C語言成績、高數成績、近代史成
26、績;平均成績。1學生信息處理(1) 輸入學生信息、姓名、學號、性別,按學號以小到大的順序存入文件中。(2) 插入(修改)同學信息:(3) 刪除同學信息:(4) 瀏覽學生信息:2學生數據處理:(1) 按考試科目錄入學生成績并且按公式:考試成績(業(yè)務成績總和)/(業(yè)務課程門數) 計算考試成績,并計算考試名次。(2) 學生測評數據輸入并計算綜合測評總分及名次。綜合測評總分(考試成績)*0.6+(同學互評分)*0.1+品德成績*0.1+任課老師評分*0.2。(3) 學生數據管理輸入學號,讀出并顯示該同學信息,輸入新數據,將改后信息寫入文件(4) 學生數據查詢:輸入學號或其他信息,即讀出所有數據信息,并
27、顯示出來。3、全體學生信息輸出1.2 意義 通過該課程設計的操作與實踐,能夠根據數據對象的特性,學會數據組織的方法,把現實世界中的實際問題在計算機內部表示出來,并培養(yǎng)基本的、良好的程序設計技能,全面提高學生的程序設計、開發(fā)能力。1.3 預期成果 1、掌握函數的定義方法和調用方法。 2、能夠采用模塊化思想調試程序。 2、系統(tǒng)分析 2.1 相關基礎知識 1、學??己艘粋€學生的主要依據就是學生的綜合成績,綜合素質。這就讓一個學生的綜合成績評定系統(tǒng)的建立顯得尤為重要。 2、一個學生綜合測評系統(tǒng)包括學生的方方面面信息,這有利于學校的管理。 3、大家都知道學生是流動的,而且綜合測評是每年評比一次,所以這學
28、生綜合測評系統(tǒng)的更改錄入功能重要性不明而喻。4、開發(fā)本系統(tǒng)在一定的程度上可以減輕教輔老師的期末工作。 2.2 總體方案 學生數據處理模塊學生信息輸出模塊幫助退出修改學生信息刪除學生信息瀏覽學生信息返回錄入成績修改學生數據學生數據查詢返回輸出學生信息無退出本系統(tǒng)學生信息處理模塊輸入學生信息12計科班級成績管理系統(tǒng)系統(tǒng)設計 3.1 輸入模塊 學生的輸入模塊主要是采用從鍵盤輸入學生的基本信息,利用printf和scanf函數來輸入學生的信息,在輸完一個學生的基本信息后,會返回上級菜單,可以繼續(xù)輸入學生信息或退出?;蛑苯訌囊延形募x取。 3.2輸出模塊(1)、通過學號或姓名查找,輸出單個學生信息。(2
29、)、輸出有效的學生信息。3.3 平均分模塊。求各個學生的成績平均分。3.4排名模塊。按單科排名、學號排名、平均分排名。3.5 查找模塊按照學號或姓名查找。3.6 刪除模塊通過學號或姓名查找學生,選擇刪除或恢復誤刪。(1)、刪除(2)、恢復4 附件:程序代碼#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 80struct Studentlong num; /*學號*/char name20; /*姓名*/char sex10; /*性別*/int C; /*C語言*/int Math
30、; /*高數*/int Chinese; /*語文*/int History; /*近代史*/int Moral; /*德育分*/double aver; /*平均分*/aN;int FN=0; /*判定是否輸出0為假1為真*/int t=0,t2=0,M=0; /*t-所有信息數目,tt-有效信息數目,M-統(tǒng)計輸入到第幾個學生*/void found(); void input(); void read(); void average();void sort();void output1();void seek();void output2(int i);void cut(int i);vo
31、id regain(int i);void alter(int i);void statistics();void save();void end();int main()int z; while(1)printf(" *n"); printf(" *歡迎使用學生成績管理系統(tǒng)*n"); printf(" *nnnn"); printf(" *n"); printf(" *1.創(chuàng)建學生信息 * 2.查找學生信息(修改、刪除。) *n"); printf(" *3.各科平均成績 * 4.按
32、單科成績進行排序 *n"); printf(" *5.輸出所有學生信息 * 6.統(tǒng)計 *n");printf(" *7.保存 * 0.退出系統(tǒng) *n"); printf(" *nn"); printf("請輸入指令:");scanf("%d",&z); switch(z) case 1:found();break; case 2:seek();break; case 3:average();break; case 4:sort();break; case 5:output1()
33、;break; case 6:statistics();break; case 7:save();break; case 0:end();break; default:printf("輸入錯誤,請重新輸入n");break;return 0;void found() /*創(chuàng)建數據*/int z,n=1; /*z-指令,n-判斷是否執(zhí)行循環(huán)*/while(n)printf("*n");printf("1.手動輸入學生信息n");printf("2.從文件讀取學生信息n"); printf("0.返回上一級n
34、");printf("*nn");printf("請輸入指令:");scanf("%d",&z);switch(z) case 1:input();break; case 2:read();break;case 0:n=0;break; default:printf("輸入錯誤,請重新輸入n");break;system("cls");void input() /*手動輸入數據*/int n=1,n2=1,i; /*z-指令,n,n2-判斷是否執(zhí)行循環(huán)*/ while(n)pr
35、intf("請輸入學生信息:n");while(n2)printf("學號:");scanf("%ld",&aM.num);for(i=0;i<t;i+)if(aM.num=ai.num) printf("學號重復請重新輸入n");break; if(i=t) n2=0;printf("姓名:");scanf("%s",&aM.name);printf("性別:");scanf("%s",&aM.sex);
36、printf("C語言成績:");scanf("%d",&aM.C);printf("高數成績:");scanf("%d",&aM.Math);printf("語文成績:");scanf("%d",&aM.Chinese);printf("近代史成績:");scanf("%d",&aM.History);printf("德育分:");scanf("%d",&
37、aM.Moral);aM.aver=(aM.C+aM.Math+aM.Chinese+aM.History+aM.Moral)/5.0;n=0; FM=1;M+;t+;t2+; void read() /*文件導入*/FILE *fp;int i;t=0;M=0;if(fp=fopen("save","rb")=NULL)printf("無法打開此文件n");return;printf("該生信息為:n");printf("n");printf(" 學號 姓名 性別C語言高數語文近代史
38、德育分平均分n");printf(" n"); for(i=0;fread(&ai,sizeof(struct Student),1,fp)!=0;i+,t+,M+)printf("%-10ld%-6s%-4s%-5d%-4d%-4d%-6d%-6d%-6.3fn",ai.num,,ai.sex,ai.C,ai.Math,ai.Chinese,ai.History,ai.Moral,ai.aver); printf("n");Fi=1;fclose(fp);t2=t;system("pause
39、");system("cls");void output1() /*全體學生信息輸出*/int i;printf("該生信息為:n");printf("n");printf(" 學號 姓名 性別C語言高數語文近代史德育分平均分n");printf(" n");for(i=0;i<t;i+) if(Fi=1)printf("%-10ld%-6s%-4s%-5d%-4d%-4d%-6d%-6d%-6.3fn",ai.num,,ai.sex,ai.C,
40、ai.Math,ai.Chinese,ai.History,ai.Moral,ai.aver); printf("n");system("pause");system("cls");void seek() /*查詢*/ int z,s,n=1,n2=1,i,k; /*z-指令,n,n2-判斷是否執(zhí)行循環(huán),k-數組下標*/long m;char b20;while(n2)printf("請輸入查詢方式:n");printf("1.按學號查詢.n");printf("2.按姓名查詢.n&q
41、uot;);printf("0.返回主菜單.n");scanf("%d",&s);if(s=1) printf("請輸入學號:n");scanf("%ld",&m);for(i=0;i<t;i+)if(ai.num=m) k=i;n2=0;break;else if(s=2) printf("請輸入姓名:n");scanf("%s",b);for(i=0;i<t;i+)if(strcmp(,b)=0) k=i;n2=0;break;e
42、lse if(s=0) system("cls"); return;else printf("輸入錯誤,請重新輸入n");if(i=t) printf("查無此人,請重新查詢n");while(n)printf("*n");printf("1.輸出學生信息n");printf("2.修改學生信息n");printf("3.刪除學生信息n");printf("4.恢復誤刪的學生信息n");printf("0.返回主菜單n&quo
43、t;);printf("*nn");printf("請輸入指令:");scanf("%d",&z);switch(z) case 1:output2(k);break; case 2:alter(k);break; case 3:cut(k);break;case 4:regain(k);break;case 0:n=0;break; default:printf("輸入錯誤,請重新輸入n");break;system("cls");void output2(int i) /*單個學生信
44、息輸出*/int k=0; /*k統(tǒng)計不及格科目數*/printf("該生信息為:n");printf("n");printf(" 學號 姓名 性別C語言高數語文近代史德育分平均分n");printf(" n");printf("%-10ld%-6s%-4s%-5d%-4d%-4d%-6d%-6d%-6.3fn",ai.num,,ai.sex,ai.C,ai.Math,ai.Chinese,ai.History,ai.Moral,ai.aver); printf("n&q
45、uot;);if(ai.C<60) k+;if(ai.Math<60) k+;if(ai.Chinese<60) k+;if(ai.History<60) k+;if(ai.Moral<60) k+;printf("該生共有%d門科目不及格.n",k);system("pause");system("cls");void alter(int i) /*修改學生信息*/printf("請重新輸入學生信息:n");printf("學號:");scanf("%l
46、d",&ai.num);printf("姓名:");scanf("%s",&);printf("性別:");scanf("%s",&ai.sex);printf("C語言成績:");scanf("%d",&ai.C);printf("高數成績:");scanf("%d",&ai.Math);printf("語文成績:");scanf("%d&q
47、uot;,&ai.Chinese);printf("近代史成績:");scanf("%d",&ai.History);printf("德育分:");scanf("%d",&ai.Moral);ai.aver=(ai.C+ai.Math+ai.Chinese+ai.History+ai.Moral)/5.0;printf("修改完成n");system("pause");system("cls"); void cut(int i) /
48、*刪除學生信息*/char s;printf("是否刪除y/n?n");getchar();scanf("%c",&s);if(s='Y' | s='y')Fi=0;t2-; printf("已刪除");system("pause");else if(s='N' | s='n') return; else printf("輸入錯誤,請重新輸入nn");system("pause");return; sys
49、tem("cls");void regain(int i)Fi=1;t2+;printf("信息已恢復");system("pause");system("cls"); void average() /*班級單科平均分*/int n=1,i; /*n-判斷是否執(zhí)行循環(huán)*/char z20; /*z-查詢科目指令*/long sum=0; /*sum-單科總分*/double aver=0.0; /*aver-單科平均分*/while(n)printf("請輸入需要求班級平均分的科目:(C / Math /
50、 Chinese / History / Moral)n");printf("-");scanf("%s",&z);if(strcmp(z,"C")=0) for(i=0;i<t;i+)if(Fi=1)sum=sum+ai.C;aver=sum*1.0/t2;n=0;else if(strcmp(z,"Math")=0)for(i=0;i<t;i+)if(Fi=1) sum=sum+ai.Math;aver=sum*1.0/t2;n=0;else if(strcmp(z,"C
51、hinese")=0)for(i=0;i<t;i+)if(Fi=1)sum=sum+ai.Chinese;aver=sum*1.0/t2;n=0;else if(strcmp(z,"History")=0)for(i=0;i<t;i+)if(Fi=1)sum=sum+ai.History;aver=sum*1.0/t2;n=0;else if(strcmp(z,"Moral")=0)for(i=0;i<t;i+)if(Fi=1)sum=sum*1.0+ai.Moral;aver=sum*1.0/t2;n=0;else prin
52、tf("輸入錯誤,請重新輸入n");printf("%s科目班級平均分為:%7.2fn",z,aver);system("pause");system("cls"); void sort() /*排序*/ int n=1,i,j,k2; /*k2-交換有效數據判定的中間變量*/char z20;struct Student k;while(n) printf("請輸入排序方式(/學號 /平均分 /C /Math /Chinese /History /Moral /0(返回主菜單)n"); pri
53、ntf("-:");scanf("%s",&z);if(strcmp(z,"學號")=0)for(i=0;i<t;i+)for(j=i+1;j<t;j+)if(ai.num>aj.num)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,"C")=0) for(i=0;i<t;i+)for(j=i+1;j<t;j+)if(ai.C<aj.C)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=
54、0;else if(strcmp(z,"Math")=0)for(i=0;i<t;i+)for(j=i+1;j<t;j+)if(ai.Math<aj.Math)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,"Chinese")=0)for(i=0;i<t;i+)for(j=i+1;j<t;j+)if(ai.Chinese<aj.Chinese)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,&q
55、uot;History")=0)for(i=0;i<t;i+)for(j=i+1;j<t;j+)if(ai.History<aj.History)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,"Moral")=0)for(i=0;i<t;i+)for(j=i+1;j<t;j+)if(ai.Moral<aj.Moral)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,"平均分")=0)f
56、or(i=0;i<t;i+)for(j=i+1;j<t;j+)if(ai.aver<aj.aver)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,"0")=0) return;else printf("輸入錯誤,請重新輸入n"); printf("該生信息為:n");printf("n");printf(" 學號 姓名 性別C語言高數語文近代史德育分平均分n");printf(" n");for
57、(i=0;i<t;i+) if(Fi=1) printf("%-10ld%-6s%-4s%-5d%-4d%-4d%-6d%-6d%-6.3fn",ai.num,,ai.sex,ai.C,ai.Math,ai.Chinese,ai.History,ai.Moral,ai.aver); printf("n");system("pause");system("cls"); void statistics() char z20;int FFN=0; /*FFN-判定分數是否在所尋范圍,1為真,0為假*/
58、int n=1,score1,score2,i,k=0; /*k-統(tǒng)計某分數段學生數,score1,score2-統(tǒng)計分數的上、下限*/while(n)printf("請輸入需要統(tǒng)計的科目:/C /Math /Chinese /History /Moral /0(返回主菜單)n");scanf("%s",z);if(strcmp(z,"0")!=0)printf("請輸入需要統(tǒng)計的分數上、下限(逗號分隔)n");scanf("%d,%d",&score1,&score2);if(
59、strcmp(z,"C")=0) for(i=0;i<t;i+)if(Fi=1)if(ai.C>=score1 && ai.C<=score2)k+;FFi=1;n=0;else if(strcmp(z,"Math")=0)for(i=0;i<t;i+)if(Fi=1)if(ai.Math>=score1 && ai.Math<=score2)k+;FFi=1;n=0;else if(strcmp(z,"Chinese")=0)for(i=0;i<t;i+)if
60、(Fi=1)if(ai.Chinese>=score1 && ai.Chinese<=score2)k+;FFi=1;n=0;else if(strcmp(z,"History")=0)for(i=0;i<t;i+)if(Fi=1)if(ai.History>=score1 && ai.History<=score2)k+;FFi=1;n=0;else if(strcmp(z,"Moral")=0)for(i=0;i<t;i+) if(Fi=1)if(ai.Moral>=score1 && ai.Moral<=score2)k+;FFi=1;n=0;else if(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年公共場所空氣質量監(jiān)測與衛(wèi)生保潔服務合同3篇
- 出租毛坯水電合同范例
- 2024年弧型電熱旋轉保溫柜項目可行性研究報告
- 2024年導纜齒輪項目可行性研究報告
- 2024年臥式酸貯存罐項目可行性研究報告
- 馬蜂養(yǎng)殖轉讓合同范例
- 食堂承包管理合同范例
- 2024年保齡球道油項目可行性研究報告
- 一年級數學(上)計算題專項練習匯編
- 轉長期合同范例
- 線上房展會活動方案
- PCB制造成本參數
- 操作系統(tǒng)智慧樹知到期末考試答案2024年
- 《跨境供應鏈管理》教學大綱(含課程思政)
- 高三英語二輪復習寫作專項讀后續(xù)寫人物情緒描寫方法課件
- 殯儀館物業(yè)服務方案
- 電廠缺陷分析報告
- 化工裝備的選型與設計
- 外賣小哥培訓道路安全管理
- 上市公司投資報告分析報告
- 中醫(yī)診療設備種類目錄
評論
0/150
提交評論