C語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)1_第1頁(yè)
C語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)1_第2頁(yè)
C語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)1_第3頁(yè)
C語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)1_第4頁(yè)
C語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)1_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、鄭州輕工業(yè)學(xué)院實(shí) 訓(xùn) 報(bào) 告實(shí)訓(xùn)名稱(chēng): 學(xué)生成績(jī)管理系統(tǒng) 姓 名: 院 系: 國(guó)際教育學(xué)院 專(zhuān)業(yè)班級(jí): 電子商務(wù)10-3 學(xué) 號(hào): 指導(dǎo)教師: 成 績(jī): 時(shí)間: 2011 年 6 月 27 日至 2011 年 7 月 1 日鄭 州 輕 工 業(yè) 學(xué) 院課 程 設(shè) 計(jì) 任 務(wù) 書(shū)題目 學(xué)生成績(jī)管理系統(tǒng) 專(zhuān)業(yè)班級(jí) 電子商務(wù) 10-3 學(xué)號(hào) 541012030317 姓名 主要內(nèi)容、基本要求、主要參考資料等:主要內(nèi)容和基本要求:強(qiáng)化c語(yǔ)言中數(shù)組及外部文件的內(nèi)容,獨(dú)立設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng),并編程實(shí)現(xiàn)以下功能:1、整個(gè)系統(tǒng)均用c語(yǔ)言實(shí)現(xiàn);2、利用二維數(shù)組來(lái)實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì);3、系統(tǒng)具有輸

2、入、顯示、查詢(xún)、刪除、排序、保存、讀取等基本功能;4、系統(tǒng)的各個(gè)功能模塊都用函數(shù)的形式來(lái)實(shí)現(xiàn);5、要求能將學(xué)生成績(jī)信息保存在文件中。6、要求能將學(xué)生成績(jī)信息從文件中讀取出來(lái)并進(jìn)行相關(guān)處理。工作計(jì)劃:1. 布置設(shè)計(jì)題目,講解要求和說(shuō)明 2011.6.27 2. 確定設(shè)計(jì)任務(wù),確定具體的功能,熟悉相關(guān)知識(shí)2011.6.273. 按功能需求確定程序的主要模塊 2011.6.27 4. 編程實(shí)現(xiàn)程序的功能 2011.6.27 2011.6.285. 調(diào)試并完善程序2011.6.28 2011.6.296. 撰寫(xiě)課程設(shè)計(jì)報(bào)告2011.6.28 - 2011.6.307. 提交課程設(shè)計(jì)報(bào)告并驗(yàn)收軟件 20

3、11.7.1參考資料:1.譚浩強(qiáng),c程序設(shè)計(jì)(第3版),清華大學(xué)出版社, 2005.23.甘勇,c語(yǔ)言程序設(shè)計(jì),中國(guó)水利水電出版社,2011.22.譚明金,俞海英,c語(yǔ)言程序設(shè)計(jì)實(shí)例精粹,電子工業(yè)出版社,2007.1完成期限:2011年7月1日星期五 指導(dǎo)教師簽名: 課程負(fù)責(zé)人簽名: 年 月 日目錄目錄一、 分析系統(tǒng)功能,繪制系統(tǒng)功能結(jié)構(gòu)框架圖41.1 分析系統(tǒng)功能41.2 結(jié)構(gòu)框架圖2二、 程序代碼以及界面形式22.1 程序代碼如下132.2 界面形式7三、 使用說(shuō)明7四、 日志五、 心得體會(huì)19六、 參考文獻(xiàn)20七、 流程圖八、 鳴謝一、分析系統(tǒng)功能,繪制系統(tǒng)功能結(jié)構(gòu)框架圖1.1、 分析系

