語言課程設計學生成績管理系統(tǒng)說明書1_第1頁
語言課程設計學生成績管理系統(tǒng)說明書1_第2頁
語言課程設計學生成績管理系統(tǒng)說明書1_第3頁
語言課程設計學生成績管理系統(tǒng)說明書1_第4頁
語言課程設計學生成績管理系統(tǒng)說明書1_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、*實踐教學*蘭州理工大學計算機與通信學院2009年春季學期計算機語言B 課程設計題 目:學生成績管理系統(tǒng) 專業(yè)班級: 姓 名: 學 號: 指導教師: 成 績: 目 錄摘 要1前 言2正 文31.問題描述32.需求分析33.系統(tǒng)總體設計34.詳細設計45.系統(tǒng)測試66.軟件使用說明書7總 結9參考文獻10致 謝11附件 部分原程序代碼12摘 要建立一個“學生成績管理系統(tǒng)”,系統(tǒng)以菜單方式工作,編寫存放有學生信息,包含學生姓名、學號、學生的成績、班級等,并可對這些信息進行瀏覽;可按學號查找此信息,建立學生成績信息的文件,并且可以實現(xiàn)一個新的學生信息的插入,可以按照學號來刪除一個學生的信息,可以按照

2、平均分對學生進行排序。關鍵詞:學生成績管理;文件;插入學生成績信息;查詢;修改;對學生的平均成績進行排序。 前 言近年來,隨著學校規(guī)模的不斷擴大,學生數(shù)量也相應的增加,有關學生考試的各種信息量也成倍增加,面對著龐大的信息量,傳統(tǒng)的人工方式管理會導致學生成績管理上的混亂,人力與物力過多浪費,學生成績管理費用的增加,從而使學校的負擔過重,影響整個學校的運作和控制管理,因此,必須制定一套合理、有效,規(guī)范和實用的學生成績管理系統(tǒng),對學生成績進行集中統(tǒng)一的管理。系統(tǒng)開發(fā)的總的設計目標是學生成績管理的系統(tǒng)化、規(guī)范化和自動化,實現(xiàn)對學生成績的集中統(tǒng)一的管理。正 文1. 問題描述由于學生人數(shù)的增加,使得學生成

3、績管理工作繁重,而且手工管理效率極低,急需一個軟件系統(tǒng)解決這些問題。為了跟上時代潮流,規(guī)范管理,提高學生成績的管理水平和管理效率,為全校職工和學生提供方便、快捷、準確的學生成績服務,開發(fā)一個學生成績管理系統(tǒng)”。;2. 需求分析本系統(tǒng)通過管學生成績信息,可以進行學生成成績信息的插入,修改,對學生的平均分進行排序,為學生成績供準確的資料,提高了人員的工作效率。3. 系統(tǒng)總體設計1:整體結構流程圖主菜單輸入記錄排序顯示保存讀取刪除退出查詢按姓名按平均成績按學號插入按平均成績高低 3、添加學生成績信息流程圖開始結束選擇操作輸入數(shù)據(jù)顯示數(shù)據(jù)查詢刪除輸出界面退出系統(tǒng)按學號按姓名統(tǒng)計成績按景平均成績選7選6

4、選5選4擇4選3選2選1選8讀取數(shù)據(jù)吧選0三門成績學號姓名插入數(shù)據(jù)排序按平均成績高低i2:系統(tǒng)的執(zhí)行應從功能菜單的選擇開始,依據(jù)用戶的選擇來進行后續(xù)處理直到 用戶選擇退出系統(tǒng)為止。其間應對用戶的選擇做出判斷和異常處理。 4. 詳細設計對應于總體設計時的系統(tǒng)功能模塊圖,各個功能模塊的處理邏輯如下:信息輸入模塊:打開學生信息文件;while (繼續(xù)輸入 ) 讀入學生成績信息;將讀入信息添加到學生信息文件中;提示是否繼續(xù)輸入;關閉學生成績信息文件;信息瀏覽模塊:打開學生信息文件;while ( 不到文件結束 ) 從文件中順序讀出一個學生的信息;按指定格式輸出該學生成績的信息;關閉學生成績信息文件;信

