![c語言課程設(shè)計———學(xué)生成績管理系統(tǒng)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/20/897a62eb-184f-41c8-96ae-8a8dff926f4b/897a62eb-184f-41c8-96ae-8a8dff926f4b1.gif)
![c語言課程設(shè)計———學(xué)生成績管理系統(tǒng)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/20/897a62eb-184f-41c8-96ae-8a8dff926f4b/897a62eb-184f-41c8-96ae-8a8dff926f4b2.gif)
![c語言課程設(shè)計———學(xué)生成績管理系統(tǒng)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/20/897a62eb-184f-41c8-96ae-8a8dff926f4b/897a62eb-184f-41c8-96ae-8a8dff926f4b3.gif)
![c語言課程設(shè)計———學(xué)生成績管理系統(tǒng)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/20/897a62eb-184f-41c8-96ae-8a8dff926f4b/897a62eb-184f-41c8-96ae-8a8dff926f4b4.gif)
![c語言課程設(shè)計———學(xué)生成績管理系統(tǒng)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/20/897a62eb-184f-41c8-96ae-8a8dff926f4b/897a62eb-184f-41c8-96ae-8a8dff926f4b5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、河南理工大學(xué)計算機(軟件)學(xué)院 信管1002班C語言學(xué)生成績管理系統(tǒng)程序 學(xué)院 計算機(軟件)學(xué)院 班級 信管1002班 成員 陳昊311009030212陳梁311009030213陳俊311009030214 日期 2011-9-6 C可視化程序設(shè)計報告一.設(shè)計題目學(xué)生成績管理系統(tǒng)二、課題的任務(wù):1、 所有記錄保存在一個數(shù)據(jù)文件中;2、 具備記錄添加功能;3、 查詢功能(如按學(xué)號查詢成績等);4、 計算統(tǒng)計功能(如統(tǒng)計某門課程的平均程序);5、 排序功能(如按成績排序);6、 統(tǒng)計并顯示信息功能;三課程設(shè)計目的了解軟件工程中的一些系統(tǒng)分析,模塊分析,代碼設(shè)計的概念,利用visual c+實
2、現(xiàn)學(xué)生成績管理系統(tǒng)的錄入、查詢、刪除、統(tǒng)計等基本操作,掌握C語言中的結(jié)構(gòu)體、指針、函數(shù)(系統(tǒng)函數(shù)、自定義函數(shù))、文件操作等知識。通過對系統(tǒng)的分析和設(shè)計,進一步鞏固C語言的學(xué)習(xí),以提高對開發(fā)環(huán)境。四、成員承擔(dān)的任務(wù):陳梁:完成下面子程序的編寫:a:主函數(shù)的編譯b:定位指針的Locate()函數(shù)的編譯,與調(diào)試。c:主菜單函數(shù)的編譯,及其它外部函數(shù)的編譯,與調(diào)試。 d: 任務(wù)分配,規(guī)定變量符號,及變量的初始化。 e:程序的組裝及調(diào)試。:完成下面子程序的編寫: a:統(tǒng)計數(shù)據(jù)函數(shù)的編譯。 b::查找學(xué)生記錄函數(shù)的編譯。 c:增加學(xué)生記錄的函數(shù)的編譯。 陳俊: 完成下面子程序的編寫:a:刪除函數(shù)的編譯b:
3、修改函數(shù)的編譯c:排序函數(shù)的編譯陳昊:完成下面子程序的編寫:a:顯示函數(shù)的編譯。b:歡迎界面的制作。c:保存函數(shù)的編譯五、程序流程圖1.系統(tǒng)總體結(jié)構(gòu)圖保存學(xué)生資料排序?qū)W生資料統(tǒng)計學(xué)生資料件顯示學(xué)生資料錄修改學(xué)生資料錄查詢學(xué)生資料錄刪除學(xué)生資料錄創(chuàng)建文件輸入學(xué)生資料主程序獲取幫組信息退出管理系統(tǒng)六.系統(tǒng)源代碼#include "stdio.h" #include "stdlib.h" #include "string.h" int shoudsave=0; /定義一個全局變量 struct student char num11;/學(xué)號
4、char name20;/姓名 char sex4; /性別 int cgrade; /c語言成績 int mgrade; /數(shù)學(xué)成績 int egrade; /英語成績 int totle; /總分 int ave; /平均分 char neartime10;/最近更新時間 ; typedef struct node /聲明新的結(jié)構(gòu)體類型Node struct student data; struct node *next; Node,*Link; void welcome()/歡迎界面 printf(" *n"); printf(" *歡 迎 使 用*n&qu
5、ot;); printf(" *河南理工大學(xué)大學(xué)學(xué)生成績管理系統(tǒng) *n"); printf(" *n"); printf(" 本系統(tǒng)由計算機學(xué)院 信管1002班nttt傾情奉獻n"); printf("n"); printf(" 愿我們的努力n"); printf(" 能為您的學(xué)習(xí)工作帶來方便n"); printf(" 您的支持將是我們不斷創(chuàng)新的動力n"); printf(" 祝您使用愉快!ntt如有任何疑問聯(lián)系我們ntt QQ:45327564
6、2nttTel"); void menu() /主菜單 printf("t*n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t* MMM 1<輸入學(xué)生資料> 2<刪除學(xué)生資料> MMM *n&
7、quot;); printf("t* MMM 3<查詢學(xué)生資料> 4<修改學(xué)生資料> MMM *n"); printf("t* MMM 5<顯示學(xué)生資料> 6<統(tǒng)計學(xué)生成績> MMM *n"); printf("t* MMM 7<排序?qū)W生成績> 8<保存學(xué)生資料> MMM *n"); printf("t* MMM 9<菜單導(dǎo)航> 0<退出系統(tǒng)> MMM *n"); printf("t* MMM MMM *n&q
8、uot;); printf("t* MMM MMM *n"); printf("t* MMM * MMM *n"); printf("t* MMM i 歡迎使用河南理工大學(xué)大學(xué)學(xué)生成績管理系統(tǒng)i MMM *n"); printf("t* MMM * MMM *n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t* MMM 出品人:夢幻小組 | 輔導(dǎo)老師:于金霞
9、MMM *n"); printf("t* MMM 組長:陳梁 | 夢幻組合 MMM *n"); printf("t* MMM 組員:陳梁 陳昊 陳俊 成就夢幻品質(zhì) MMM *n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t*n"); void printstart() printf("-n"); void Wrong() printf("n對不起!
10、你輸入的信息有誤!請重新輸入!n"); void Nofind() printf(" _n"); printf("nt!提示:沒有找到該學(xué)生!n"); printf(" _n"); printf("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&
11、quot;,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ù)用于定位鏈表中符合要求的接點,并返回該指針 Node *r; if(strcmp(nameornum,"num")=0) /按學(xué)號查詢 r=l->next; while(r!=
12、NULL) if(strcmp(r->data.num,findmess)=0)/將輸入學(xué)號與已有學(xué)號對比 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; /定
13、義Node型指針 char num11; 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)/將新輸入學(xué)號與已有學(xué)號對比 printf("!提示:學(xué)號為'%s'
14、;的學(xué)生已經(jīng)存在,若要修改請你選擇'4 修改'!n",num); printstart(); printc(); printe(s); printstart(); printf("n"); return; s=s->next;/指向下一個地址 p=(Node *)malloc(sizeof(Node);/在內(nèi)存中分配長度與node相同的連續(xù)空間用于存儲新數(shù)據(jù) strcpy(p->data.num,num); printf("請你輸入姓名:"); scanf("%s",p->
15、); getchar(); printf("請你輸入性別:"); scanf("%s",p->data.sex); getchar(); printf("請你輸入c語言成績:"); scanf("%d",&p->data.cgrade); getchar(); printf("請你輸入數(shù)學(xué)成績:"); scanf("%d",&p->data.mgrade); getchar(); printf("請你輸入英語成績:");
16、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; void Qur(Link l) /查詢學(xué)生 int sel; char findmess20; Node *p; if(!l->nex
17、t)/當l->next=NULL時成立 printf("n*>提示:沒有資料可以查詢!n"); return; printf("n*>1按學(xué)號查找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"
18、;); printstart(); printc(); printe(p); printstart(); else Nofind(); else if(sel=2) /姓名 printf("請你輸入要查找的姓名:"); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) printf("tttt查找結(jié)果n"); printstart(); printc(); printe(p); printstart(); else Nofind(); else Wro
19、ng(); void Del(Link l) /刪除函數(shù) 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,fin
20、dmess,"num"); if(p) r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); printf("n*>提示:該學(xué)生已經(jīng)成功刪除!n"); printf("tttt請按任意鍵返回。n"); getchar(); shoudsave=1; else Nofind(); else if(sel=2) printf("請你輸入要刪除的姓名:"); scanf("%s",findmess); p=
21、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)成功刪除!n"); shoudsave=1; else Nofind(); else Wrong(); void Modify(Link l) /修改函數(shù)模塊 Node *p; char findmess20; if(!l->next) printf("n*>提示:沒有資料可以修改!
22、n"); return; printf("請你輸入要修改的學(xué)生學(xué)號:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); void printstart1(); if(p) printf("請你輸入新學(xué)號(原來是%s):",p->data.num); scanf("%s",p->data.num); printf("請你輸入新姓名(原來是%s):",p->); scanf(&q
23、uot;%s",p->); getchar(); printf("請你輸入新性別(原來是%s):",p->data.sex); scanf("%s",p->data.sex); printf("請你輸入新的c語言成績(原來是%d分):",p->data.cgrade); scanf("%d",&p->data.cgrade); getchar(); printf("請你輸入新的數(shù)學(xué)成績(原來是%d分):",p->data.m
24、grade); scanf("%d",&p->data.mgrade); getchar(); printf("請你輸入新的英語成績(原來是%d分):",p->data.egrade); scanf("%d",&p->data.egrade); p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade; p->data.ave=p->data.totle/3; printf("n*>提示:資
25、料修改成功!n"); shoudsave=1; else Nofind(); void Disp(Link l)/顯示函數(shù)模塊 int count=0; Node *p; p=l->next; if(!p) printf("n*>提示:沒有資料可以顯示!n"); return; printf("tttt顯示結(jié)果n"); printstart(); printc(); printf("n"); while(p) printe(p); p=p->next; printstart(); printf("
26、n"); void Tongji(Link l) Node *pm,*pe,*pc,*pt,*pa; /用于指向分數(shù)最高的接點 Node *r=l->next; if(!r) printf("n*>提示:沒有資料可以統(tǒng)計!n"); return ; pm=pe=pc=pt=pa=r; while(r!=NULL) if(r->data.cgrade>=pc->data.cgrade) pc=r; if(r->data.mgrade>=pm->data.mgrade) pm=r; if(r->data.egrad
27、e>=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("*總分最高者:t%s %d分n",pt->,pt->data.totle); printf("*平均分最高者:t%s %d分n",pa->,pa->
28、;data.ave); printf("*英語最高者:t%s %d分n",pe->,pe->data.egrade); printf("*數(shù)學(xué)最高者:t%s %d分n",pm->,pm->data.mgrade); printf("*c語言最高者:t%s %d分n",pc->,pc->data.cgrade); printstart(); void Sort(Link l) Link ll; Node *p,*rr,*s; ll=(Link)ma
29、lloc(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->
30、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); l->next=ll->next; printf("n*>提示:排序已經(jīng)完成!n"); void Save(Link l) FILE* fp; Node *p; int flag=1,count=0; fp=fopen("c:student","wb"); i
31、f(fp=NULL) printf("n*>提示:重新打開文件時發(fā)生錯誤!n"); exit(1); p=l->next; while(p) if(fwrite(p,sizeof(Node),1,fp)=1) p=p->next; count+; else flag=0; break; if(flag) printf("n*>提示:文件保存成功.(有%d條記錄已經(jīng)保存.)n",count); shoudsave=0; fclose(fp); void help() printf("歡迎進入河南理工大學(xué)學(xué)生成績管理系統(tǒng)菜單
32、導(dǎo)航ntt我們將竭誠為您服務(wù)n"); printf("以下是各菜單功能簡介:"); printf("1.<輸入>:此功能用于錄入新生學(xué)號,性別,及各科成績。n"); printf("2.<刪除>:用于注銷離校學(xué)生資料。n"); printf("3.<查詢>:此功能下設(shè)兩個選項,分別用于學(xué)號查詢和姓名查詢。n"); printf("4.<修改>;用來改動已錄入的學(xué)生信息。n"); printf("5.<顯示>:用來顯示
33、所有學(xué)生信息。n"); printf("6.<統(tǒng)計>:選出總成績第一,及單科第一的學(xué)生n"); printf("7.<排序>:用來對學(xué)生成績進行排序,但不顯示。n"); printf("8.<保存>:用于存儲新錄入的學(xué)生信息,在每次操作最后必須保存。n"); printf("如您人有疑問請聯(lián)系我們"); printf("tttt請按任意鍵返回。n"); getchar(); void main() Link l;/鏈表 FILE *fp; /文件指針 int sel; char ch; char jian; int count=0; Node *p,*r; welcome(); printf("nnttttttt請按任意鍵繼續(xù)n"); getchar(); printf("tt*"); printf("tttt 學(xué)生成績管理系統(tǒng)n"); printf("tt*"); l=(Node*)malloc(sizeof(N
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年公共衛(wèi)生承包合同標準文本
- 2025合同監(jiān)控與執(zhí)行要點
- 2025年預(yù)售房產(chǎn)策劃交易協(xié)議書
- 2025年產(chǎn)品體驗協(xié)議樣本
- 2025年綿陽貨運運輸駕駛員從業(yè)資格證考試試題
- 2025年房屋貸款保險協(xié)議樣本
- 2025年合同分析模板
- 2025年信息技術(shù)咨詢聯(lián)盟合作協(xié)議書
- 2025年公司資本拓展策劃協(xié)議標準版
- 2025年玉林道路運輸貨運從業(yè)資格證考試項目
- 金蛇納瑞2025年公司年會通知模板
- GB/T 16288-2024塑料制品的標志
- 《記念劉和珍君》課件
- 中小型無人駕駛航空器垂直起降場技術(shù)要求
- 2025年公務(wù)員考試時政專項測驗100題及答案
- 北京市城市管理委員會直屬事業(yè)單位公開招聘10人高頻難、易錯點500題模擬試題附帶答案詳解
- 禁止送禮的協(xié)議書
- 2024從洞見到生意:阿里健康特色人群消費趨勢報告-阿里健康x一財商學(xué)院
- 男方欠女方錢離婚協(xié)議書范本
- 2024-2030年中國匹克球市場前景預(yù)判與未來發(fā)展形勢分析研究報告
- 《2023-2024中國區(qū)塊鏈發(fā)展年度報告》
評論
0/150
提交評論