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

下載本文檔

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

文檔簡(jiǎn)介

1、課程設(shè)計(jì)報(bào)告(本科)課程:高級(jí)語言程序設(shè)計(jì)學(xué)號(hào):姓名:班級(jí):2013級(jí)計(jì)算機(jī)科學(xué)與技術(shù)教師:時(shí)間:2013年12月計(jì)算機(jī)科學(xué)與技術(shù)系設(shè)計(jì)名稱:學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)內(nèi)容、目的與要求:設(shè)計(jì)內(nèi)容:設(shè)計(jì)并實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)目的與要求: 設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng),實(shí)現(xiàn)以下功能:1、采用的數(shù)據(jù)結(jié)構(gòu):結(jié)構(gòu)體數(shù)組 2、實(shí)現(xiàn)的功能:能對(duì)學(xué)生成績(jī)信息(學(xué)號(hào),課程設(shè)計(jì),成績(jī))進(jìn)行查詢(要求可以使用模糊查詢和條件組合查詢)、修改、增加、刪除和存儲(chǔ)等。計(jì)劃與進(jìn)度安排:12月20日至12月22日:研究學(xué)生管理系統(tǒng)的要求,分析應(yīng)實(shí)現(xiàn)的功能,具體分析問題,選擇解題所用的方法;12月23日至12月25日:設(shè)計(jì)出解題的方法(如該使

2、用何種算法,函數(shù)如何定義)和具體步驟;12月26日至12月31日:編寫各部分的程序,然后整合;1月1日至1月2日:調(diào)試程序;1月3日至1月5日:檢查并完善程序,找出不足,認(rèn)真填寫課程設(shè)計(jì)報(bào)告,為驗(yàn)收做準(zhǔn)備。設(shè)計(jì)過程、步驟(可加頁):1、 此設(shè)計(jì)采用結(jié)構(gòu)體數(shù)組,根據(jù)不同的值表達(dá)的不同意思,對(duì)變量進(jìn)行定義。 另外此代碼,添加了結(jié)構(gòu)體變量如下:struct student char name60; char ID7; int score; 2、本課程設(shè)計(jì)定義了大量函數(shù),主要為: (1)case 1: add(); fh();(增加學(xué)生成績(jī)) (2)case 2: chazhao(); fh();(查

3、找) (3)case 3: del(); fh();(刪除) (4)case 4: xg(); fh();(修改) (5)case 5:bca(); fh();(保存) 3、詳細(xì)說明各函數(shù)功能的實(shí)現(xiàn): (1)增加功能void add()/增加學(xué)生 int numberTemp=0; int i=0; struct student temp; /臨時(shí)保存信息 printf("請(qǐng)輸入要增加學(xué)生成績(jī)個(gè)數(shù):"); scanf("%d",&numberTemp); for(i=0;i<numberTemp;i+) printf("輸入第%d

4、個(gè)同學(xué)信息n",i+1); printf("姓名:"); scanf("%s",); printf("學(xué)號(hào):"); scanf("%s",temp.ID);printf("高數(shù)成績(jī):"); scanf("%d",&temp.score);printf("英語成績(jī):"); scanf("%d",&temp.score);printf("c語言成績(jī):"); scanf(&quo

5、t;%d",&temp.score);printf("計(jì)算機(jī)導(dǎo)論成績(jī):"); scanf("%d",&temp.score); stNumber+=temp; /將剛添加的寫入到數(shù)組 bc(&temp); /將剛添加的寫入到文件 printf("添加成功n"); (2)查找功能void chazhao()/查找學(xué)生 int n=0; printf("1 按姓名查找n"); printf("2 按學(xué)號(hào)查找n"); printf("3 組合查找n"

6、;); scanf("%d",&n); switch(n) case 1: xmcz();break; case 2: xhcz();break;case 3: zhcz();break;default: printf("輸入有誤,結(jié)束!n"); break; 組合查找函數(shù)定義 void zhcz()/組合查找 char name7;char id7; int i=0,j=0; printf("請(qǐng)輸入要查找學(xué)生姓名:"); scanf("%s",name);printf("請(qǐng)輸入要查找學(xué)生學(xué)號(hào):&

7、quot;); scanf("%s",id); system("cls"); (3)刪除功能void del()/刪除 int n=0; printf("1 按姓名刪除n"); printf("2 按學(xué)號(hào)刪除n"); scanf("%d",&n); switch(n) case 1: xmsc();break; case 2: xhsc();break; (4)修改功能 void xg() /修改學(xué)生信息 int way=0; printf("請(qǐng)選擇修改查找方式n")