4、統(tǒng)功能(1) 用戶(hù)進(jìn)入主菜單后,就會(huì)在看到,菜單選項(xiàng)中添加有系統(tǒng)的各項(xiàng)功能,進(jìn)入的應(yīng)的選項(xiàng)就可進(jìn)行相應(yīng)的操作.其主要功能有:1、 輸入學(xué)生成績(jī)2、 成績(jī)排序3、 查詢(xún)學(xué)生成績(jī) 4、 添加學(xué)生成績(jī)5、 顯示當(dāng)前成績(jī) 6、 保存當(dāng)前成績(jī)7、 退出此系統(tǒng) (2) 用戶(hù)選擇所需操作的選項(xiàng),進(jìn)入相應(yīng)的操作界面,在這里用戶(hù)就可開(kāi)始進(jìn)行操作。1.2、 結(jié)構(gòu)框架圖保存當(dāng)前成績(jī)顯示當(dāng)前成績(jī)添加學(xué)生成績(jī)主 菜 單查詢(xún)學(xué)生成績(jī)成績(jī)排序輸入學(xué)生成績(jī)二、 程序代碼以及界面形式#include #include #include #define len sizeof(student)typedef struct stud

5、entint num;char name20;int score4;int sum;struct student *next;student;int n;student *cin(void); student *sort_1(student *head,int); void sort_2(student *head);void print(student *head);student *sort_all(student *head);void find(student *head);void save(student *head);student *add_new(student *head)

6、;student *cin()int flag; student *head,*p1,*p2;n=0;head=(student *)malloc(len);p2=head;printf(n請(qǐng)輸入第%d名學(xué)生的學(xué)號(hào),學(xué)號(hào)為0表示結(jié)束輸入:,n+1); scanf(%d,&flag);while(getchar()!=n);for(;flag;) n+; p1=(student *)malloc(len); p1-num=flag; printf(請(qǐng)輸入第%d名學(xué)生的姓名:,n); scanf(%s,p1-name); printf(請(qǐng)輸入第%d名學(xué)生的語(yǔ)文成績(jī):,n); scanf(%d,&p

7、1-score0); printf(請(qǐng)輸入第%d名學(xué)生的數(shù)學(xué)成績(jī):,n); scanf(%d,&p1-score1); printf(請(qǐng)輸入第%d名學(xué)生的英語(yǔ)成績(jī):,n); scanf(%d,&p1-score2); printf(請(qǐng)輸入第%d名學(xué)生的計(jì)算機(jī)成績(jī):,n); scanf(%d,&p1-score3); p1-sum=p1-score0+p1-score1+p1-score2+p1-score3; p2-next=p1; p2=p1; printf(n請(qǐng)輸入第%d名學(xué)生的學(xué)號(hào),沒(méi)有此學(xué)生則輸入0表示結(jié)束:,n+1); scanf(%d,&flag); p2-next=null;pr

8、intf(nn);return head;student *sort_all(student *head)int choose;for(;) printf( |*歡迎使用成績(jī)管理系統(tǒng)*|n);printf( | 請(qǐng)輸入選項(xiàng)編號(hào)(0-3): |n);printf( |*|n);printf( | 1-按學(xué)生學(xué)號(hào)排序 |n);printf( | 2-按學(xué)生總分排序 |n);printf( | 3-顯示當(dāng)前學(xué)生成績(jī) |n);printf( | 0-退出排序系統(tǒng) |n);printf( |*thank you !*|n); printf(請(qǐng)輸入你要執(zhí)行的操作:); scanf(%d,&choose);

9、 while(getchar()!=n); switch(choose) case 1: case 2:head=sort_1(head,choose);break; case 3:print(head);break; case 0:return head; default: printf(nn請(qǐng)輸入0-3之間的數(shù):nn);break; student *sort_1(student *head,int choose)student *p1,*p2=head-next,*pm,*px;student mid;if (!p2) return head;for(p1=p2;p1-next!=nul

10、l;p1=p1-next) pm=p1; for(p2=p1-next;p2!=null;p2=p2-next) switch(choose) case 1:if (pm-nump2-num) pm=p2;break; case 2:if (pm-sumsum) pm=p2;break; if (pm!=p1) mid=*pm; *pm=*p1; *p1=mid; px=pm-next; pm-next=p1-next; p1-next=px; printf(n排序后的成績(jī)表為:n);print(head); return head;void find(student *head)studen

11、t *p;int choose,fnum;char tem20;if (n=0) printf(n當(dāng)前系統(tǒng)沒(méi)有任何學(xué)生數(shù)據(jù)!n );return;for(;) printf(1 按學(xué)號(hào)查詢(xún) ; 0 我不查詢(xún)了。nn); printf(請(qǐng)選擇:); scanf(%d,&choose); while(getchar()!=n); if (choose=1) printf(n請(qǐng)輸入你要查詢(xún)的學(xué)生的學(xué)號(hào),輸入0退出學(xué)號(hào)查詢(xún):); scanf(%d,&fnum); for(;fnum;) for(p=head-next;p!=null&p-num!=fnum;p=p-next); if (!p) pri

