下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、封面作者:PanHongliang僅供個人學(xué)習(xí)C語言程序設(shè)計大型作業(yè)報告題目: 學(xué)生信息管理、實踐的目的和要求加深對C語言課程所學(xué)知識的理解,進(jìn)一步鞏固C語言語法規(guī)則。學(xué)會編制結(jié)構(gòu)清晰、風(fēng)格良好、數(shù)據(jù)結(jié)構(gòu)適當(dāng)?shù)腃語言程序,從而具備解決綜合性實際問題的能力。二、 實踐內(nèi)容在熟練掌握C語言的基本知識:數(shù)據(jù)類型(整形、實型、字符型、指針、數(shù)組、結(jié)構(gòu)等);運算類 型(算術(shù)運算、邏輯運算、自增自減運算、賦值運算等);程序結(jié)構(gòu)(順序結(jié)構(gòu)、判斷選擇結(jié)構(gòu)、循環(huán) 結(jié)構(gòu)) ;大程序的功能分解方法(即函數(shù)的使用)等。進(jìn)一步掌握各種函數(shù)的應(yīng)用,包括時間函數(shù)、繪 圖函數(shù),以及文件的讀寫操作等。三、 實踐任務(wù)現(xiàn)有學(xué)生成績
2、信息,內(nèi)容如下姓名 學(xué)號 語文 數(shù)學(xué) 英語張明明01677882李成友02789188張輝燦03688256王露04564577陳東明05673847請用C編寫一系統(tǒng),實現(xiàn)學(xué)生信息管理,軟件的入口界面應(yīng)包括如下幾個方面:(一)功能要求:(1)信息維護: 要求:學(xué)生信息數(shù)據(jù)要以文件的形式保存,能實現(xiàn)學(xué)生信息數(shù)據(jù)的維護。此模塊包括子模塊有:增加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息(2)信息查詢:要求:查詢時可實現(xiàn)按姓名查詢、按學(xué)號查詢3)成績統(tǒng)計:要求:A輸入任意的一個課程名(如數(shù)學(xué))和一個分?jǐn)?shù)段(如 情況。60-70),統(tǒng)計出在此分?jǐn)?shù)段的學(xué)生(4)排序:能對用戶指定的任意課程名,按成績升序或降序
3、排列學(xué)生數(shù)據(jù)并顯示排序結(jié)果(使用 表格的形式顯示排序后的輸出結(jié)果)(使用多種方法排序者,加分)(二)其它要求:(1)只能使用C語言,源程序要有適當(dāng)?shù)淖⑨專钩绦蛉菀组喿x(2)至少采用文本菜單界面(如果能采用圖形菜單界面更好)(3)學(xué)生可自動增加新功能模塊(視情況可另外加分)(4)寫出課程設(shè)計報告,具體要求見相關(guān)說明文檔四、相關(guān)程序#include stdio.h#include stdlib.h#include string.hint shoudsave=0。/* */struct studentchar num10。/*學(xué)號*/char name20。char cgrade
4、。int aveprintf(n提示:輸入錯誤!n)char neartime10。/*最近更新時間*/。typedef struct nodestruct student data struct node *next Node,*Link。void menu()*11printf(t1登記學(xué)生資料ttttt2刪除學(xué)生資料n)printf(t3查詢學(xué)生資料ttttt4修改學(xué)生資料n)printf(t5保存學(xué)生資料ttttt0退出系統(tǒng)n)。void printstart()printf(-n)void Wrong()printf(p
5、rintf(*n)void Nofind()printf(n=提示:沒有找到該學(xué)生!n)。void printc() /*本函數(shù)用于輸出中文*/printf(”學(xué)號t姓名性別英語成績數(shù)學(xué)成績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)。Node* Locate(Link l,cha
6、r findmess,char nameornum)/*該函數(shù)用于定位連表中符合要求的接點,并返回該指針*/Node *r。if(strcmp(nameornum,num)=0) /*按學(xué)號查詢*/r=l-next。while(r!=NULL)if(strcmp(r-data.num,findmess)=0)return rr=r-next。else if(strcmp(nameornum,name)=0) /*r=l-next。while(r!=NULL)if(strcmp(,findmess)=0) return r。r=r-next。return 0。void Ad
7、d(Link l) /*增加學(xué)生*/Node *p,*r,*s。char num10。r=l。s=l-next。while(r-next!=NULL)r=r-next。/*將指針置于最末尾*/while(1)printf(請你輸入學(xué)號(以0返回上一級菜單:)。scanf(%s,num)。if(strcmp(num,0)=0)break。while(s)按姓名查詢*/if(strcmp(s-data.num,num)=0)printf(=提示:學(xué)號為%s的學(xué)生已經(jīng)存在,若要修改請你選擇4修改!n,num) printstart()。printc()。printe(s)。printstart()。
8、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(請你輸入語文成績:)。scanf(%d,&p-data.cgrade)。getchar()。printf(請你輸入數(shù)學(xué)成績:)。scanf(%d,&p-data.mgrade)。getchar()。printf(請你輸入英語
9、成績:)。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。printe(p)。void Qur(Link l) /*查詢學(xué)生*/int sel。char findmess20。Node *p。if(!l-next)printf(n=提示:沒有資料可以查詢!n)。return。printf(n=1按學(xué)號查找
10、n=2按姓名查找n) scanf(%d,&sel)。if(sel=1)/*學(xué)號*/printf(請你輸入要查找的學(xué)號:)。scanf(%s,findmess)。p=Locate(l,findmess,num)。if(p)printf(tttt查找結(jié)果n)。printstart()。printc()。printstart()elseNofind()。else if(sel=2) /*姓名*/printf(請你輸入要查找的姓名:) scanf(%s,findmess)。p=Locate(l,findmess,name)。if(p)printf(tttt查找結(jié)果n)。printstart()
11、。printc()。printe(p)。printstart()。elseNofind()。elseWrong()。void Del(Link l) /*刪除*/free(p)。printf(n提示:該學(xué)生已經(jīng)成功刪除!n)int sel。Node *p,*r。char findmess20。if(!l-next)printf(n=提示:沒有資料可以刪除!n)。return。printf(n=1按學(xué)號刪除n=2按姓名刪除n)scanf(%d,&sel)。if(sel=1)printf(請你輸入要刪除的學(xué)號:)。scanf(%s,findmess)。p=Locate(l,findmess
12、,num)。if(p)r=l。while(r-next!=p)r=r-next。r-next=p-next。shoudsave=1Nofind()。elseNofind()。else if(sel=2)printf(請你輸入要刪除的姓名:)。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)成功刪除shoudsave=1。elseelse!n)printf(請你輸入新性別(原來是%s):,p-data.sex)
13、Wrong()void Modify(Link l)Node *p。char findmess20。if(!l-next)printf(n=提示:沒有資料可以修改!n)。return。printf(請你輸入要修改的學(xué)生學(xué)號:)。scanf(%s,findmess)。p=Locate(l,findmess,num)。if(p)printf(請你輸入新學(xué)號(原來是%s):,p-data.num) scanf(%s,p-data.num)。printf(請你輸入新姓名(原來是%s):,) scanf(%s,)。getchar()。scanf(%s,p-da
14、ta.sex)printf(n提示:沒有資料可以顯示!n)printf(請你輸入新的語文成績(原來是%d分):,p-data.cgrade)scanf(%d,&p-data.cgrade)。getchar()。printf(請你輸入新的數(shù)學(xué)成績(原來是%d分):,p-data.mgrade) scanf(%d,&p-data.mgrade)。getchar()。printf(請你輸入新的英語成績(原來是%d分):,p-data.egrade) scanf(%d,&p-data.egrade)。p-data.totle=p-data.egrade+p-data.cgrad
15、e+p-data.mgradep-data.ave=p-data.totle/3。printf(n=提示:資料修改成功!n)。shoudsave=1elseNofind()。void Disp(Link l)int count=0。Node *p。p=l-next。if(!p)returnprintf(tttt顯示結(jié)果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。/*用于指向分?jǐn)?shù)最高的
16、接點*/Node *r=l-next。if(!r)printf(n=提示:沒有資料可以統(tǒng)計!n)。return。pm=pe=pc=pt=pa=rwhile(r!=NULL)if(r-data.cgrade=pc-data.cgrade)pc=r。if(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)計結(jié)果 -n)printf(總分最高者
17、:t%s %d分n,,pt-data.totle)printf(平均分最高者:t%s %d分n,,pa-data.ave)printf(英語最高者:t%s %d分n,,pe-data.egrade) printf(數(shù)學(xué)最高者: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)m
18、alloc(sizeof(Node)。/*用于做新的連表*/ ll-next=NULL。if(l-next=NULL)printf(n=提示:沒有資料可以排序!n)。return。p=l-next。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。elses-next=rr-nextrr-
19、next=s。p=p-next。free(l)。l-next=ll-next。printf(n=提示:排序已經(jīng)完成!n)。void Save(Link l)FILE* fp。Node * flag=1,count=0。fp=fopen(c:student,wb)。if(fp=NULL)printf(n=提示:重新打開文件時發(fā)生錯誤exit(1)。p=l-next。while(p)!n)if(fwrite(p,sizeof(Node),1,fp)=1)p=p-next。count+。elseflag=0。break。if(flag)printf(n=提示:文件保存成功.(有%d條記錄已
20、經(jīng)保存.)n,count) shoudsave=0。fclose(fp)。void main()Link l。/*連表*/FILE *fp。/*文件指針*/int sel。char chchar jianint count=0。Node *p,*r。printf(tttt學(xué)生成績管理系統(tǒng))。l=(Node*)malloc(sizeof(Node)。l-next=NULL。r=l。fp=fopen(f:student,rb)。if(fp=NULL)printf(n=提示:文件還不存在,是否創(chuàng)建?(y/n)n)。scanf(%c,&jian)。if(jian=y|jian=Y)fp=fop
21、en(f:student,wb)。elseexit(0)。printf(n=提示:文件已經(jīng)打開,正在導(dǎo)入記錄n)。while(!feof(fp)p=(Node*)malloc(sizeof(Node)。if(fread(p,sizeof(Node),1,fp) /*將文件的內(nèi)容放入接點中*/printf(n=提示:你已經(jīng)退出系統(tǒng),再見!n)。p-next=NULLr-next=p。r=p。/*將該接點掛入連中*/count+。fclose(fp)。/*關(guān)閉文件*/printf(n=提示:記錄導(dǎo)入完畢,共導(dǎo)入%d條記錄.n,count)。while(1)menu()。printf(請你選擇操作:
22、)。scanf(%d,&sel)。if(sel=0)if(shoudsave=1) getchar()。printf(n=提示:資料已經(jīng)改動,是否將改動保存到文件中(y/n)?n) scanf(%c,&ch)。if(ch=y|ch=Y)Save(l)。breakswitch(sel)case 1:Add(l)。break。/*增加學(xué)生*/case 2:Del(l)。break。/*刪除學(xué)生*/case 3:Qur(l)。break。/*查詢學(xué)生*/case 4:Modify(l)。break。/*修改學(xué)生*/case 5:Save(l)。break。/*保存學(xué)生*/case 9
23、:printf(ttt=幫助信息=n)。breakdefault: Wrong()。getchar()。break。版權(quán)申明本文部分內(nèi)容,包括文字、圖片、以及設(shè)計等在網(wǎng)上搜集整 理。版權(quán)為潘宏亮個人所有This article includes some parts, including text, pictures, and design. Copyright is Pan Hon glia ngs pers onal own ership.用戶可將本文的內(nèi)容或服務(wù)用于個人學(xué)習(xí)、研究或欣賞,以及其他非商業(yè)性或非盈利性用途,但同時應(yīng)遵守著作權(quán)法及其他相關(guān)法律的規(guī)定,不得侵犯本網(wǎng)站及相關(guān)權(quán)利人的合法權(quán)利。除此以外,將本文任何內(nèi)容或服務(wù)用于其他用途時,須征得本人及相關(guān)權(quán) 利人的書面許可,并支付報酬。Users may use the contents or services of this article for personal study, research or appreciati on, and other non-commercial
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 委托竟拍合同(標(biāo)準(zhǔn)版)
- 2026年建筑后期維護合同
- 2025年綠色生態(tài)養(yǎng)殖項目可行性研究報告
- 2025年AI智能客服系統(tǒng)優(yōu)化項目可行性研究報告
- 2025年城市公園及綠化工程項目可行性研究報告
- 2025年垃圾焚燒發(fā)電項目建設(shè)可行性研究報告
- 紡織合同范本模板
- 海關(guān)招聘合同范本
- 產(chǎn)品包裝協(xié)議書
- 麗水市2024年浙江云和縣機關(guān)事業(yè)單位集中招聘編外用工25人筆試歷年參考題庫典型考點附帶答案詳解(3卷合一)
- GB/T 3805-2008特低電壓(ELV)限值
- GB/T 3651-2008金屬高溫導(dǎo)熱系數(shù)測量方法
- GB/T 17876-2010包裝容器塑料防盜瓶蓋
- GA/T 1567-2019城市道路交通隔離欄設(shè)置指南
- 最全《中國中鐵集團有限公司工程項目管理手冊》
- 連接器設(shè)計手冊要點
- 藥品注冊審評CDE組織機構(gòu)人員信息
- 營口水土保持規(guī)劃
- 魯迅《故鄉(xiāng)》優(yōu)秀PPT課件.ppt
- 魯迅《雪》ppt課件
- 管道(溝槽)開挖支護方案
評論
0/150
提交評論