8、; printf("1 按姓名查找修改n"); printf("2 按學(xué)號(hào)查找修改n"); scanf("%d",&way); switch(way) case 1: xmxg();break; case 2: xhxg();break; default: printf("輸入有誤,結(jié)束!n"); break; (5)保存功能 fh();/保存 fflush(stdin); getchar(); system("cls"); void bca() printf("t=程序在運(yùn)行

9、時(shí)已自動(dòng)保存.n"); 4、為了更完善的實(shí)現(xiàn)功能,本課程設(shè)計(jì)使用了結(jié)構(gòu)體,但同時(shí)不對(duì)主函數(shù)運(yùn)行產(chǎn)生影響,而設(shè)計(jì)主函數(shù)目的是建立文件。 5、主函數(shù)定義及功能 void main() int choose=0; FILE *fp=NULL; char yesorno; if(fp=fopen("C:/student.dat","rb")=NULL) printf("n=>提示:文件不存在,是否要?jiǎng)?chuàng)建?yn) scanf("%c",&yesorno); if(yesorno='y'|yeso

10、rno='Y') /這里僅為了建立文件 fp=fopen("C:/student.dat","wb"); fclose(fp); else exit(0); else Number=dq(st); /要是文件只能夠已經(jīng)有數(shù)據(jù) 將數(shù)據(jù)初始化到 數(shù)組中 結(jié)果與分析(可以加頁): 一、 運(yùn)行結(jié)果1 、總頁面2、增加功能3、 查找功能姓名查找(內(nèi)含模糊查找)學(xué)號(hào)查找 條件組合查找 3、刪除功能4、 修改功能5、 保存功能 二、程序分析 該程序設(shè)計(jì)基本實(shí)現(xiàn)了,對(duì)學(xué)生成績(jī)的增加,刪除,修改,查找和存儲(chǔ)的基本功能,另外在查找程序中,還包含了模糊查找和條

11、件組合查找 但是對(duì)于條件組合查找,在兩個(gè)條件存在的前提下,卻能查出多個(gè)結(jié)果,查詢顯示結(jié)果卻由“且”變成“或”。設(shè)計(jì)體會(huì)與建議: 設(shè)計(jì)體會(huì):起初在拿到課程設(shè)計(jì)之時(shí),對(duì)本課題只是大致瀏覽過一遍,等到真正開始編寫,才發(fā)現(xiàn)各方各面的問題,主函數(shù)的定義,其它函數(shù)的聲明,一切的一切都是如此困難。也正是通過本次作業(yè),能夠正視自己在c語言上的不足點(diǎn)。猶記得起初對(duì)程序段極其陌生,不清楚該使用什么程序段,一直徘徊在不同函數(shù)之間。記得那時(shí)看到c語言頭就暈。曾經(jīng)為了一個(gè)模糊查詢語句,跑去圖書館查閱。不得不承認(rèn)那段時(shí)間的自己也確實(shí)萌生了失望,絕望,或者放棄的思想。但是考慮再三,還是咬牙堅(jiān)持,泡圖書館,電子閱覽室。功夫不

12、負(fù)有心人,最后經(jīng)過多次查找資料,多次修改,最終完成本次作業(yè)。建議:此次實(shí)驗(yàn)讓我明白了,在實(shí)踐一個(gè)于己而言,陌生的作業(yè)之前,先要熟悉課本基本知識(shí),起碼了解所要實(shí)現(xiàn)的功能,或者所需的函數(shù)定義。多查閱資料,看看別人怎么做的。不要老想一個(gè)人死撐,可以問問同學(xué)老師。附錄:#include <stdio.h>#include <stdlib.h>#include <string.h>struct student char name60; char ID7; int score;int dq(struct student st);void xianshi();void b

13、c(struct student st);void add(); /定義增加函數(shù)void chazhao();/定義查找函數(shù)void xhcz();/按學(xué)號(hào)查找void xmcz();/按姓名查找void del();/定義刪除函數(shù)void xmsc();/姓名刪除void xhsc();/學(xué)號(hào)刪除void zhcz();/條件組合查找void xg();/定義修改函數(shù)void xhxg(); /學(xué)號(hào)修改void xmxg();/姓名修改void bca();void fh();struct student st300; /這個(gè)數(shù)組用來保存所有的學(xué)生信息 和文件里面的一致int Number=

14、0; /記錄總的學(xué)生人數(shù) 也就是數(shù)組/文件里面的學(xué)生人數(shù)int k=0;/表示輸入的信息是否存在void main() int choose=0; FILE *fp=NULL; char yesorno; if(fp=fopen("C:/student.dat","rb")=NULL) printf("n=>提示:文件不存在,是否要?jiǎng)?chuàng)建一個(gè)?(y/n)n"); scanf("%c",&yesorno); if(yesorno='y'|yesorno='Y') /這里僅為

