C語(yǔ)言程序設(shè)計(jì)告訴先生管理系統(tǒng)_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)告訴先生管理系統(tǒng)_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)告訴先生管理系統(tǒng)_第3頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C 語(yǔ)言程序設(shè)計(jì)大型作業(yè)報(bào)告題目:學(xué)生信息管理一、實(shí)踐的目的和要求加深對(duì) C 語(yǔ)言課程所學(xué)知識(shí)的理解,進(jìn)一步鞏固C 語(yǔ)言語(yǔ)法規(guī)則。學(xué)會(huì)編制結(jié)構(gòu)清晰、風(fēng)格良好、數(shù)據(jù)結(jié)構(gòu)適當(dāng)?shù)腃語(yǔ)言程序,從而具備解決綜合性實(shí)際問(wèn)題的能力。二、實(shí)踐內(nèi)容在熟練掌握 C 語(yǔ)言的基本知識(shí):數(shù)據(jù)類型(整形、實(shí)型、字符型、指針、數(shù)組、結(jié)構(gòu)等);運(yùn)算類 型(算術(shù)運(yùn)算、邏輯運(yùn)算、自增自減運(yùn)算、賦值運(yùn)算等);程序結(jié)構(gòu)(順序結(jié)構(gòu)、判斷選擇結(jié)構(gòu)、循環(huán)結(jié) 構(gòu));大程序的功能分解方法(即函數(shù)的使用)等。進(jìn)一步掌握各種函數(shù)的應(yīng)用,包括時(shí)間函數(shù)、繪圖函 數(shù),以及文件的讀寫操作等。三、實(shí)踐任務(wù)現(xiàn)有學(xué)生成績(jī)信息,內(nèi)容如下姓名學(xué)號(hào)語(yǔ)文數(shù)學(xué)英語(yǔ)張明明

2、01677882李成友02789188張輝燦03688256王露04564577陳東明05673847請(qǐng)用 C 編寫一系統(tǒng),實(shí)現(xiàn)學(xué)生信息管理,軟件的入口界面應(yīng)包括如下幾個(gè)方面:(一)功能要求:(1)信息維護(hù):要求:學(xué)生信息數(shù)據(jù)要以文件的形式保存,能實(shí)現(xiàn)學(xué)生信息數(shù)據(jù)的維護(hù)。此模塊包括子模塊有:增 加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息2)信息查詢:要求:查詢時(shí)可實(shí)現(xiàn)按姓名查詢、按學(xué)號(hào)查詢(3)成績(jī)統(tǒng)計(jì):要求: A 輸入任意的一個(gè)課程名(如數(shù)學(xué))和一個(gè)分?jǐn)?shù)段(如60-70 ),統(tǒng)計(jì)出在此分?jǐn)?shù)段的學(xué)生情況。(4)排序:能對(duì)用戶指定的任意課程名,按成績(jī)升序或降序排列學(xué)生數(shù)據(jù)并顯示排序結(jié)果(使用表 格的

3、形式顯示排序后的輸出結(jié)果)(使用多種方法排序者,加分)(二)其它要求:(1)只能使用 C 語(yǔ)言,源程序要有適當(dāng)?shù)淖⑨?,使程序容易閱讀(2)至少采用文本菜單界面(如果能采用圖形菜單界面更好)(3)學(xué)生可自動(dòng)增加新功能模塊(視情況可另外加分)(4)寫出課程設(shè)計(jì)報(bào)告,具體要求見(jiàn)相關(guān)說(shuō)明文檔四、相關(guān)程序#include "stdio.h"#include "stdlib.h"#include "string.h"int shoudsave=0; /* */struct studentchar num10;/* 學(xué)號(hào) */char name20