5、息查詢模塊:while ( 仍繼續(xù)查詢 ) if( 按書名查詢 ) 讀入查詢的學生的條件; 打開圖書信息文件;while( 不到文件結束 ) 順序讀出一個學生成績的信息;if( 該學生成績信息符合條件 ) 輸出該學生成績的信息;關閉學生成績信息文件;提示共有幾條符合條件的記錄; else if ( 按學號查詢 ) 讀入學生成績的條件; 打開學生成績信息文件;while( 不到文件結束 ) 順序讀出一個學生成績的信息;if( 該學生成績信息的學歷符合條件 ) 輸出該學生成績的信息;關閉圖書信息文件;提示符合條件的記錄數(shù); else 提示輸入不合適;提示是否繼續(xù)查詢;5. 系統(tǒng)測試用以下的例子做測

6、試,選擇輸入操作,依次輸入,學號,姓名,C語言成績,英語成績。數(shù)學成績。返回則選擇瀏覽、查詢、修改、刪除,排序等功能。學號姓名C語言英語數(shù)學平均分001小明87898888.0002小雨78798079.0003張啟66676867.0004周琦60616863.06. 軟件使用說明書(1)根據(jù)正確的提示安裝軟件。(2)Intel486以上系列、AMD K6 以上系列等PC臺式機和便攜式電腦都可運行。 (3) 打開該程序系統(tǒng),瀏覽菜單,根據(jù)需要選擇功能,進行各項操作。操作如下:點擊開始菜單,進入菜單選擇。輸入:將所需的信息輸入。輸出: 學號,姓名,成績,排名,。輸入:根據(jù)不同的需要選擇,當信息

7、輸入顯示出錯誤時,進入瀏覽信息,找出錯誤。當錯誤不能改正,則退出瀏覽信息。進入查詢信息:則屏幕會出現(xiàn)兩個對話框按作學號和按姓名查找,查處相應的所需信息和書的狀態(tài)(是否借出)。當查詢不能顯示需要時進入修改程序,把所輸入的信息進行修改,使之正確能夠正常運行或進入刪除信息中,重新輸入自己所要的信息。當信息輸入正確,進入你所需要的菜單程序中:學生信息:顯示學生的成績,學號,姓名,班級,排名等總 結該系統(tǒng)以學生成績信息管理為背景,并且有一定的可行性和安全性,確保了各項指定功能得以運行。本系統(tǒng)以基本函數(shù)、結構體、枚舉性、文件以及鏈表等多方位知識貫穿實現(xiàn)。 通過此次程序設計實踐,是同學們對所學知識的綜合運用

8、,也是程序設計得以提高的表現(xiàn)。通過此次編程培養(yǎng)了我們結構化程序設計的思想,加深了對高級語言基本語言要素和控制結構的理解,鍛煉我們獨立思考制作程序的能力,并且掌握了一些課程設計的相關知識與實踐操作能力,為以后的學習提供了鍛煉的機會。經(jīng)過設計和開發(fā),學生成績管理系統(tǒng)基本開發(fā)完畢以及各類相關報表的打印。并提供部分系統(tǒng)維護功能,使用戶方便進行數(shù)據(jù)備份和恢復、數(shù)據(jù)刪除。對于數(shù)據(jù)的一致性的問題也通過程序進行了有效的解決。從而是我對c語言這門課程有了更好的了解。但是由于設計時間較短,所以該系統(tǒng)還有許多不盡如人意的地方,比如聯(lián)機文檔比較少,用戶界面不夠美觀,出錯處理不夠等多方面問題。這些都有待進一步改善。 參