15、了建立文件 fp=fopen("C:/student.dat","wb"); fclose(fp); else exit(0); else Number=dq(st); /要是文件只能夠已經(jīng)有數(shù)據(jù) 將數(shù)據(jù)初始化到數(shù)組中 system("cls"); xianshi(); printf("tt=>請(qǐng)選擇:"); scanf("%d",&choose); system("cls"); switch(choose) case 0: exit(0); /退出 break

16、; case 1: add(); fh();/增加學(xué)生成績(jī) break; case 2: chazhao(); fh();/ 查找 break; case 3: del(); fh();/刪除 break; case 4: xg(); fh();/修改 break; case 5:bca(); fh();/保存 break; default: break; fflush(stdin); getchar(); system("cls"); void bca() printf("t=程序在運(yùn)行時(shí)已自動(dòng)保存.n");void fh() printf("

17、;n");void xg() /修改學(xué)生信息 int way=0; printf("請(qǐng)選擇修改查找方式n"); printf("1 按姓名查找修改n"); printf("2 按學(xué)號(hào)查找修改n"); scanf("%d",&way); switch(way) case 1: xmxg(); break; case 2: xhxg(); break; default: printf("輸入有誤,結(jié)束!n"); break; /按姓名修改void xmxg() FILE *fp=N

18、ULL; char name60; int i=0; int changeIndex=0; int index=0; printf("請(qǐng)輸入要修改的學(xué)生姓名:"); scanf("%s",name); for (i=0;i<Number;i+) if (strcmp(name,)=0) changeIndex=i; /保存要修改的人的下標(biāo) k=1; break; if(k=1) printf("t姓名t學(xué)號(hào)t高數(shù)t英語tc語言t計(jì)算機(jī)導(dǎo)論n"); printf("t%st%st%dnn",st

19、changeI,stchangeIndex.ID,stchangeIndex.score,stchangeIndex.score,stchangeIndex.score,stchangeIndex.score); printf("請(qǐng)重新輸入該學(xué)生信息"); printf("姓名:"); scanf("%s",stchangeI); printf("學(xué)號(hào):"); scanf("%s",stchangeIndex.ID); printf("高數(shù):&quo

20、t;); scanf("%d",&stchangeIndex.score); printf("英語:"); scanf("%d",&stchangeIndex.score); printf("c語言:"); scanf("%d",&stchangeIndex.score); printf("計(jì)算機(jī)導(dǎo)論:"); scanf("%d",&stchangeIndex.score); printf("t=>修改成功n

21、"); else if(k=0) printf("=>無此人nnn"); /信息修改后重新更新文件里面的數(shù)據(jù) 以保持?jǐn)?shù)據(jù)一致性 fp=fopen("C:/student.dat","wb"); for (i=0;i<Number;i+) fwrite(&sti,sizeof(struct student),1,fp); fclose(fp); k=0;void xhxg()/按學(xué)號(hào)修改 FILE *fp=NULL; char id60; int i=0; int changeIndex=0; int in

22、dex=0; printf("請(qǐng)輸入要修改的學(xué)生學(xué)號(hào):"); scanf("%s",id); for (i=0;i<Number;i+) if (strcmp(id,sti.ID)=0) changeIndex=i; /保存要修改的人的下標(biāo) k=1; break; if(k=1) printf("t姓名t學(xué)號(hào)t高數(shù)t英語tc語言t計(jì)算機(jī)導(dǎo)論n"); printf("t%st%st%dnn",stchangeI,stchangeIndex.ID,stchangeIndex.score,stch

23、angeIndex.score,stchangeIndex.score,stchangeIndex.score); printf("請(qǐng)重新輸入該學(xué)生信息"); printf("姓名:"); scanf("%s",stchangeI); printf("學(xué)號(hào):"); scanf("%s",stchangeIndex.ID); printf("高數(shù):"); scanf("%d",&stchangeIndex.score); print

24、f("英語:"); scanf("%d",&stchangeIndex.score); printf("c語言:"); scanf("%d",&stchangeIndex.score); printf("計(jì)算機(jī)導(dǎo)論:"); scanf("%d",&stchangeIndex.score); printf("t=>修改成功n"); else if(k=0) printf("=>無此人nnn"); /信息

25、修改后重新更新文件里面的數(shù)據(jù) 以保持?jǐn)?shù)據(jù)一致性 fp=fopen("C:/student.dat","wb"); for (i=0;i<Number;i+) fwrite(&sti,sizeof(struct student),1,fp); fclose(fp); k=0; void del()/刪除 int n=0; printf("1 按姓名刪除n"); printf("2 按學(xué)號(hào)刪除n"); scanf("%d",&n); switch(n) case 1: xmsc

