C語言課程設計-學生成績管理系統(tǒng)3.doc_第1頁
C語言課程設計-學生成績管理系統(tǒng)3.doc_第2頁
C語言課程設計-學生成績管理系統(tǒng)3.doc_第3頁
C語言課程設計-學生成績管理系統(tǒng)3.doc_第4頁
C語言課程設計-學生成績管理系統(tǒng)3.doc_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

c 語言課程設計學生成績管理系統(tǒng) 學院:機械與電子工程 專業(yè):電子信息工程 班級:xxxxx 學號:xxxxx 姓名:xxx 指導老師:xxx 2011.6.1 說 明1.設計目的 (1)復習鞏固c語言的基礎知識,進一步加深對c語言編程的理解和掌握; (2)利用所學知識,理論和實際結合,利用資源,采用模塊化的結構,使用模仿修改自主設計相結合的方法,鍛煉學生綜合分析解決實際問題的編程能力; (3)培養(yǎng)學生在項目開發(fā)中團隊合作精神、創(chuàng)新意識及實戰(zhàn)能力。2.設計任務 假設某門課程一學期要考試兩次,其中考試占30%,平時作業(yè)占20%,期末考試占50%(滿分100分)該課程應該具有下列功能:(1) 通過鍵盤輸入學生考試、平時作業(yè)的分數;(2) 給定序號,顯示某學生總評成績;(3) 給定某班的班號,顯示該班的所有總評成績信息;(4) 給定某班學生的學號,修改該學生的信息。3. 設計要求與設計報要求: (1)為各項操作功能設計一個菜單。應用程序運行后,顯示這個菜單,然后用戶通過菜單單項選擇希望進行的操作項目; (2)學生信息按學號或姓名查詢或刪除,排序功能按學號或姓名排列。 (3)要求以上功能分別用函數實現。并要求用c語言的文件操作語句將以上結果保存在xxx。out。 (4)要求用戶輸入數據時,要給出清晰、明確的提示信息,包括輸入的數據內容、格式及結束方式等。4. 小組成員xxx、xxx、xxx、xxx、xxx5. 課程設計時間2011年5月23號 2011年5月30號(第十五周) 2011.6.2 于東華理工大學目 錄1、 設計緒論52、 總體設計53、 詳細設計64、 調試與測試65、 源代碼與注釋76、 運行結果截圖197、 總結與體會208、 參考文獻20 一、設計緒論1設計名稱:學生成績管理系統(tǒng)2設計目的:靈活使用c語言進行程序編寫,鞏固有關語句,指針,結構體,鏈表,文件操作等概念和方法。提高調試程序的技能,提高軟件編寫的能力。3設計環(huán)境:軟件:wintc 硬件:pc機4設計說明: 1)程序運行情況:程序的大致情形是:程序由一個主函 控制,當程序運行時,主函數將文件打開,將數據導入內存,并關閉文件,接著由用戶選擇相應操作。 主函數中可調用添加,刪除,查找,修改等函數來執(zhí)行相應的操作。 2)程序功能:本程序根據一般成績管理系統(tǒng)應具備的功能進行設計,具有的功能有: 添加數據 刪除數據 查找數據 修改數據 顯示全部數據 保存數據 對數據進行排序 對數據進行統(tǒng)計另外,因時間關系,沒能設計出幫助功能,這是本程序有待擴充、改進的地方之一。3)測試計劃:程序中需輸入的學號最多10位數,輸入完成按回車鍵。輸入姓名拼音時應使拼音連在一起輸入,中間不要留空。輸入姓別時的內容最多4個字符,否則輸出時會出現誤差。成績的輸入均為整形。 4)增加的功能:通過參考資料和請教他人我們增加了統(tǒng)計學生信息、自動保存、自動清屏及人性化的提示等功能。 5)尚未解決的問題:由于掌握的知識有限,未能實現輸入班號該班學生所有學生信息總評成績、未能設計出設想增加幫助菜單函數供使用者使用的功能,程序中的輸入學生成 績沒有使用輸入小數。2、 總體設計流程圖如下:3、 詳細設計1. 輸入學生成績信息:其中包括學生的學號、性別、姓名、期中考試成績、平時作業(yè)成績及期末考試成績,可定義通過結構體struct student將學生信息一組一組的輸入,可用函數add(l)實現。2. 刪除學生成績信息:可用del(l)函數實現,通過if語句選擇按學號刪除或姓名刪除。3. 查找某個學生成績信息:通過函數qur(link l)實現。4. 修改學生信息:通過函數modify(link l)實現。5. 排序學生成績:通過函數sort(link l)實現。6. 保存學生信息:通過函數save(link l)實現。7. 顯示(統(tǒng)計)所有學生成績信息:通過函數tongji(link l)實現。8. 幫助(新增):未實現。9. 退出系統(tǒng):可用函數exit()來實現,首先將信息保存到文件中,釋放創(chuàng)建的內存空間,再退出系統(tǒng)。4、 測試與測試 5、 源代碼和本人負責部分注釋#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; /*平時作業(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) /*定義輸入(添加)學生記錄的函數*/ node *p,*r,*s;/*定義指針變量*/ char numnumlong; /*提示用戶是否輸入或添加*/ r=l; s=l-next; while(r-next!=null) /*提示用戶是否輸入或添加,選擇判斷確認添加*/ r=r-next; while(1) printf(please input 10 number(input 0 to exit.):);/*輸出提示添加學號*/ scanf(%s,num); /*接收學號信息*/ if(strcmp(num,0)=0)/*判斷學號是否輸入正確*/ continue(); break; while(s)/*判斷輸入學號是否存在*/ if(strcmp(s-data.num,num)=0)/*判斷輸入學號存在*/ printf(=the number %s is in the file.(input 4 to modify !)n,num);/*提示輸入學號存在*/ printstart(); printc(); printe(s); printstart(); continue(); return; s=s-next;/*判斷確定添加學生信息*/ p=(node *)malloc(sizeof(node); strcpy(p-data.num,num);/*接收輸入的學號*/ printf(please input name:);/*打印提示輸入學生姓名*/ scanf(%s,);/*接收輸入的學生姓名*/ printf(please input sex(boy/girl):);/*打印提示輸入學生性別*/ scanf(%s,p-data.sex);/*接收輸入的學生姓名*/ printf(please input test score:);/*打印提示輸入學生期末成績*/ scanf(%d,&p-data.test);/*接收輸入的學生期末成績*/ printf(please input middle score!:);/*打印提示輸入學生期中成績*/ scanf(%d,&p-data.middle);/*接收輸入的學生期中成績*/ printf(please input dayly score!:);/*打印提示輸入學生平時作業(yè)成績*/ scanf(%d,&p-data.dayly);/*接收輸入的學生平時作業(yè)成績*/ p-data.total=(p-data.dayly)/5+(p-data.test)/2+(p-data.middle)*3/10;/*計算總評成績*/ p-data.average=p-data.total/3;/*計算平均成績*/ p-next=null; r-next=p; r=p; shoudsave=1;/*保存輸入的學生信息*/void qur(link l)/*定義查找函數*/ int sel; char findmesslongest; node *p; if(!l-next)/*判斷沒有查到*/ printf(n=cannot find anything !n);/*打印提示沒有查到*/ continue(); return; printf(= 1 number.n= 2 name.n);/*打印按學號或姓名查找*/ scanf(%d,&sel);/*接收輸入的選項*/ if(sel=1)/*判斷選項是“1”*/ printf(input the number:);/*打印提示輸入學號*/ scanf(%s,findmess);/*接收輸入的學號*/ p=locate(l,findmess,num);/*查找要查找的內容的位置*/ if(p)/*判斷輸入的學號對應的信息是否存在*/ printf(ttttresultn);/*打印查找的結果*/ printstart(); printc(); printe(p); printstart(); continue(); else/*判斷輸入的學號對應的信息不存在*/ nofind(); continue(); else if(sel=2)/*判斷選項是“1”*/ printf(input the name:);/*打印提示輸入姓名*/ scanf(%s,findmess);/*接收輸入的姓名*/ p=locate(l,findmess,name);/*查找要查找的內容的位置*/ if(p)/*判斷輸入的姓名對應的信息是否存在*/ printf(ttttresultn);/*打印查找的結果*/ printstart(); printc(); printe(p); printstart(); continue(); else/*判斷輸入的學號對應的信息不存在*/ nofind(); continue(); else wrong(); continue(); void del(link l)/*定義刪除函數*/ int sel; node *p,*r; char findmesslongest; if(!l-next)/*判斷要刪除的內容不存在*/ printf(n=nothing can delete !n);/*提示要刪除的內容不存在*/ continue(); return; printf(=1 numbern=2 namen);/*打印選擇查找刪除信息的方式*/ scanf(%d,&sel);/*接收選擇查找刪除信息的方式*/ if(sel=1)/*判斷按學號刪除*/ printf(please input the number:);/*打印提示輸入學號*/ scanf(%s,findmess);/*接收輸入的學號*/ p=locate(l,findmess,num);/*查找要刪除信息的位置*/ if(p)/*判斷要刪除內容的存在*/ r=l; while(r-next!=p)/*確認刪除/ r=r-next; r-next=p-next; free(p); printf(=delete success!n);/*打印提示刪除成功*/ continue(); shoudsave=1;/*保存數據*/ else/*判斷沒找到要刪除內容*/ nofind(); continue(); else if(sel=2)/*判斷按姓名刪除*/ printf(please input the name:);/*打印提示輸入姓名*/ scanf(%s,findmess);/*接收輸入的姓名*/ p=locate(l,findmess,name);/*查找要刪除信息的位置*/ if(p)/*判斷要刪除內容的存在*/ r=l; while(r-next!=p)/*確認刪除/ r=r-next; r-next=p-next; free(p); printf(=delete success!n);/*打印提示刪除成功*/ continue(); shoudsave=1;/*保存數據*/ else/*判斷沒找到要刪除內容*/ 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論