學(xué)生成績(jī)管理系統(tǒng) C語(yǔ)言課程設(shè)計(jì)_第1頁(yè)
學(xué)生成績(jī)管理系統(tǒng) C語(yǔ)言課程設(shè)計(jì)_第2頁(yè)
學(xué)生成績(jī)管理系統(tǒng) C語(yǔ)言課程設(shè)計(jì)_第3頁(yè)
學(xué)生成績(jī)管理系統(tǒng) C語(yǔ)言課程設(shè)計(jì)_第4頁(yè)
學(xué)生成績(jī)管理系統(tǒng) C語(yǔ)言課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(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、學(xué)生成績(jī)管理系統(tǒng) 1.程設(shè)計(jì)的目的通過(guò)本程序可以訓(xùn)練學(xué)生程序設(shè)計(jì)的基本技能,讓學(xué)生掌握C程序各種函數(shù)的應(yīng)用。同時(shí)也大大增加了學(xué)生的學(xué)習(xí)興趣,提高了學(xué)生的編程能力。進(jìn)一步掌握和利用C語(yǔ)言進(jìn)行程設(shè)計(jì)的能力;進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程設(shè)計(jì)的思想和方法;初步掌握開(kāi)發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法;學(xué)會(huì)調(diào)試一個(gè)較長(zhǎng)程序的基本方法;掌握書(shū)寫(xiě)課程設(shè)計(jì)開(kāi)發(fā)文檔的能力.2設(shè)計(jì)方案論證2.1設(shè)計(jì)思路(1)輸入學(xué)生初始信息模塊:其中包括學(xué)生的姓名、學(xué)號(hào)和性別以及學(xué)生的語(yǔ)文、數(shù)學(xué)、英語(yǔ)和計(jì)算機(jī)等相關(guān)信息;可用函數(shù)cin(stu *p1)來(lái)實(shí)現(xiàn)此操作。當(dāng)正確輸入存在的學(xué)生學(xué)號(hào),系統(tǒng)進(jìn)行判斷時(shí),提示存在此學(xué)生。

2、60;(2)查詢(xún)模塊:可用stu *lookdata(stu *p1)  來(lái)實(shí)現(xiàn)。找到就輸出此學(xué)生全部信息包括學(xué)生的語(yǔ)文、數(shù)學(xué)、英語(yǔ)和計(jì)算機(jī)等的成績(jī)。當(dāng)正確輸入查找信息時(shí),系統(tǒng)卻不能夠得到所要查找的學(xué)生信息以及學(xué)生的語(yǔ)文、數(shù)學(xué)、英語(yǔ)和計(jì)算機(jī)的成績(jī)。(3)插入模塊:可用insert(  )函數(shù)來(lái)實(shí)現(xiàn)。其中通過(guò)學(xué)號(hào)的大小來(lái)比較的,并且以此來(lái)排序。當(dāng)我們輸入插入信息時(shí),系統(tǒng)卻提示插入不進(jìn)數(shù)據(jù)。(4) 學(xué)生的信息以及成績(jī):通過(guò)學(xué)生的姓名來(lái)查看學(xué)生的語(yǔ)文、數(shù)學(xué)、英語(yǔ)和計(jì)算機(jī)等相關(guān)成績(jī),同時(shí)也可以分別通過(guò)caverage() 、maverage() 、eaverage() 和comav

3、erage()  來(lái)輸出語(yǔ)文、數(shù)學(xué)、英語(yǔ)和計(jì)算機(jī)等成績(jī)的平均分?jǐn)?shù)、最高和最低分?jǐn)?shù)。(5)退出系統(tǒng):學(xué)生成績(jī)管理系統(tǒng)可用一個(gè)函數(shù)exit()來(lái)實(shí)現(xiàn),首先將信息保存到文件中,釋放動(dòng)態(tài)創(chuàng)建的內(nèi)存空間,再退出此程序。退退出系統(tǒng)信信息及成績(jī)插插入模塊查查詢(xún)模塊初初始信息模塊3程序源代碼 #include <stdio.h>#include <stdlib.h>#include <string.h>#include <dos.h>#include<ctype.h>#include<conio.h>#include<st