26、(); break; case 2: xhsc(); break; void xmsc()/按姓名刪除 FILE *fp=NULL; char name60; int i=0; int j=0; printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生姓名:"); scanf("%s",name); for(i=0;i<Number;i+) if (strcmp(name,)=0) /如果查找到就刪除 for (j=i;j<Number-1;j+) stj=stj+1; Number-; printf("刪除成功;n"); k=

27、1; if(k=0) printf("=>無此人!nnn"); /將剩余數(shù)據(jù)寫入文件 重新一寫的方式打開文件 把以前的數(shù)據(jù)擦除了 fp=fopen("C:/student.dat","wb"); for (i=0;i<Number;i+) fwrite(&sti,sizeof(struct student),1,fp); fclose(fp); k=0; void xhsc()/按學(xué)號(hào)刪除 FILE *fp=NULL; char id60; int i=0; int j=0; printf("請(qǐng)輸入要?jiǎng)h除

28、的學(xué)生學(xué)號(hào):"); scanf("%s",id); for(i=0;i<Number;i+) if (strcmp(id,sti.ID)=0) /如果查找到就刪除 for (j=i;j<Number-1;j+) stj=stj+1; Number-; printf("刪除成功;n"); k=1; if(k=0) printf("=>無此人!nnn"); /將剩余數(shù)據(jù)寫入文件 重新一寫的方式打開文件 把以前的數(shù)據(jù)擦除了 fp=fopen("C:/student.dat","wb&

29、quot;); for (i=0;i<Number;i+) fwrite(&sti,sizeof(struct student),1,fp); fclose(fp); k=0;void chazhao()/查找學(xué)生 int n=0; printf("1 按姓名查找n"); printf("2 按學(xué)號(hào)查找n"); printf("3 組合查找n"); scanf("%d",&n); switch(n) case 1: xmcz(); break; case 2: xhcz(); break;ca

30、se 3: zhcz(); break; default: printf("輸入有誤,結(jié)束!n"); break; void xhcz()/按學(xué)號(hào)查找 char id7; int i=0; printf("請(qǐng)輸入要查找學(xué)生學(xué)號(hào):"); scanf("%s",id); system("cls"); for (i=0;i<Number;i+) if (strcmp(id,sti.ID)=0) printf("t姓名t學(xué)號(hào)t高數(shù)t英語tc語言t計(jì)算機(jī)導(dǎo)論n");printf("t%st

31、%st%dt%dt%dt%dn",,sti.ID,sti.score,sti.score,sti.score,sti.score); k=1; if(k=0) printf("=>對(duì)不起沒有查找出這個(gè)人!nnn"); k=0;void xmcz()/按姓名查找 char name7; int i=0; printf("請(qǐng)輸入要查找學(xué)生姓名:"); scanf("%s",name); system("cls"); for (i=0;i<Number;i+) if (strcmp(

32、name,)>=0) printf("t姓名t學(xué)號(hào)t高數(shù)t英語tc語言t計(jì)算機(jī)導(dǎo)論n");printf("t%st%st%dt%dt%dt%dn",,sti.ID,sti.score,sti.score,sti.score,sti.score); k=1; if(k=0) printf("=>對(duì)不起沒有查找出這個(gè)人!nnn"); k=0;void zhcz()/組合查找 char name7;char id7; int i=0,j=0; printf("請(qǐng)輸入要查找學(xué)生姓名:&qu

33、ot;); scanf("%s",name);printf("請(qǐng)輸入要查找學(xué)生學(xué)號(hào):"); scanf("%s",id); system("cls"); for (i=0;i<Number;i+) if (strcmp(name,)=0)if (strcmp(id,sti.ID)=0) printf("t姓名t學(xué)號(hào)t高數(shù)t英語tc語言t計(jì)算機(jī)導(dǎo)論n");printf("t%st%st%dt%dt%dt%dn",,sti.ID,sti.sc

34、ore,sti.score,sti.score,sti.score); k=1; if(k=0) printf("=>對(duì)不起沒有查找出這個(gè)人!nnn"); k=0;void add()/增加學(xué)生 int numberTemp=0; int i=0; struct student temp; /臨時(shí)保存信息 printf("請(qǐng)輸入要增加學(xué)生成績(jī)個(gè)數(shù):"); scanf("%d",&numberTemp); for(i=0;i<numberTemp;i+) printf("輸入第%d個(gè)同學(xué)信息n",i+1); printf("姓名:&q

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論