4、;char sex4;int cgrade;int mgrade;int egrade;int totle;int ave;char neartime10;/* 最近更新時(shí)間 */;typedef struct nodestruct student data;struct node *next;Node,*Link;void menu()printf("*11);printf("t1 登記學(xué)生資料 ttttt2 刪除學(xué)生資料 n");printf("t3 查詢學(xué)生資料 ttttt4 修改學(xué)生資料 n");printf("t5 保存學(xué)生

5、資料 ttttt0 退出系統(tǒng) n");printf("*n");void printstart()printf("n");void Wrong()printf("n=>提示 :輸入錯(cuò)誤 !n");void Nofind()printf("n=>提示 :沒(méi)有找到該學(xué)生 !n");void printc() /* 本函數(shù)用于輸出中文 */printf(”學(xué)號(hào)t姓名 性別 英語(yǔ)成績(jī) 數(shù)學(xué)成績(jī)C語(yǔ)言成績(jī) 總分 平均分n");void printe(Node *p)/* 本函數(shù)用于輸出英文 *

6、/printf("%-12s%st%st%dt%dt%dt%dt%dn",p->data.num,p->,p->data.sex,p->data.egrade,p->data.mgrade,p->data.cgrade,p-> data.totle,p->data.ave);Node* Locate(Link l,char findmess,char nameornum) /*該函數(shù)用于定位連表中符合要求的接點(diǎn),并返回該指針 */Node *r;if(strcmp(nameornum,"num&qu

7、ot;)=0) /*按學(xué)號(hào)查詢 */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(r->,findmess)=0) return r;r=r->next;return 0;void Add(Link l) /* 增加學(xué)生 */Node *p,*r,*s;

8、char num10;r=l;s=l->next;while(r->next!=NULL)r=r->next; /* 將指針置于最末尾 */while(1)printf(" 請(qǐng)你輸入學(xué)號(hào) (以'0' 返回上一級(jí)菜單 :)");scanf("%s",num);if(strcmp(num,"0")=0)break;while(s)if(strcmp(s->data.num,num)=0)printf("=> 提示 :學(xué)號(hào)為 '%s' 的學(xué)生已經(jīng)存在 ,若要修改請(qǐng)你選擇

9、 '4 修改 '!n",num); printstart();printc();printe(s);printstart();printf("n");return;s=s->next;p=(Node *)malloc(sizeof(Node);strcpy(p->data.num,num);printf(" 請(qǐng)你輸入姓名 :");scanf("%s",p->);getchar();printf(" 請(qǐng)你輸入性別 :");scanf("%s&qu

10、ot;,p->data.sex);getchar();printf(" 請(qǐng)你輸入語(yǔ)文成績(jī) :");scanf("%d",&p->data.cgrade);getchar();printf(" 請(qǐng)你輸入數(shù)學(xué)成績(jī) :"); scanf("%d",&p->data.mgrade);getchar();printf(" 請(qǐng)你輸入英語(yǔ)成績(jī) :");scanf("%d",&p->data.egrade);getchar();p->da

11、ta.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) /* 查詢學(xué)生 */int sel;char findmess20;Node *p;if(!l->next)printf("n=> 提示 :沒(méi)有資料可以查詢 !n");return;printf("n=&g

12、t;1 按學(xué)號(hào)查找 n=>2 按姓名查找 n");scanf("%d",&sel);if(sel=1)/* 學(xué)號(hào) */printf(" 請(qǐng)你輸入要查找的學(xué)號(hào) :");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p)printf("tttt 查找結(jié)果 n");printstart();printc();printe(p);printstart();elseNofind();else if(sel=2) /* 姓名 *

13、/printf(" 請(qǐng)你輸入要查找的姓名 :");scanf("%s",findmess);p=Locate(l,findmess,"name");if(p)printf("tttt 查找結(jié)果 n");printstart();printc();printe(p);printstart();elseNofind();Wrong();void Del(Link l) /* 刪除 */int sel;Node *p,*r;char findmess20;if(!l->next)printf("n=>

14、; 提示 :沒(méi)有資料可以刪除 !n");return;printf("n=>1 按學(xué)號(hào)刪除 n=>2 按姓名刪除 n");scanf("%d",&sel);if(sel=1)printf(" 請(qǐng)你輸入要?jiǎng)h除的學(xué)號(hào) :");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p)r=l;while(r->next!=p)r=r->next;!n");!n");r->next=p-&

15、gt;next;free(p);printf("n=> 提示 :該學(xué)生已經(jīng)成功刪除shoudsave=1;elseNofind();else if(sel=2)printf(" 請(qǐng)你輸入要?jiǎng)h除的姓名 :");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("n=> 提示 :該學(xué)生已經(jīng)成功刪除shou