4、ddef.h>#include<time.h>#define PRINT1 textcolor(12); cprintf("r 請(qǐng)按任意鍵返回主菜單nr");textcolor(10); getch();clrscr(); break;int shoudsave=0;struct student /* 學(xué)生信息結(jié)構(gòu)體定義*/char num10,name20,sex4;int score1,score2,score3,totle,ave;typedef struct nodestruct student data;struct node *next;Nod

5、e,*L;void print1() cprintf("r=");void print2() cprintf("nr 1.輸入學(xué)生信息 在這里你可以按照提示輸入學(xué)生的學(xué)號(hào),姓名,性別及各科成績(jī).n"); cprintf("nr 2.注銷(xiāo)學(xué)生信息 在這里你可以按照學(xué)號(hào)或姓名將某一名學(xué)生的信息從本系統(tǒng)中刪除.n"); cprintf("nr 3.查詢(xún)學(xué)生信息 在這里你可以按照學(xué)號(hào)或姓名查詢(xún)某一名學(xué)生的信息.n"); cprintf("nr 4.修改學(xué)生信息 在這里你可以按照提示修改某一名學(xué)生的學(xué)號(hào),姓名,性別

6、及各科成績(jī)."); cprintf("nr 5.學(xué)生信息排序 在這里你可以看到所有學(xué)生的成績(jī)成績(jī).n"); cprintf("nr 6.學(xué)生信息統(tǒng)計(jì) 在這里本系統(tǒng)將為你顯示所有科目的最高分及最低分所得學(xué)生.n"); cprintf("nr 7.顯示學(xué)生信息 在這里你可以看到系統(tǒng)中所有學(xué)生的信息.n"); cprintf("nr 8.保存學(xué)生信息 在這里你可以將學(xué)生你信息保存到內(nèi)存中.n"); cprintf("nr 9.幫助信息 在這里你可以獲得幫助信息.n"); cprintf(&q

7、uot;nr 0.退出系統(tǒng) 在這里選擇是否保存后,你可以安全的退出本系統(tǒng).nnr ");void menu() cprintf("nrxc9xcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcbxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdx

8、cdxcdxcdxcdxcdxbb"); cprintf("rxba 學(xué)生信息導(dǎo)入 xba 學(xué)生信息處理 xba"); cprintf("rxba_xba_xba"); cprintf("rxba 1->輸入學(xué)生信息 xba 6->學(xué)生信息統(tǒng)計(jì) xba"); cprintf("rxba 2->注銷(xiāo)學(xué)生信息 xba 7->顯示學(xué)生信息 xba"); cprintf("rxba 3->查詢(xún)學(xué)生信息 xba 8->保存學(xué)生信息 xba"); cprintf

9、("rxba 4->修改學(xué)生信息 xba 9->幫助信息 xba"); cprintf("rxba 5->學(xué)生信息排序 xba 0->退出系統(tǒng) xba"); cprintf("rxc8xcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcaxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcd

10、xcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxbc");void wrong() cprintf("nr輸入錯(cuò)誤!請(qǐng)驗(yàn)證后重新輸入.n");void notfind()cprintf("nr該學(xué)生信息不存在!請(qǐng)驗(yàn)證后重新輸入.n");void printc() /* 此函數(shù)用于輸出中文格式 */cprintf("r 學(xué)號(hào) 姓名 性別 英語(yǔ)成績(jī) 數(shù)學(xué)成績(jī) C語(yǔ)言成績(jī) 總分 平均分n ");void printe(Node *p) /* 此函數(shù)用于

11、輸出英文格式 */cprintf(" %-8s%-10s%5s%12d%13d%13d%8d%9dnr",p->data.num,p->,p->data.sex,p->data.score3,p->data.score2,p->data.score1,p->data.totle,p->data.ave);Node* Locate(L l,char findinfo,char nameornum) /* 該函數(shù)用于定位連表中符合要求的接點(diǎn),并返回該指針 */Node *r;if(strcmp(nameornum

12、,"num")=0) /* 按學(xué)號(hào)查詢(xún) */r=l->next;while(r!=NULL)if(strcmp(r->data.num,findinfo)=0)return r;r=r->next;else if(strcmp(nameornum,"name")=0) /* 按姓名查詢(xún) */r=l->next;while(r!=NULL)if(strcmp(r->,findinfo)=0)return r;r=r->next;return 0;void input(L l) /* 增加學(xué)生 */ No

13、de *p,*r,*s; char num10; r=l; s=l->next;while(r->next!=NULL) r=r->next; /* 將指針置于最末尾 */while(1) cprintf("r如果輸入完畢,請(qǐng)按任意鍵返回主菜單n"); cprintf("r如果你還想輸入,請(qǐng)按y(yes)繼續(xù)nr"); scanf("%s",num); if(strcmp(num,"y")=0) cprintf("請(qǐng)你輸入學(xué)號(hào):"); scanf("%s",

14、num); else break;while(s) if(strcmp(s->data.num,num)=0) printf("t學(xué)號(hào)為'%s'的學(xué)生已經(jīng)存在,若要修改請(qǐng)你選擇'4 修改'!n",num);print1();printc(); printe(s); print1();printf("n"); getch();return; s=s->next; p=(Node *)malloc(sizeof(Node);strcpy(p->data.num,num);cprintf("r請(qǐng)你輸入

15、姓名:");scanf("%s",p->);getchar();cprintf("r請(qǐng)你輸入性別(M OR F):");scanf("%s",p->data.sex);getchar();cprintf("r請(qǐng)你輸入c語(yǔ)言成績(jī)(0-100):");scanf("%d",&p->data.score1);getchar();cprintf("r請(qǐng)你輸入數(shù)學(xué)成績(jī)(0-100):");scanf("%d",&

16、amp;p->data.score2);getchar();cprintf("r請(qǐng)你輸入英語(yǔ)成績(jī)(0-100):");scanf("%d",&p->data.score3);getchar();p->data.totle=p->data.score3+p->data.score1+p->data.score2;p->data.ave=p->data.totle / 3; /* 信息輸入已經(jīng)完成 */p->next=NULL;r->next=p;r=p;shoudsave=1;void q

17、uery(L l) /* 查詢(xún)學(xué)生信息 */int select;char findinfo20;Node *p;if(!l->next)cprintf("n 沒(méi)有信息可以查詢(xún)!n");return;cprintf("n1=>按學(xué)號(hào)查找nr2=>按姓名查找nr");scanf("%d",&select);if(select=1) /* 學(xué)號(hào) */cprintf("r請(qǐng)你輸入要查找的學(xué)號(hào):");scanf("%s",findinfo);p=Locate(l,findinf

18、o,"num");if(p)cprintf(" 查找結(jié)果nr");print1();printc();printe(p);print1();elsenotfind();else if(select=2) /* 姓名 */cprintf("r請(qǐng)你輸入要查找的姓名:");scanf("%s",findinfo);p=Locate(l,findinfo,"name");if(p)cprintf(" 查找結(jié)果nr");print1();printc();printe(p);print

19、1();elsenotfind();elsewrong();void Delete(L l) /* 刪除學(xué)生信息 */int select;Node *p,*r;char findinfo20;if(!l->next)cprintf("n 沒(méi)有信息可以刪除!n");return;cprintf("n1=>按學(xué)號(hào)刪除nr2=>按姓名刪除nr");scanf("%d",&select);if(select=1)cprintf("r請(qǐng)你輸入要?jiǎng)h除的學(xué)號(hào):");scanf("%s&quo

20、t;,findinfo);p=Locate(l,findinfo,"num");if(p)r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);cprintf("nr該學(xué)生已經(jīng)成功刪除!n");shoudsave=1;elsenotfind();else if(select=2)cprintf("r請(qǐng)你輸入要?jiǎng)h除的姓名:");scanf("%s",findinfo);p=Locate(l,findinfo,"name"

21、;);if(p)r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);cprintf("nr該學(xué)生已經(jīng)成功刪除!n");shoudsave=1;elsenotfind();else wrong();void modify(L l) /*修改學(xué)生信息*/Node *p;char findinfo20;if(!l->next)cprintf("nr沒(méi)有信息可以修改!n");return;cprintf("r請(qǐng)你輸入要修改的學(xué)生學(xué)號(hào):");scanf(&q

22、uot;%s",findinfo);p=Locate(l,findinfo,"num");if(p)cprintf("r請(qǐng)你輸入新學(xué)號(hào)(原來(lái)是%s):",p->data.num);scanf("%s",p->data.num);cprintf("r請(qǐng)你輸入新姓名(原來(lái)是%s):",p->);scanf("%s",p->);getchar();cprintf("r請(qǐng)你輸入新性別(原來(lái)是%s):",p->

23、data.sex);scanf("%s",p->data.sex);cprintf("r請(qǐng)你輸入新的c語(yǔ)言成績(jī)(原來(lái)是%d分):",p->data.score1);scanf("%d",&p->data.score1);getchar();cprintf("r請(qǐng)你輸入新的數(shù)學(xué)成績(jī)(原來(lái)是%d分):",p->data.score2);scanf("%d",&p->data.score2);getchar();cprintf("r請(qǐng)你輸入新的英

24、語(yǔ)成績(jī)(原來(lái)是%d分):",p->data.score3);scanf("%d",&p->data.score3);p->data.totle=p->data.score3+p->data.score1+p->data.score2;p->data.ave=p->data.totle/3;cprintf("nr信息修改成功!n");shoudsave=1;elsenotfind();void display(L l) /*顯示全部學(xué)生信息*/int count=0;Node *p;p=l-

25、>next;if(!p)cprintf("nr 沒(méi)有信息可以顯示!n");return;cprintf(" 顯示結(jié)果 ");print1();printc();while(p) if(count%5=0) getch();printe(p);p=p->next;count+;print1();cprintf("n");void Statistic(L l) /*統(tǒng)計(jì)學(xué)生信息*/ Node *pm_max,*pe_max,*pc_max,*pt_max,*pa_max; /* 用于指向分?jǐn)?shù)最高的接點(diǎn) */Node *pm_m

26、in,*pe_min,*pc_min,*pt_min,*pa_min;Node *r=l->next;if(!r)cprintf("nr 沒(méi)有信息可以統(tǒng)計(jì)!n");return ;pm_max=pe_max=pc_max=pt_max=pa_max=pm_min=pe_min=pc_min=pt_min=pa_min=r;while(r!=NULL) if(r->data.score1>=pc_max->data.score1)pc_max=r;if(r->data.score1<=pc_min->data.score1)pc_mi

27、n=r;if(r->data.score2>=pm_max->data.score2)pm_max=r;if(r->data.score2<=pm_min->data.score2)pm_min=r;if(r->data.score3>=pe_max->data.score3)pe_max=r;if(r->data.score3<=pe_min->data.score3)pe_min=r;if(r->data.totle>=pt_max->data.totle)pt_max=r;if(r->data

28、.totle<=pt_min->data.totle)pt_min=r;if(r->data.ave>=pa_max->data.ave)pa_max=r;if(r->data.ave<=pa_min->data.ave)pa_min=r;r=r->next;cprintf("=統(tǒng)計(jì)結(jié)果=n");cprintf("r總分最高者: %-16s %d分n",pt_max->,pt_max->data.totle);cprintf("r平均分最高者: %-16s %d

29、分n",pa_max->,pa_max->data.ave);cprintf("r英語(yǔ)最高者: %-16s %d分n",pe_max->,pe_max->data.score3);cprintf("r數(shù)學(xué)最高者: %-16s %d分n",pm_max->,pm_max->data.score2);cprintf("rc語(yǔ)言最高者: %-16s %d分nr",pc_max->,pc_max->data.sco

30、re1);cprintf("r總分最低者: %-16s %d分n",pt_min->,pt_min->data.totle);cprintf("r平均分最低者: %-16s %d分n",pa_min->,pa_min->data.ave);cprintf("r英語(yǔ)最低者: %-16s %d分n",pe_min->,pe_min->data.score3);cprintf("r數(shù)學(xué)最低者: %-16s %d分n",pm_min-

31、>,pm_min->data.score2);cprintf("rc語(yǔ)言最低者: %-16s %d分nr",pc_min->,pc_min->data.score1);print1(); void Sort(L l)L ll;Node *p,*rr,*s; ll=(L)malloc(sizeof(Node); /* 用于做新的連表 */ll->next=NULL; if(l->next=NULL)cprintf("nr 沒(méi)有信息可以排序!n");return ; p=l->ne

32、xt; while(p)s=(Node*)malloc(sizeof(Node); /* 新建接點(diǎn)用于保存信息 */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);

33、l->next=ll->next;cprintf("nr 排序已經(jīng)完成!n");void Save(L l) /* */FILE* fp; Node *p;int flag=1,count=0; fp=fopen("c:student","wb"); if(fp=NULL)cprintf("nr 重新打開(kāi)文件時(shí)發(fā)生錯(cuò)誤!n");exit(1);p=l->next;while(p)if(fwrite(p,sizeof(Node),1,fp)=1)p=p->next;count+;elsefla

34、g=0;break;if(flag)cprintf("nr 文件保存成功.(有%d條信息已經(jīng)保存.)nr",count);shoudsave=0;fclose(fp);void main() /* */L l; /* 鏈表 */FILE *fp; /* 文件指針 */int count=0 ,i,menu_select; /*菜單選擇 */char ch ,creat;Node *p,*r;time_t it;clrscr();textmode(C80);window(1,1,80,25);textbackground(1); clrscr();textcolor(10);

35、cprintf("r 學(xué)生成績(jī)管理系統(tǒng) ");cprintf("r -天津工業(yè)大學(xué)電科063班 ") ;cprintf("r 設(shè)計(jì)人員:趙利軍,閔祖濤,張延,張參貴,付廣蓮,劉月 ");l=(Node*)malloc(sizeof(Node);l->next=NULL;r=l;fp=fopen("c:student","rb");if(fp=NULL)cprintf("nr 該文件還未存在,是否需要?jiǎng)?chuàng)建?(y/n,Y/N)nr");scanf("%c"

36、;,&creat);if(creat='y'|creat='Y')fp=fopen("c:student","wb");elseexit(0);gotoxy(9,11); textcolor(12);cprintf("nr 文件已經(jīng)打開(kāi),系統(tǒng)正在導(dǎo)入信息");for(i=0;i<6;i+) cprintf("."); sleep(1);textcolor(10);gotoxy(9,11); cprintf("n ");while(!feof(fp)p=(Node*)malloc(sizeof(Node);if(fread(p,sizeof(Node),1,fp) /* 將文件的內(nèi)容放入接點(diǎn)中 */p->next=NULL;r->next=p;r=p; /* 將該接點(diǎn)掛入連中 */count+;fclose(fp); /* 關(guān)閉文件 */gotoxy(1,3);cprintf("nr信息導(dǎo)入完畢,系統(tǒng)共導(dǎo)入%d條信息 ",count);sleep(1);while(1) menu();textcolor(12);cprintf("r現(xiàn)在時(shí)間:

溫馨提示

  • 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)論