12、ntf(nn找不到你要查詢(xún)的學(xué)號(hào),請(qǐng)重新輸入,輸入0表示結(jié)束:); scanf(%d,&fnum); else if (p-num=fnum) printf(n學(xué)號(hào)為%d學(xué)生的數(shù)據(jù)為:n,p-num); printf(學(xué)號(hào)t姓名t語(yǔ)文成績(jī) 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī) 成績(jī)總分n); printf(%dt%st %d %d %d %d %d n,p-num, p-name,p-score0,p-score1,p-score2,p-score3, p-sum); printf(nn請(qǐng)輸入你還要查詢(xún)的學(xué)生的學(xué)號(hào),輸入0返回上層); scanf(%d,&fnum); else printf(輸入1 或

13、者 0 進(jìn)行查詢(xún)n);break; student *add_new(student *head)student *p;int flag; printf(nn請(qǐng)輸入你要新加入學(xué)生的學(xué)號(hào),學(xué)號(hào)為0表示結(jié)束輸入:); scanf(%d,&flag);while(getchar()!=n);for(;flag;) p=(student *)malloc(len); p-num=flag; printf(請(qǐng)輸入新加入學(xué)生的姓名:,n); scanf(%s,p-name); printf(請(qǐng)輸入新加入學(xué)生的語(yǔ)文成績(jī):,n); scanf(%d,&p-score0); printf(請(qǐng)輸入新加入學(xué)生的數(shù)學(xué)

14、成績(jī):,n); scanf(%d,&p-score1); printf(請(qǐng)輸入新加入學(xué)生的英語(yǔ)成績(jī):,n); scanf(%d,&p-score2); printf(請(qǐng)輸入第%d名學(xué)生的計(jì)算機(jī)成績(jī):,n); scanf(%d,&p-score3); p-sum=p-score0+p-score1+p-score2+p-score3; p-next=head-next; head-next=p; n+; printf(n請(qǐng)輸入還要加入學(xué)生的學(xué)號(hào),沒(méi)有此學(xué)生則輸入0表示結(jié)束:); scanf(%d,&flag); head=sort_1(head,1);printf(加入后的成績(jī)表為:n);pri

15、nt(head); return head; void print(student *head)student *p=head-next;if (!p) printf(nn此系統(tǒng)目前沒(méi)有任何學(xué)生數(shù)據(jù)!nnn);return;printf(此系統(tǒng)目前共計(jì)學(xué)生%d名:n,n); printf(*學(xué)生成績(jī)統(tǒng)計(jì)一覽*n);printf(學(xué)號(hào)t姓名t語(yǔ)文成績(jī) 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 總分n);for(;p;p=p-next)printf(%dt%st %d %d %d %d %dn, p-num,p-name, p-score0,p-score1,p-score2,p-score3, p-sum

16、=p-score0+p-score1+p-score2+p-score3); printf(*thank you !*n);void save(student *head) file *fp; student *p=head-next; char outfile10; printf(請(qǐng)輸入保存文件的文件名,例如 c:f1te.txt:n); scanf(%s,outfile); if(fp=fopen(outfile,wb)=null) printf(不能打開(kāi)文件n); exit(1); printf(n正在保存.n); while(p!=null) fwrite(p,sizeof(stude

17、nt),1,fp); p=p-next; fclose(fp); printf(-保存成功!-n);int main()student *head;int choose,i;head=(student *)malloc(len);head-next=null; for(;) printf( |*歡迎使用學(xué)籍管理系統(tǒng)*|n);printf( | 請(qǐng)輸入選項(xiàng)編號(hào)(0-5): |n);printf( |*|n);printf( | 1-輸入學(xué)生成績(jī) |n);printf( | 2-成績(jī)排序 |n);printf( | 3-查詢(xún)學(xué)生成績(jī) |n);printf( | 4-添加學(xué)生成績(jī) |n);print