16、dsave=1;Nofind();elseWrong();void Modify(Link l)Node *p;char findmess20;if(!l->next)printf("n=> 提示 :沒(méi)有資料可以修改 !n");return;printf(" 請(qǐng)你輸入要修改的學(xué)生學(xué)號(hào) :"); scanf("%s",findmess);p=Locate(l,findmess,"num");if(p)printf(" 請(qǐng)你輸入新學(xué)號(hào) (原來(lái)是 %s):",p->data.num)

17、;scanf("%s",p->data.num);printf(" 請(qǐng)你輸入新姓名 (原來(lái)是 %s):",p->);scanf("%s",p->);getchar();printf(" 請(qǐng)你輸入新性別 (原來(lái)是 %s):",p->data.sex); scanf("%s",p->data.sex);printf(" 請(qǐng)你輸入新的語(yǔ)文成績(jī) (原來(lái)是 %d 分 ):",p->data.cgrade); sca

18、nf("%d",&p->data.cgrade);getchar();printf(" 請(qǐng)你輸入新的數(shù)學(xué)成績(jī) (原來(lái)是 %d 分 ):",p->data.mgrade); scanf("%d",&p->data.mgrade);getchar();printf(" 請(qǐng)你輸入新的英語(yǔ)成績(jī) (原來(lái)是 %d 分 ):",p->data.egrade); scanf("%d",&p->data.egrade);p->data.totle=p-&

19、gt;data.egrade+p->data.cgrade+p->data.mgrade;p->data.ave=p->data.totle/3;printf("n=> 提示 :資料修改成功 !n");shoudsave=1;elseNofind();void Disp(Link l)int count=0;Node *p;p=l->next;if(!p)printf("n=> 提示 :沒(méi)有資料可以顯示 !n");return;printf("tttt 顯示結(jié)果 n");printstart(

20、);printc();printf("n");while(p)printe(p);p=p->next;printstart();printf("n");void Tongji(Link l)Node *pm,*pe,*pc,*pt,*pa; /* 用于指向分?jǐn)?shù)最高的接點(diǎn) */Node *r=l->next;if(!r)return ;pm=pe=pc=pt=pa=r;while(r!=NULL)if(r->data.cgrade>=pc->data.cgrade)pc=r;if(r->data.mgrade>=p

21、m->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)計(jì)結(jié)果 n");printf(" 總分最高者 :t%s %d 分 n",pt->,pt->data.totle);printf(" 平均分最高者 :t

22、%s %d 分 n",pa->,pa->data.ave);printf(" 英語(yǔ)最高者 :t%s %d 分 n",pe->,pe->data.egrade); printf(" 數(shù)學(xué)最高者 :t%s %d 分 n",pm->,pm->data.mgrade); printf("c 語(yǔ)言最高者 :t%s %d 分 n",pc->,pc->data.cgrade);printstart();void Sort

23、(Link l)Link ll;Node *p,*rr,*s;ll=(Link)malloc(sizeof(Node); /* 用于做新的連表 */ ll->next=NULL;if(l->next=NULL)printf("n=> 提示 :沒(méi)有資料可以排序 !n");return ;p=l->next;while(p)s=(Node*)malloc(sizeof(Node); /* 新建接點(diǎn)用于保存信息 */ s->data=p->data;s->next=NULL;rr=ll;while(rr->next!=NULL &a

24、mp;& rr->next->data.totle>=p->data.totle) rr=rr->next;if(rr->next=NULL)rr->next=s;elses->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;Node *p;int flag=1,count=0;fp=fopen("

25、;c:student","wb");if(fp=NULL)!n");printf("n=> 提示 :重新打開(kāi)文件時(shí)發(fā)生錯(cuò)誤exit(1);p=l->next;while(p)if(fwrite(p,sizeof(Node),1,fp)=1)p=p->next;count+;elseflag=0;break;if(flag)printf("n=> 提示 :文件保存成功 .(有 %d 條記錄已經(jīng)保存 .)n",count); shoudsave=0;fclose(fp);void main()Link l

26、;/* 連表 */FILE *fp; /* 文件指針 */int sel;char ch;char jian;int count=0;Node *p,*r;printf("tttt 學(xué)生成績(jī)管理系統(tǒng) ");l=(Node*)malloc(sizeof(Node);l->next=NULL;r=l;fp=fopen("f:student","rb");if(fp=NULL)(y/n)n");n");printf("n=> 提示 :文件還不存在,是否創(chuàng)建?scanf("%c",&jian);if(jian='y'|jian=

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論