9、考文獻1c+程序設計教程 ,王連相,中國鐵道出版社,2007 2 C語言程序設計,譚浩強,清華大學出版社,1999 3C程序設計題解與上機指導,譚浩強,清華大學出版社,1999 4 C語言的實際應用,安徽科學技術出版社,2000 5 C語言函數(shù)手冊,機械工業(yè)出版社,1999 6 C語言實用程序薈萃,西安電子科技大學出版社,1993 致 謝在編寫程序的過程中,我們得到了周小健、丁政建老師的精心指導以及孜孜不倦的教誨,在老師的指導下,我們的能力得到了提高,同時養(yǎng)成了科學、嚴謹?shù)淖黠L和習慣,在此,我們對老師的精心栽培表示衷心的感謝! 感謝我們小組同學對我的幫助和指點,尤其感謝我的舍友在非常時期,在生

10、活和學習上幫我許多忙。在課設即將完成之際,我的心情無法平靜,從開始進入課題到課設的順利完成,有多少可敬的師長、同學、朋友給了我無言的幫助,在這里請接受我誠摯的謝意。附件 部分原程序代碼#include stdio.h #include stdlib.h #include string.h int shoudsave=0; / struct student char num10;/學號 char name20; char sex4; int cgrade; int mgrade; int egrade; int totle; int ave; char neartime10;/最近更新時間 ;

11、typedef struct node struct student data; struct node *next; Node,*Link; void menu() printf(*); printf(t1輸入學生資料ttttt2刪除學生資料n); printf(t3查詢學生資料ttttt4修改學生資料n); printf(t5顯示學生資料ttttt6統(tǒng)計學生成績n); printf(t7排序?qū)W生成績ttttt8保存學生資料n); printf(t9獲取幫助信息ttttt0退出系統(tǒng)n); printf(*n); void printstart() printf(-n); void Wrong

12、() printf(n=提示:輸入錯誤!n); void Nofind() printf(n=提示:沒有找到該學生!n); void printc() / 本函數(shù)用于輸出中文 printf( 學號t 姓名 性別 英語成績 數(shù)學成績 C語言成績 總分 平均分n); void printe(Node *p)/本函數(shù)用于輸出英文 printf(%-12s%st%st%dt%dt%dt %dt %dn,p-data.num,,p-data.sex,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.totle,p-data.ave);

13、 Node* Locate(Link l,char findmess,char nameornum) /該函數(shù)用于定位連表中符合要求的接點,并返回該指針 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)