18、f( | 5-顯示當(dāng)前成績(jī) |n);printf( | 6-保存當(dāng)前成績(jī) |n);printf( | 0-退出此系統(tǒng) |n);printf( |*電子商務(wù)10-3*石興威!*|n);printf( |*thank you !*|n); printf(n請(qǐng)輸入你要執(zhí)行的操作:); scanf(%d,&choose); while(getchar()!=n); switch(choose) case 1:printf(確定輸入數(shù)據(jù)請(qǐng)按 1 nn); scanf(%d,&i); if (i=1) head=cin();print(head);break; else printf(n你做出別的選擇,當(dāng)

19、作放棄建立!n); break; case 2:head=sort_all(head);break; case 3:find(head);break; case 4:head=add_new(head); case 5:print(head);break; case 6:save(head);break; case 0:system(pause);return 0; default: printf(nn您的輸入有誤!請(qǐng)重新輸入:nn);break; 2.1程序代碼如下2.2、界面形式三、 使用說(shuō)明學(xué)生學(xué)籍管理系統(tǒng)是針對(duì)學(xué)生信息的管理,主要功能是添加學(xué)生成績(jī)、輸入學(xué)生成績(jī)、查詢(xún)學(xué)生成績(jī)、學(xué)生成績(jī)

20、排序、修改學(xué)生成績(jī)、保存成績(jī)。(1)進(jìn)入主菜單,列出各項(xiàng)功能用戶(hù)打開(kāi)程序 (2)輸入1進(jìn)入錄入界面,用戶(hù)即可錄入信息, (2)在主菜單中,輸入2,則會(huì)進(jìn)入排序界面, (3)、在主菜單中,輸入3,則會(huì)進(jìn)入查詢(xún)界面,輸入要查的學(xué)生的學(xué)號(hào)即可查詢(xún)到信息。 (4)輸入4 ,會(huì)進(jìn)入添加學(xué)生成績(jī)界面。(5)、在主菜單中,輸入5,進(jìn)入顯示學(xué)生成績(jī)界面(6)、在主菜單中,輸入6,則會(huì)進(jìn)入保存當(dāng)前成績(jī),自動(dòng)進(jìn)行保存。四、日志 6月27 星期一 從今天起,正式開(kāi)始做課程設(shè)計(jì)了。但坐到電腦前想開(kāi)始做時(shí),卻不懂如何開(kāi)始寫(xiě)起,都感到有點(diǎn)陌生了。因?yàn)榍耙魂囈恢痹诿τ诟骺频目荚嚕镁脹](méi)碰c語(yǔ)言了,都開(kāi)始有生疏感了。但還是試

21、著在電腦上編了下,光要寫(xiě)個(gè)主函數(shù)還很吃力,更頭痛的吃力的結(jié)果還換來(lái)了很多錯(cuò)誤,本想編譯下,試試的,結(jié)果錯(cuò)誤警告一大堆。鑒于此,我還是決定先把書(shū)再好好看下,“工欲善其事,必先利其器”嘛! 6月28期二 昨天看了一天的書(shū),又加上今天看的,可卻連一半還沒(méi)看完。我是按部就班的順序往下看的,但因?yàn)闀?shū)的前半部分大多是基礎(chǔ)知識(shí),因此在晚上上課時(shí)依舊不知如何編寫(xiě)。折騰了一晚上,想編寫(xiě)要調(diào)用的函數(shù)的,試著編了好多,但都是些到處是錯(cuò)誤的程序,根本沒(méi)法用。而且編的時(shí)候還是發(fā)現(xiàn)自己好多東西都忘記了,因此覺(jué)得還是得接著去看書(shū),沒(méi)轍,還是先把書(shū)吃透,把基本程理論再實(shí)踐吧! 6月29 星期三 今天又是啃了一天的書(shū),本還想去

