C語言畢業(yè)課程設(shè)計-學(xué)生綜合測評系統(tǒng).doc_第1頁
C語言畢業(yè)課程設(shè)計-學(xué)生綜合測評系統(tǒng).doc_第2頁
C語言畢業(yè)課程設(shè)計-學(xué)生綜合測評系統(tǒng).doc_第3頁
C語言畢業(yè)課程設(shè)計-學(xué)生綜合測評系統(tǒng).doc_第4頁
C語言畢業(yè)課程設(shè)計-學(xué)生綜合測評系統(tǒng).doc_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余13頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、( 此文檔為 word 格式,下載后您可任意編輯修改!)注意:本文檔可供大家參考,學(xué)習(xí)。請大家借鑒優(yōu)點(diǎn),批評不足。請各位湖工學(xué)弟,學(xué)妹不要署名后直接打印,應(yīng)付老師。一定要弄懂代碼,這對大家的代碼編寫技術(shù)很有好處。雖然現(xiàn)在完全自主編寫有些困難,但是也要有一個迎難而上的心態(tài)。祝大家學(xué)業(yè)有成!課程設(shè)計報告課程名稱C 語言程序設(shè)計課題名稱學(xué)生綜合測評系統(tǒng)專業(yè)班級學(xué)號姓名指導(dǎo)教師任務(wù)書下達(dá)日期年月日任務(wù)完成日期年月日1目 錄一、設(shè)計內(nèi)容與設(shè)計要求3學(xué)生綜合測評系統(tǒng)3一、問題描述:3二、功能描述:3三、算法提示:3四、測試數(shù)據(jù):4二設(shè)計要求:4三進(jìn)度安排4四總體設(shè)計方案51.總體流程圖52. 程序主要函數(shù)

2、51.void inti()初始化函數(shù)52.welcome()函數(shù)53.void InputInfo()錄入學(xué)生信息64.void DeleteInfo()刪除信息75.void paiming1()void paiming2()成績排名76.void ViewAll()瀏覽全部學(xué)生信息77.void clean()清除所有信息88. void PaimingView()查詢排名83.程序其他函數(shù)8A. 信息存盤 (結(jié)構(gòu)體 )8B.讀取信息 (結(jié)構(gòu)體 )8C. 信息存盤 (整型 )8D. 讀取信息 (整型 )8E. 學(xué)號檢索9五程序源代碼10六 .收獲及體會22七 .參考文獻(xiàn)22計算機(jī)與通信學(xué)

3、院課程設(shè)計評分表23課程名稱: C 語言程序設(shè)計23一、設(shè)計內(nèi)容與設(shè)計要求學(xué)生綜合測評系統(tǒng)一、問題描述:每個學(xué)生的信息為:學(xué)號、姓名、性別、家庭住址、聯(lián)系電話、語文、數(shù)學(xué)、外語三門單科成績、考試平均成績、考試名次、同學(xué)互評分、品德成績、任課教師評分、綜合測評總分、綜合測評名次??荚嚻骄煽?、同學(xué)互評分、品德成績、任課教師評分分別占綜合測評總分的 60% , 10% , 10% , 20% 。二、功能描述:A、學(xué)生信息處理(1) 輸入學(xué)生信息、學(xué)號、姓名、性別、家庭住址、聯(lián)系電話,按學(xué)號以小到大的順序存入文件中。提示:學(xué)生信息可先輸入到數(shù)組中,排序后可寫到文件中。(2) 插入(修改)同學(xué)信息:提

4、示:先輸入將插入的同學(xué)信息,然后再打開源文件并建立新文件,把源文件和輸入的信息合并到新文件中(保持按學(xué)號有序)若存在該同學(xué)則將新記錄內(nèi)容替換源內(nèi)容,(3) 刪除同學(xué)信息:提示:輸入將刪除同學(xué)號,讀出該同學(xué)信息,要求對此進(jìn)行確認(rèn),以決定是否刪除將刪除后的信息寫到文件中。(4) 瀏覽學(xué)生信息:提示:打開文件,顯示該文件的學(xué)生信息。B、學(xué)生數(shù)據(jù)處理:(1) 按考試科目錄入學(xué)生成績并且按公式:考試成績(語文 +數(shù)學(xué) +外語) 3 計算考試成績,并計算考試名次,提示:先把學(xué)生信息讀入數(shù)組,然后按提示輸入每科成績,計算考試成績,求出名次,最后把學(xué)生記錄寫入一個文件中。(2) 學(xué)生測評數(shù)據(jù)輸入并計算綜合測評

