




已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
c 語言課程設(shè)計(jì)學(xué)生成績管理系統(tǒng) 學(xué)院:機(jī)械與電子工程 專業(yè):電子信息工程 班級:xxxxx 學(xué)號:xxxxx 姓名:xxx 指導(dǎo)老師:xxx 2011.6.1 說 明1.設(shè)計(jì)目的 (1)復(fù)習(xí)鞏固c語言的基礎(chǔ)知識,進(jìn)一步加深對c語言編程的理解和掌握; (2)利用所學(xué)知識,理論和實(shí)際結(jié)合,利用資源,采用模塊化的結(jié)構(gòu),使用模仿修改自主設(shè)計(jì)相結(jié)合的方法,鍛煉學(xué)生綜合分析解決實(shí)際問題的編程能力; (3)培養(yǎng)學(xué)生在項(xiàng)目開發(fā)中團(tuán)隊(duì)合作精神、創(chuàng)新意識及實(shí)戰(zhàn)能力。2.設(shè)計(jì)任務(wù) 假設(shè)某門課程一學(xué)期要考試兩次,其中考試占30%,平時(shí)作業(yè)占20%,期末考試占50%(滿分100分)該課程應(yīng)該具有下列功能:(1) 通過鍵盤輸入學(xué)生考試、平時(shí)作業(yè)的分?jǐn)?shù);(2) 給定序號,顯示某學(xué)生總評成績;(3) 給定某班的班號,顯示該班的所有總評成績信息;(4) 給定某班學(xué)生的學(xué)號,修改該學(xué)生的信息。3. 設(shè)計(jì)要求與設(shè)計(jì)報(bào)要求: (1)為各項(xiàng)操作功能設(shè)計(jì)一個菜單。應(yīng)用程序運(yùn)行后,顯示這個菜單,然后用戶通過菜單單項(xiàng)選擇希望進(jìn)行的操作項(xiàng)目; (2)學(xué)生信息按學(xué)號或姓名查詢或刪除,排序功能按學(xué)號或姓名排列。 (3)要求以上功能分別用函數(shù)實(shí)現(xiàn)。并要求用c語言的文件操作語句將以上結(jié)果保存在xxx。out。 (4)要求用戶輸入數(shù)據(jù)時(shí),要給出清晰、明確的提示信息,包括輸入的數(shù)據(jù)內(nèi)容、格式及結(jié)束方式等。4. 小組成員xxx、xxx、xxx、xxx、xxx5. 課程設(shè)計(jì)時(shí)間2011年5月23號 2011年5月30號(第十五周) 2011.6.2 于東華理工大學(xué)目 錄1、 設(shè)計(jì)緒論52、 總體設(shè)計(jì)53、 詳細(xì)設(shè)計(jì)64、 調(diào)試與測試65、 源代碼與注釋76、 運(yùn)行結(jié)果截圖197、 總結(jié)與體會208、 參考文獻(xiàn)20 一、設(shè)計(jì)緒論1設(shè)計(jì)名稱:學(xué)生成績管理系統(tǒng)2設(shè)計(jì)目的:靈活使用c語言進(jìn)行程序編寫,鞏固有關(guān)語句,指針,結(jié)構(gòu)體,鏈表,文件操作等概念和方法。提高調(diào)試程序的技能,提高軟件編寫的能力。3設(shè)計(jì)環(huán)境:軟件:wintc 硬件:pc機(jī)4設(shè)計(jì)說明: 1)程序運(yùn)行情況:程序的大致情形是:程序由一個主函 控制,當(dāng)程序運(yùn)行時(shí),主函數(shù)將文件打開,將數(shù)據(jù)導(dǎo)入內(nèi)存,并關(guān)閉文件,接著由用戶選擇相應(yīng)操作。 主函數(shù)中可調(diào)用添加,刪除,查找,修改等函數(shù)來執(zhí)行相應(yīng)的操作。 2)程序功能:本程序根據(jù)一般成績管理系統(tǒng)應(yīng)具備的功能進(jìn)行設(shè)計(jì),具有的功能有: 添加數(shù)據(jù) 刪除數(shù)據(jù) 查找數(shù)據(jù) 修改數(shù)據(jù) 顯示全部數(shù)據(jù) 保存數(shù)據(jù) 對數(shù)據(jù)進(jìn)行排序 對數(shù)據(jù)進(jìn)行統(tǒng)計(jì)另外,因時(shí)間關(guān)系,沒能設(shè)計(jì)出幫助功能,這是本程序有待擴(kuò)充、改進(jìn)的地方之一。3)測試計(jì)劃:程序中需輸入的學(xué)號最多10位數(shù),輸入完成按回車鍵。輸入姓名拼音時(shí)應(yīng)使拼音連在一起輸入,中間不要留空。輸入姓別時(shí)的內(nèi)容最多4個字符,否則輸出時(shí)會出現(xiàn)誤差。成績的輸入均為整形。 4)增加的功能:通過參考資料和請教他人我們增加了統(tǒng)計(jì)學(xué)生信息、自動保存、自動清屏及人性化的提示等功能。 5)尚未解決的問題:由于掌握的知識有限,未能實(shí)現(xiàn)輸入班號該班學(xué)生所有學(xué)生信息總評成績、未能設(shè)計(jì)出設(shè)想增加幫助菜單函數(shù)供使用者使用的功能,程序中的輸入學(xué)生成 績沒有使用輸入小數(shù)。2、 總體設(shè)計(jì)流程圖如下:3、 詳細(xì)設(shè)計(jì)1. 輸入學(xué)生成績信息:其中包括學(xué)生的學(xué)號、性別、姓名、期中考試成績、平時(shí)作業(yè)成績及期末考試成績,可定義通過結(jié)構(gòu)體struct student將學(xué)生信息一組一組的輸入,可用函數(shù)add(l)實(shí)現(xiàn)。2. 刪除學(xué)生成績信息:可用del(l)函數(shù)實(shí)現(xiàn),通過if語句選擇按學(xué)號刪除或姓名刪除。3. 查找某個學(xué)生成績信息:通過函數(shù)qur(link l)實(shí)現(xiàn)。4. 修改學(xué)生信息:通過函數(shù)modify(link l)實(shí)現(xiàn)。5. 排序?qū)W生成績:通過函數(shù)sort(link l)實(shí)現(xiàn)。6. 保存學(xué)生信息:通過函數(shù)save(link l)實(shí)現(xiàn)。7. 顯示(統(tǒng)計(jì))所有學(xué)生成績信息:通過函數(shù)tongji(link l)實(shí)現(xiàn)。8. 幫助(新增):未實(shí)現(xiàn)。9. 退出系統(tǒng):可用函數(shù)exit()來實(shí)現(xiàn),首先將信息保存到文件中,釋放創(chuàng)建的內(nèi)存空間,再退出系統(tǒng)。4、 測試與測試 5、 源代碼和本人負(fù)責(zé)部分注釋#include#include#include#include#define longest 30#define numlong 11#define sexlong 5int shoudsave=0;struct student char numnumlong; char name25; char sexsexlong; int test; /*期末考試成績*/ int middle; /*期中考試成績*/ int dayly; /*平時(shí)作業(yè)成績*/ int total; /*總評成績*/ int average; /*平均成績*/ char neartime10;typedef struct node struct student data; struct node *next;node,*link;void menu() printf(tttstudent score systemnttttteast china institute of technologynttttt electronic information managementntttttt num:1020610212 hebobontttttt email:1183023611n); printf(*n); printf(*t1add records 2delete records ttt *n); printf(*t3find out 4modify records ttt *n); printf(*t5sort records 6save records tttt *n); printf(*t7display records 8tongji tttt *n); printf(*t9help 0exit system tttt *n); printf(*n);void printstart() printf(-n);void wrong() printf(=input error!n);void continue() printf(=please press any key to continue.n); getch();void nofind() printf(n=not find records !n);void printc() printf( number name sex dayly middle test total avern);void printe(node *p) printf(%-10s %-25s%-5s%5d %5d %5d %5d %5dn,p-data.num,,p-data.sex,p-data.dayly,p-data.middle,p-data.test,p-data.total,p-data.average);node* locate(link l,char findmess,char nameornum) node *r; if(strcmp(nameornum,num)=0) r=l-next; while(r!=null) if(strcmp(r-data.num,findmess)=0) return r; r=r-next; else if(strcmp(nameornum,name)=0) r=l-next; while(r!=null) if(strcmp(,findmess)=0) return r; r=r-next; return 0;void add(link l) /*定義輸入(添加)學(xué)生記錄的函數(shù)*/ node *p,*r,*s;/*定義指針變量*/ char numnumlong; /*提示用戶是否輸入或添加*/ r=l; s=l-next; while(r-next!=null) /*提示用戶是否輸入或添加,選擇判斷確認(rèn)添加*/ r=r-next; while(1) printf(please input 10 number(input 0 to exit.):);/*輸出提示添加學(xué)號*/ scanf(%s,num); /*接收學(xué)號信息*/ if(strcmp(num,0)=0)/*判斷學(xué)號是否輸入正確*/ continue(); break; while(s)/*判斷輸入學(xué)號是否存在*/ if(strcmp(s-data.num,num)=0)/*判斷輸入學(xué)號存在*/ printf(=the number %s is in the file.(input 4 to modify !)n,num);/*提示輸入學(xué)號存在*/ printstart(); printc(); printe(s); printstart(); continue(); return; s=s-next;/*判斷確定添加學(xué)生信息*/ p=(node *)malloc(sizeof(node); strcpy(p-data.num,num);/*接收輸入的學(xué)號*/ printf(please input name:);/*打印提示輸入學(xué)生姓名*/ scanf(%s,);/*接收輸入的學(xué)生姓名*/ printf(please input sex(boy/girl):);/*打印提示輸入學(xué)生性別*/ scanf(%s,p-data.sex);/*接收輸入的學(xué)生姓名*/ printf(please input test score:);/*打印提示輸入學(xué)生期末成績*/ scanf(%d,&p-data.test);/*接收輸入的學(xué)生期末成績*/ printf(please input middle score!:);/*打印提示輸入學(xué)生期中成績*/ scanf(%d,&p-data.middle);/*接收輸入的學(xué)生期中成績*/ printf(please input dayly score!:);/*打印提示輸入學(xué)生平時(shí)作業(yè)成績*/ scanf(%d,&p-data.dayly);/*接收輸入的學(xué)生平時(shí)作業(yè)成績*/ p-data.total=(p-data.dayly)/5+(p-data.test)/2+(p-data.middle)*3/10;/*計(jì)算總評成績*/ p-data.average=p-data.total/3;/*計(jì)算平均成績*/ p-next=null; r-next=p; r=p; shoudsave=1;/*保存輸入的學(xué)生信息*/void qur(link l)/*定義查找函數(shù)*/ int sel; char findmesslongest; node *p; if(!l-next)/*判斷沒有查到*/ printf(n=cannot find anything !n);/*打印提示沒有查到*/ continue(); return; printf(= 1 number.n= 2 name.n);/*打印按學(xué)號或姓名查找*/ scanf(%d,&sel);/*接收輸入的選項(xiàng)*/ if(sel=1)/*判斷選項(xiàng)是“1”*/ printf(input the number:);/*打印提示輸入學(xué)號*/ scanf(%s,findmess);/*接收輸入的學(xué)號*/ p=locate(l,findmess,num);/*查找要查找的內(nèi)容的位置*/ if(p)/*判斷輸入的學(xué)號對應(yīng)的信息是否存在*/ printf(ttttresultn);/*打印查找的結(jié)果*/ printstart(); printc(); printe(p); printstart(); continue(); else/*判斷輸入的學(xué)號對應(yīng)的信息不存在*/ nofind(); continue(); else if(sel=2)/*判斷選項(xiàng)是“1”*/ printf(input the name:);/*打印提示輸入姓名*/ scanf(%s,findmess);/*接收輸入的姓名*/ p=locate(l,findmess,name);/*查找要查找的內(nèi)容的位置*/ if(p)/*判斷輸入的姓名對應(yīng)的信息是否存在*/ printf(ttttresultn);/*打印查找的結(jié)果*/ printstart(); printc(); printe(p); printstart(); continue(); else/*判斷輸入的學(xué)號對應(yīng)的信息不存在*/ nofind(); continue(); else wrong(); continue(); void del(link l)/*定義刪除函數(shù)*/ int sel; node *p,*r; char findmesslongest; if(!l-next)/*判斷要刪除的內(nèi)容不存在*/ printf(n=nothing can delete !n);/*提示要刪除的內(nèi)容不存在*/ continue(); return; printf(=1 numbern=2 namen);/*打印選擇查找刪除信息的方式*/ scanf(%d,&sel);/*接收選擇查找刪除信息的方式*/ if(sel=1)/*判斷按學(xué)號刪除*/ printf(please input the number:);/*打印提示輸入學(xué)號*/ scanf(%s,findmess);/*接收輸入的學(xué)號*/ p=locate(l,findmess,num);/*查找要刪除信息的位置*/ if(p)/*判斷要刪除內(nèi)容的存在*/ r=l; while(r-next!=p)/*確認(rèn)刪除/ r=r-next; r-next=p-next; free(p); printf(=delete success!n);/*打印提示刪除成功*/ continue(); shoudsave=1;/*保存數(shù)據(jù)*/ else/*判斷沒找到要刪除內(nèi)容*/ nofind(); continue(); else if(sel=2)/*判斷按姓名刪除*/ printf(please input the name:);/*打印提示輸入姓名*/ scanf(%s,findmess);/*接收輸入的姓名*/ p=locate(l,findmess,name);/*查找要刪除信息的位置*/ if(p)/*判斷要刪除內(nèi)容的存在*/ r=l; while(r-next!=p)/*確認(rèn)刪除/ r=r-next; r-next=p-next; free(p); printf(=delete success!n);/*打印提示刪除成功*/ continue(); shoudsave=1;/*保存數(shù)據(jù)*/ else/*判斷沒找到要刪除內(nèi)容*/ nofind(); continue(); else/*判斷輸入錯誤*/ wrong(); continue(); void modify(link l) node *p; char findmesslongest; if(!l-next) printf(n=nothing can modify!n); continue(); return; printf(input the number:); scanf(%s,findmess); p=locate(l,findmess,num); if(p) printf(new number(the old is %s):,p-data.num); scanf(%s,p-data.num); printf(new name(the old is %s):,); scanf(%s,); printf(new sex(the old is %s):,p-data.sex); scanf(%s,p-data.sex); printf(new test score(the old is %d):,p-data.test); scanf(%d,&p-data.test); printf(new middle score(the old is %d):,p-data.middle); scanf(%d,&p-data.middle); printf(new dayly score(the old is %d):,p-data.dayly); scanf(%d,&p-data.dayly); p-data.total=p-data.dayly+p-data.test+p-data.middle; p-data.average=p-data.total/3; printf(n=modify success !n); continue(); shoudsave=1; else nofind(); continue(); void display(link l) int page=0; node *p; p=l-next; if(!p) printf(n=nothing !n); continue(); return; while(p) if(page%20=0) printf(ngo to next page?); getch(); system(cls); printf(tttresultn); printstart(); printc(); printe(p); p=p-next; page+; printstart(); continue();void tongji(link l) node *pm,*pe,*pc,*pt,*pa; node *r=l-next; if(!r) printf(n=nothing to tongji!n); continue(); return ; pm=pe=pc=pt=pa=r; while(r!=null) if(r-data.test=pc-data.test) pc=r; if(r-data.middle=pm-data.middle) pm=r; if(r-data.dayly=pe-data.dayly) pe=r; if(r-data.total=pt-data.total) pt=r; if(r-data.average=pa-data.average) pa=r; r=r-next; printf(- result -n); printf(highest total:t%s %dn,,pt-data.total); printf(highest average:t%s %dn,,pa-data.average); printf(highest dayly:t%s %dn,,pe-data.dayly); printf(highest middle:t%s %dn,,pm-data.middle); printf(highest test:t%s %dn,,pc-data.test); printstart(); continue();void sort(link l) link ll; node *p,*rr,*s; ll=(link)malloc(sizeof(node); ll-next=null; if(l-next=null) printf(n=nothing can sort!n); continue(); return ; p=l-next; while(p) s=(node*)malloc(sizeof(node); s-data=p-data; s-next=null; rr=ll; while(rr-next!=null&rr-next-data.total=p-data.total) rr=rr-next; if(rr-next=null) rr-next=s; else s-next=rr-next; rr-next=s; p=p-next; free(l); l-next=ll-next; printf(=sort success!n); continue();void save(link l) file* fp; node *p; int flag=1,count=0; fp=fopen(c.txt,wb); if(fp=null) printf(n=open file error!n); continue(); exit(1); p=l-next; while(p) if(fwrite(p,sizeof(node),1,fp)=1) p=p-next; count+; else flag=0; break; if(flag) printf(=congratulate,%d records have been saved !n,count); getch(); shoudsave=0; fclose(fp);void main() link l; file *fp; int sel; char ch; char jian; int count=0; node *p,*r; system(cls); l=(node*)malloc(sizeof(node); l-next=null; r=l; fp=fopen(c.txt,rb); if(fp=null) printf(n=no file,open a new one?(y/n)n); scanf(%c,&jian); if(jian=y|jian=y) fp=fopen(c.txt,wb); else exit(0); while(!feof(fp) p=(node*)malloc(sizeof(node); if(fread(p,sizeof(node),1,fp) p-next=null; r-next=p; r=p; count+; fclose(fp); while(1) system(cls); menu(); printf(plea
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 一建培訓(xùn)合同范本
- 年度供貨合同范本
- 供銷總社采購合同范例
- 勞動工人合同范本
- 公司合作簽合同范本
- 中央新風(fēng)合同范本
- 加盟飯店合同范本
- 中介房租合同范本
- app項(xiàng)目轉(zhuǎn)讓合同范本
- 交通肇事代理協(xié)議合同范本
- 社會階層與教育選擇行為分析-深度研究
- 社會工作行政(第三版)課件匯 時(shí)立榮 第6-11章 項(xiàng)目管理- 社會工作行政的挑戰(zhàn)、變革與數(shù)字化發(fā)展
- 學(xué)校小賣部承包合同范文
- 2025年湘潭醫(yī)衛(wèi)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年湖南鐵道職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- DB 63- T993-2011 三江源生態(tài)監(jiān)測技術(shù)規(guī)范
- 北京市東城區(qū)2025年公開招考539名社區(qū)工作者高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025福建福州地鐵集團(tuán)限公司運(yùn)營分公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025至2030年中國電子護(hù)眼臺燈數(shù)據(jù)監(jiān)測研究報(bào)告
- 兒童睡眠障礙治療
- 2025年浙江省溫州樂清市融媒體中心招聘4人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
評論
0/150
提交評論