14、 return r; r=r-next; return 0; void Add(Link l) /增加學生 Node *p,*r,*s; char num10; r=l; s=l-next; while(r-next!=NULL) r=r-next; /將指針置于最末尾 while(1) printf(請你輸入學號(以0返回上一級菜單:); scanf(%s,num); if(strcmp(num,0)=0) break; while(s) if(strcmp(s-data.num,num)=0) printf(=提示:學號為%s的學生已經(jīng)存在,若要修改請你選擇4 修改!n,num); pri

15、ntstart(); printc(); printe(s); printstart(); printf(n); return; s=s-next; p=(Node *)malloc(sizeof(Node); strcpy(p-data.num,num); printf(請你輸入姓名:); scanf(%s,); getchar(); printf(請你輸入性別:); scanf(%s,p-data.sex); getchar(); printf(請你輸入c語言成績:); scanf(%d,&p-data.cgrade); getchar(); printf(請你輸入數(shù)

16、學成績:); scanf(%d,&p-data.mgrade); getchar(); printf(請你輸入英語成績:); scanf(%d,&p-data.egrade); getchar(); p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade; p-data.ave=p-data.totle / 3; /信息輸入已經(jīng)完成 p-next=NULL; r-next=p; r=p; shoudsave=1; void Qur(Link l) /查詢學生 int sel; char findmess20; Node *p; if(!l-

17、next) printf(n=提示:沒有資料可以查詢!n); return; printf(n=1按學號查找n=2按姓名查找n); scanf(%d,&sel); if(sel=1)/學號 printf(請你輸入要查找的學號:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) printf(tttt查找結果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else if(sel=2) /姓名 printf(請你輸入要查找的姓名:); scanf(%s,

18、findmess); p=Locate(l,findmess,name); if(p) printf(tttt查找結果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else Wrong(); void Del(Link l) /刪除 int sel; Node *p,*r; char findmess20; if(!l-next) printf(n=提示:沒有資料可以刪除!n); return; printf(n=1按學號刪除n=2按姓名刪除n); scanf(%d,&sel); if(sel=1) pr

19、intf(請你輸入要刪除的學號:); 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(n=提示:該學生已經(jīng)成功刪除!n); shoudsave=1; else Nofind(); else if(sel=2) printf(請你輸入要刪除的姓名:); scanf(%s,findmess); p=Locate(l,findmess,name); if(p) r=l; while(r-next!=p) r=r-next

20、; r-next=p-next; free(p); printf(n=提示:該學生已經(jīng)成功刪除!n); shoudsave=1; else Nofind(); else Wrong(); void Modify(Link l) Node *p; char findmess20; if(!l-next) printf(n=提示:沒有資料可以修改!n); return; printf(請你輸入要修改的學生學號:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) printf(請你輸入新學號(原來是%s):,p-data.num); scan

21、f(%s,p-data.num); printf(請你輸入新姓名(原來是%s):,); scanf(%s,); getchar(); printf(請你輸入新性別(原來是%s):,p-data.sex); scanf(%s,p-data.sex); printf(請你輸入新的c語言成績(原來是%d分):,p-data.cgrade); scanf(%d,&p-data.cgrade); getchar(); printf(請你輸入新的數(shù)學成績(原來是%d分):,p-data.mgrade); scanf(%d,&p-data.mgrade); get

22、char(); printf(請你輸入新的英語成績(原來是%d分):,p-data.egrade); scanf(%d,&p-data.egrade); p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade; p-data.ave=p-data.totle/3; printf(n=提示:資料修改成功!n); shoudsave=1; else Nofind(); void Disp(Link l) int count=0; Node *p; p=l-next; if(!p) printf(n=提示:沒有資料可以顯示!n); return;

23、 printf(tttt顯示結果n); printstart(); printc(); printf(n); while(p) printe(p); p=p-next; printstart(); printf(n); void Tongji(Link l) Node *pm,*pe,*pc,*pt,*pa; /用于指向分數(shù)最高的接點 Node *r=l-next; if(!r) printf(n=提示:沒有資料可以統(tǒng)計!n); return ; pm=pe=pc=pt=pa=r; while(r!=NULL) if(r-data.cgrade=pc-data.cgrade) pc=r; if

24、(r-data.mgrade=pm-data.mgrade) pm=r; if(r-data.egrade=pe-data.egrade) pe=r; if(r-data.totle=pt-data.totle) pt=r; if(r-data.ave=pa-data.ave) pa=r; r=r-next; printf(-統(tǒng)計結果-n); printf(總分最高者:t%s %d分n,,pt-data.totle); printf(平均分最高者:t%s %d分n,,pa-data.ave); printf(英語最高者:t%s %d分n,pe-d

25、,pe-data.egrade); printf(數(shù)學最高者:t%s %d分n,,pm-data.mgrade); printf(c語言最高者:t%s %d分n,,pc-data.cgrade); printstart(); void Sort(Link l) Link ll; Node *p,*rr,*s; ll=(Link)malloc(sizeof(Node); /用于做新的連表 ll-next=NULL; if(l-next=NULL) printf(n=提示:沒有資料可以排序!n); return ; p=l-next;

26、 while(p) s=(Node*)malloc(sizeof(Node); /新建接點用于保存信息 s-data=p-data; s-next=NULL; rr=ll; while(rr-next!=NULL & rr-next-data.totle=p-data.totle) 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(n=提示:排序已經(jīng)完成!n); void Save(Link l) FILE* fp;

27、Node *p; int flag=1,count=0; fp=fopen(c:student,wb); if(fp=NULL) printf(n=提示:重新打開文件時發(fā)生錯誤!n); 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(n=提示:文件保存成功.(有%d條記錄已經(jīng)保存.)n,count); shoudsave=0; fclose(fp); void main() Link l;/連表 FILE *fp; /文件指針 int sel; char ch; char jian; int count=0; Node *p,*r; l

溫馨提示

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

評論

0/150

提交評論