5、總分及名次。提示:綜合測評總分(考試成績)*0.6+ (同學(xué)互評分)*0.1+ 品德成績 *0.1+ 任課老師評分 *0.2 。(3) 學(xué)生數(shù)據(jù)管理提示:輸入學(xué)號,讀出并顯示該同學(xué)信息,輸入新數(shù)據(jù),將改后信息寫入文件(4) 學(xué)生數(shù)據(jù)查詢:提示:輸入學(xué)號或其他信息,即讀出所有數(shù)據(jù)信息,并顯示出來。C、學(xué)生綜合信息輸出提示:輸出學(xué)生信息到屏幕。三、算法提示:1、數(shù)據(jù)結(jié)構(gòu):結(jié)構(gòu)體類型數(shù)組2、數(shù)據(jù)庫結(jié)構(gòu):下表構(gòu)成該系統(tǒng)的基本數(shù)據(jù)庫。CharCharstructint四、測試數(shù)據(jù):N=10二設(shè)計要求:掌握結(jié)構(gòu)化程序設(shè)計的主體思想,以自頂向下逐步求精的方法編制程序解決一些實(shí)際的問題,為將來編寫軟件積累一些

6、典型的案例處理經(jīng)驗(yàn)。(1)按學(xué)號順序選課題號,并在規(guī)定的時間內(nèi)獨(dú)自完成相關(guān)課題的C 源程序編寫、 調(diào)試和運(yùn)行。 源程序及編譯生成各文件均保存;(2)按本任務(wù)書的要求,編寫課程設(shè)計報告( Word 文檔格式)。并用 A4 的復(fù)印紙打印并裝訂;(3)在 2013 年 1 月 5 日之前,請各班學(xué)習(xí)委員收齊課程設(shè)計報告交老師。附:課程設(shè)計報告內(nèi)容要求如下:封面課程設(shè)計任務(wù)書課程設(shè)計主文檔內(nèi)容如下:1、 課程設(shè)計題目2、 課程設(shè)計目的3、 課程設(shè)計主要任務(wù)4、 設(shè)計環(huán)境5、 總體設(shè)計方案的選定(主控模塊和各子模塊的設(shè)計方法及框圖)6、 源程序清單7、 收獲及體會參考資料四、報告內(nèi)容要求用宋體五號字,主

7、標(biāo)題用黑三號、一級標(biāo)題用黑四號字,二級標(biāo)題用宋體小四號字加粗,要求用 A4 紙張打印出來 。課程設(shè)計說明書裝訂順序:封面、任務(wù)書、正文、附件(A4 大小的圖紙及程序清單)。三進(jìn)度安排第 18 周,具體安排如下:星期時間班級內(nèi)容地點(diǎn)第 17周任務(wù)布置第 18周星期三第一次上機(jī)機(jī)房第 18周星期四第二次上機(jī)機(jī)房第 18周星期五第三次上機(jī)與答辯機(jī)房湖南工程學(xué)院計算機(jī)與通信學(xué)院年月日四總體設(shè)計方案1.總體流程圖2. 程序主要函數(shù)1.void inti()初始化函數(shù)初始化函數(shù)用于從硬盤中加載學(xué)生數(shù)據(jù)和學(xué)生數(shù)目。首先,從硬盤讀取counter.dat 的數(shù)據(jù)。若不存在counter.dat 則說明程序第一

8、次運(yùn)行。創(chuàng)建counter.dat 和 student_data.dat,把 counter 的初始值賦為 1。若存在 counter.dat.則讀取其中數(shù)據(jù), 把數(shù)據(jù)賦給變量counter,這個值為已儲存的學(xué)生信息數(shù)量。這個 counter變量就是計數(shù)器變量。用來計量學(xué)生信息數(shù)量的變化。2.welcome()函數(shù)Welcome函數(shù)用來顯示選項菜單,并將用戶所選的序號返回。主函數(shù)中的變量select接收到 welcome 的返回值。通過開關(guān)語句,選擇需要使用的功能。3.void InputInfo()錄入學(xué)生信息輸入學(xué)生的信息。學(xué)生信息由以下結(jié)構(gòu)體定義。struct student_infoi

9、nt num;學(xué)號char name6;姓名char sex5;性別char adress20;家庭住址char tel10;電話int chinese,math,english,);getchar();printf(回車鍵返回 .);getchar();system(cls);7.void clean()清除所有信息counter計數(shù)變量清零,counter.dat清空, student_info.dat清空。8.void PaimingView()查詢排名根據(jù)輸入的學(xué)號查詢排名3.程序其他函數(shù)A.信息存盤 (結(jié)構(gòu)體 )void SaveStruct(struct student_info

10、*sp,int size,int n,char filename20)FILE *fp;fp=fopen(filename,wb);fwrite(sp,size,n,fp);fclose(fp);B.讀取信息 (結(jié)構(gòu)體 )void LoadStruct(struct student_info *sp,int size,int n,char filename20)略C.信息存盤 (整型 )void SaveInt(int *p,int size,int n,char filename20)FILE *fp;fp=fopen(filename,wb);fwrite(p,size,n,fp);fcl