22、機(jī)房試試的呢,結(jié)果都沒(méi)來(lái)得及去,剛夠把書(shū)看完。今天重點(diǎn)把數(shù)組、函數(shù)和文件部分看了下。晚上上機(jī)的時(shí)候在機(jī)器上試了下,并為我的主函數(shù)編了個(gè)結(jié)構(gòu)體數(shù)組,用來(lái)存錄入的信息。同時(shí)今晚在調(diào)試主函數(shù)時(shí)發(fā)現(xiàn)我的主函數(shù)沒(méi)有清屏的功能,所有工作都在同一屏幕上。問(wèn)了同學(xué),為里面加了個(gè)清屏的語(yǔ)句,但要加這語(yǔ)句得另加個(gè)頭文件,問(wèn)為什么要加這頭文件,他也不懂,只知道就是這樣規(guī)定的,并且這些規(guī)定都是得記住的。還是學(xué)得不夠多,得慢慢充實(shí)自己! 6月30 星期四 下午c語(yǔ)言考試,復(fù)習(xí)了一上午,丁點(diǎn)課程設(shè)計(jì)也沒(méi)碰。等下午考完試直奔機(jī)房,編寫(xiě)了兩小時(shí),只給我的程序加了個(gè)添加了個(gè)“錄入學(xué)生信息”的函數(shù)。在做時(shí)候碰到了不少的問(wèn)題。主要

23、是我的程序一次只能錄入一個(gè)學(xué)生信息,好不容易加了個(gè)可以繼續(xù)錄入的語(yǔ)句,可又碰到了新的問(wèn)題。當(dāng)我錄入學(xué)生信息的前三項(xiàng)后,就直接進(jìn)入“是否繼續(xù)錄入”。我懷疑是有肯能在定義數(shù)組長(zhǎng)度時(shí)定義太大了,當(dāng)我把它縮小后再編譯、連接、運(yùn)行時(shí)居然成功了,可我現(xiàn)在還沒(méi)確定到底時(shí)什么原因。又碰到新問(wèn)題了。我把其他要調(diào)用的函數(shù)也加進(jìn)去了,但是在用的時(shí)候發(fā)現(xiàn)加進(jìn)去的那些函數(shù)都不能用,就一添加函數(shù)在運(yùn)行時(shí)是正常的,而其他的進(jìn)入是可以,但在執(zhí)行的時(shí)候,它就會(huì)出來(lái)警告,說(shuō)不能被讀。自己找,也請(qǐng)同學(xué)幫忙找了,但都沒(méi)找出毛病。碰這問(wèn)題實(shí)在是難辦,因?yàn)椴荒軋?zhí)行,我也就不知道這些函數(shù)在這里運(yùn)行是否會(huì)正常,也就不知道是否需要改動(dòng)。 關(guān)于

24、“警告”的問(wèn)題到現(xiàn)在還沒(méi)解決,有點(diǎn)心煩意亂了,改了下程序,可問(wèn)題又多了。在“查找”項(xiàng)里也出現(xiàn)了問(wèn)題,在查找時(shí)候即使是查找一個(gè)人,它卻也會(huì)每次都會(huì)把所查找的人給找出后,接著又會(huì)把其他人的信息以“查無(wú)此人”顯示出來(lái)。反復(fù)檢查下發(fā)現(xiàn)好像是算法的問(wèn)題。是在循環(huán)里的時(shí)候出了錯(cuò),它自己不停了,非得把所有的運(yùn)行一遍在停。在我加了停止條件后問(wèn)題總算是得到解決了。可“警告的問(wèn)題今天還是沒(méi)解決。警告”的問(wèn)題困擾好久了,真是頭痛,都快被它給崩潰了。今天上課時(shí),我又檢查和調(diào)試了下,可還是沒(méi)找到問(wèn)題在哪兒。自己是搞不定了,只能是請(qǐng)教老師了。雖然向老師去請(qǐng)教的人很多,但還是被我逮到機(jī)會(huì)了,讓老師幫我看了下,檢查發(fā)現(xiàn)原來(lái)是在調(diào)用函數(shù)和主函數(shù)中所定義的類(lèi)型產(chǎn)生了差異。將被掉函數(shù)里的改過(guò)來(lái)后問(wèn)題久解決。五、心得體會(huì)兩周的課程過(guò)起來(lái)其實(shí)也是很快的。這是我第一次做課程設(shè)計(jì),起初還沒(méi)做的時(shí)候覺(jué)得很快自己就將得編一個(gè)較大的程序,將會(huì)很有意思。帶著最初的好奇心,新鮮感就這樣開(kāi)始了第一天的編程,結(jié)果是大失所望。做課程設(shè)計(jì)并不是自己想象中的那樣有意思,而是很枯燥,很乏味的。也沒(méi)想象

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論