11、ose(fp);D.讀取信息 (整型 )void LoadInt(int *p,int size,int n,char filename20)略E.學(xué)號檢索int NumExist(struct student_info student,int num)int i;for(i=0;icounter;i+)if(studenti.num=num)return i;return -1;檢索學(xué)號所在的元素下表,若學(xué)號存在,則返回該學(xué)號所在下標(biāo)。若學(xué)號不存在,則返回-1 。程序截圖:五程序源代碼學(xué)生綜合測評系統(tǒng)2013年1月3日#includestdio.();void PaimingView();v

12、oid exit();struct student_info input();void SortInfo(struct student_info student);void ViewInfo(struct student_info *sp);void SaveStruct(struct student_info *sp,int size,int n,char filename20); void LoadStruct(struct student_info *sp,int size,int n,char filename20); void SaveInt(int *p,int size,int

13、n,char filename20);void LoadInt(int *p,int size,int n,char filename20);int NumExist(struct student_info student,int num);定義學(xué)生信息結(jié)構(gòu)體-struct student_infoint num;學(xué)號char name6;姓名char sex5;性別char adress20;家庭住址char tel10;電話int chinese,math,english,()char select;init();while(1)調(diào)用初始化函數(shù)select=welcome();switch

14、(select)case 1: system(cls);InputInfo(); break;case 2: system(cls);view(); break;case 3: system(cls);xiugai(); break;case 4: system(cls);DeleteInfo(); break;case 5: system(cls);paiming1(student);paiming2(student);PM=1;getchar();getchar();system(cls); break;case 6:system(cls); ViewAll();break;選項選項選項選

15、項選項選項1: 輸入學(xué)生信息2: 瀏覽學(xué)生信息3: 修改學(xué)生信息4: 刪除學(xué)生信息5: 學(xué)生信息排名6: 瀏覽全部學(xué)生信息case 7:system(cls); clean();break;case 8:system(cls); PaimingView();break;選項 7: 清除所有信息選項 8: 查詢排名case 0: system(cls);exit(); break;選項 9: 退出-初始化函數(shù) -void init()FILE *fp;fp=fopen(counter.dat,rb);打開計數(shù)變量counter文件if(fp!=NULL)載入counterfclose(fp);L

16、oadInt(&counter,sizeof(counter),1,counter.dat);elsefp=fopen(counter.dat,wb);若沒有 counter文件,則創(chuàng)建一個,counter初始為 0 。fclose(fp);counter=0;if(counter!=0)載入學(xué)生數(shù)據(jù)LoadStruct(student,sizeof(structstudent_info),counter,student_info.dat);- 歡迎函數(shù) -char welcome()char select;while(1)system(cls);printf(tt歡迎使用學(xué)生信息管理系統(tǒng)n)

17、;printf(n);printf(1.錄入學(xué)生信息nn);printf(2.瀏覽學(xué)生信息nn);printf(3.修改學(xué)生信息nn);printf(4.刪除學(xué)生信息nn);printf(5.排名學(xué)生成績nn);printf(6.瀏覽所有學(xué)生信息nn);printf(7.清除所有數(shù)據(jù)nn);printf(8.查詢排名nn);printf(0.退出nn);printf(輸入相應(yīng)的功能序號 :);select=getchar();if(select=1|select=2|select=3|select=4|select=5|select=6|select=7|select=8|select=0)r

18、eturn select;system(cls);continue;-1.錄入學(xué)生信息-void InputInfo()int i,n;printf(需要錄入多少位學(xué)生的信息:);scanf(%d,&n);system(cls);for(i=1;i=n;i+)studentcounter=input();counter+;PM=0;SortInfo(student);SaveStruct(student,sizeof(struct student_info),counter,student_info.dat); SaveInt(&counter,sizeof(counter),1,counte

19、r.dat);-2.游覽學(xué)生信息-void view()int i,num;printf(請輸入需要游覽的學(xué)生信息的學(xué)號:);scanf(%d,&num);getchar();if(i=NumExist(student,num)=-1)printf(不存在該學(xué)號, 按回車鍵返回.);getchar();system(cls);return;ViewInfo(&studenti);printf(n按回車鍵返回 .);getchar();system(cls);return;-3.修改學(xué)生信息-void xiugai()int i,num;char YN,select;printf(請輸入需要修改

20、的學(xué)生信息的學(xué)號:);scanf(%d,&num);getchar();if(i=NumExist(student,num)=-1)printf(不存在該學(xué)號, 按回車鍵返回.);getchar();system(cls);return;ViewInfo(&studenti);printf(是否要修改?(YN):);scanf(%c,&YN);getchar();if(YN !=Y& YN !=y)printf(修改取消 .);getchar();system(cls);return;system(cls);printf(1.學(xué)號n);printf(2.性別n);printf(3.家庭住址n)

21、;printf(4.聯(lián)系電話n);printf(5.語文成績n);printf(6.數(shù)學(xué)成績n);printf(7.外語成績n);printf(8.同學(xué)互評分n);printf(9.品德成績n);printf(0.任課教師教師評分n);scanf(%c,&select);switch(select)case 1:printf(修改學(xué)號 :);scanf(%d,&studenti.num);break;case 2:printf(修改性別 :);scanf(%s,&studenti.sex);break;case 3:printf(修改家庭住址 :);scanf(%s,&studenti.adr

22、ess);break;case 4:printf(修改聯(lián)系電話 :);scanf(%s,&studenti.tel);break;case 5:printf(修改語文成績 :);scanf(%d,&studenti.chinese);break;case 6:printf(修改數(shù)學(xué)成績 :);scanf(%d,&studenti.math);break;case 7:printf(修改外語成績 :);scanf(%d,&studenti.english);break;case 8:printf(修改同學(xué)互評分 :);scanf(%d,&studenti.;ViewInfo(&studenti)

23、;printf(n確認(rèn)刪除 (YN):);scanf(%c,&YN);getchar();if(YN!=Y & YN!=y)printf(刪除取消 .);elsefor(j=i;jcounter-1;j+)studentj=studentj+1;counter-;PM=0;SaveStruct(student,sizeof(structstudent_info),counter,student_info.dat); SaveInt(&counter,sizeof(counter),counter,counter.dat);printf(刪除完成 .);getchar();system(cls)

24、;- 平均分、綜合分排名void paiming1(struct student_info student)struct student_info *pN,*temp;int i,j;for(i=0;icounter;i+)pi=&studenti;for(i=0;icounter-1;i+)for(j=i+1;jave ave)temp=pi;pi=pj;pj=temp;for(i=0;ipaiming1=i+1;printf(平均分排名完成.n);綜合測評分排名void paiming2(struct student_info student)struct student_info *pN

25、,*temp;int i,j;for(i=0;icounter;i+)pi=&studenti;for(i=0;icounter-1;i+)for(j=i+1;jzhongping zhongping)temp=pi;pi=pj;pj=temp;for(i=0;ipaiming2=i+1;printf(綜合測評分排名完成.n);. 瀏覽所有學(xué)生信息-void ViewAll()int i;for(i=0;inum);getchar();if(NumExist(student,sp-num)!=-1)printf(該學(xué)號已存在, 請重新輸入 .);getchar();system(cls);co

26、ntinue;break;printf(錄入姓名 :);gets(sp-name);printf(錄入性別 :);gets(sp-sex);printf(錄入家庭住址:);gets(sp-adress);printf(錄入聯(lián)系電話:);gets(sp-tel);printf(n接下來錄入成績n);printf(語文 :);scanf(%d,&sp-chinese);printf(數(shù)學(xué) :);scanf(%d,&sp-math);printf(英語 :);scanf(%d,&sp-english);sp-ave=(sp-chinese+sp-math+sp-english)3.0;printf(

27、同學(xué)互評 :);scanf(%d,&sp- stu;-排序函數(shù) -void SortInfo(struct student_info student)int i,j;struct student_info temp;for(i=0;icounter-1;i+)for(j=i+1;j=counter-1;j+)if(studenti.numnum,sp-name,sp-sex,sp-adress,sp-tel);printf( 語文 t 數(shù)學(xué) t 英語 t 互評 t 品德 t 教評 n); printf(%dt%dt%dt%dt%dt%dtn,sp-chinese,sp-math,sp-engl

28、ish,sp-);printf(%.2ft%.2fn,sp-ave,sp-zhongping);if(PM=1)printf(平均分排名 t綜合測評分排名n);printf(%dtt%dn,sp-paiming1,sp-paiming2);信息存盤 ( 結(jié)構(gòu)體 ) -void SaveStruct(struct student_info *sp,int size,int n,char filename20)FILE *fp;fp=fopen(filename,wb);fwrite(sp,size,n,fp);fclose(fp);讀取信息 ( 結(jié)構(gòu)體 ) -void LoadStruct(st

29、ruct student_info *sp,int size,int n,char filename20)FILE *fp;fp=fopen(filename,rb);fread(sp,size,n,fp);fclose(fp);- 信息存盤 ( 整型 ) -void SaveInt(int *p,int size,int n,char filename20)FILE *fp;fp=fopen(filename,wb);fwrite(p,size,n,fp);fclose(fp);- 讀取信息 ( 整型 ) -void LoadInt(int *p,int size,int n,char filename20)FILE *fp;fp=fopen(filename,rb);fread(p,size,n,fp);fclose(fp);-檢索學(xué)號 -int NumExist(struct student_info student,int num)int i

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論