版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.課程設(shè)計(jì)報(bào)告題 目 學(xué)籍管理系統(tǒng) 課 程 名 稱 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì) 院 部 名 稱 軟件學(xué)院 專 業(yè) 數(shù)字媒體技術(shù)班 級(jí) 1222202 學(xué) 生 姓 名 張吉發(fā) 學(xué) 號(hào) 201220220203 課程設(shè)計(jì)地點(diǎn) 軟件樓 課程設(shè)計(jì)學(xué)時(shí) 16 指 導(dǎo) 教 師 鄒國(guó)華 一 需求分析隨著計(jì)算機(jī)的發(fā)展,越來(lái)越多的學(xué)校有自己的學(xué)籍管理系統(tǒng)。這樣更方便數(shù)據(jù)的長(zhǎng)期保存,更適用于數(shù)據(jù)的集中處理。通過(guò)這個(gè)簡(jiǎn)單的學(xué)籍管理系統(tǒng),可以添加新成員的基本信息,通過(guò)其姓名,性別,科目,分?jǐn)?shù)等信息查詢這個(gè)人的基本信息??梢院芊奖愕倪M(jìn)行數(shù)據(jù)修改,以及數(shù)據(jù)刪除。本系統(tǒng)主要是通過(guò)二進(jìn)制的文件讀取,進(jìn)行輸入,輸出,以及修改,刪
2、除等基本功能。用結(jié)構(gòu)體實(shí)行學(xué)生的基本信息。結(jié)構(gòu)體student數(shù)據(jù)成員:1. 姓名 name2. 學(xué)號(hào) num3. 語(yǔ)文 Chinese4. 數(shù)學(xué) math.二 概要設(shè)計(jì)struct studentchar name60;char num20;int score;char sex30;這個(gè)結(jié)構(gòu)體設(shè)計(jì)的很簡(jiǎn)單,里面有四個(gè)數(shù)據(jù)成員。包括了學(xué)生的基本信息,姓名name用多字符來(lái)保存,學(xué)好num用多字符類型,分?jǐn)?shù)score用整數(shù)定義,性別用多字符類定義。為了可以對(duì)數(shù)據(jù)進(jìn)行操作,處理。我們這里用了很多函數(shù)。int dq(struct student st);void xianshi();/顯示主界面vo
3、id bc(struct student st);/保存學(xué)生信息void add(); /添加學(xué)生的信息void select();/查看學(xué)生信息void chazhao();/查找void xhcz();/學(xué)號(hào)查找void xmcz();/姓名查找void del();/刪除,里面提供了兩個(gè)函數(shù)實(shí)現(xiàn)按學(xué)號(hào)void xhsc();或是姓名void xmsc();查找來(lái)刪除void xmsc();/姓名刪除void xhsc();/學(xué)號(hào)刪除void tj();/統(tǒng)計(jì)分?jǐn)?shù),求出總分和平均分void px();/排序void bjg();void bca();/打印出文件的保存字樣void fh()
4、;/文件顯示提醒struct student st300; /這個(gè)數(shù)組用來(lái)保存所有的學(xué)生信息 和文件里面的一致int Number=0; /記錄總的學(xué)生人數(shù) 也就是數(shù)組/文件里面的學(xué)生人數(shù)主函數(shù)的流程圖:創(chuàng)建一個(gè)文件夾,用結(jié)構(gòu)體student輸入信息顯示菜單,把系統(tǒng)功能界面給用戶用戶輸入序號(hào),根據(jù)輸入進(jìn)行操作輸入0,結(jié)束第一次沒(méi)有文件,判斷是否創(chuàng)建文件?開(kāi)始.三 詳細(xì)的設(shè)計(jì)。主函數(shù)void main()這里默認(rèn)的查查在F盤(pán)是否有一個(gè)文件,student。如果有就直接在原有的基礎(chǔ)上添加或是修改信息。沒(méi)有就建立一個(gè)文件在磁盤(pán)中 。編輯主頁(yè)面的鏈接。主要有八個(gè)功能:1添加學(xué)生的信息2查看學(xué)生的信息3
5、查找學(xué)生的信息4刪除學(xué)生的信息5統(tǒng)計(jì)(總成績(jī)和平均分)6輸出前N名學(xué)生的成績(jī)7保存文件0退出系統(tǒng)用switch語(yǔ)句來(lái)實(shí)現(xiàn)對(duì)應(yīng)的鏈接具體核心代碼如下:void main()int choose=0;FILE *fp=NULL;char yesorno;if(fp=fopen("F:/student.dat","rb")=NULL)cout<<("n=>提示:文件不存在,是否要?jiǎng)?chuàng)建一個(gè)?(y/n)n");cin>>yesorno;if(yesorno='y'|yesorno='Y
6、9;) /這里僅為了建立文件,默認(rèn)的地址在F:/student.datfp=fopen("F:/student.dat","wb");fclose(fp);elseexit(0);elseNumber=dq(st); /要是文件只能夠已經(jīng)有數(shù)據(jù) 將數(shù)據(jù)初始化到數(shù)組中system("cls");while(true) xianshi();cout<<" =>請(qǐng)選擇:"scanf("%d",&choose);system("cls");switch(ch
7、oose)case 0: exit(0);/退出 break; case 1: add();fh();/增加學(xué)生成績(jī)break; case 2: select();fh();/查看學(xué)生成績(jī)break; case 3: chazhao();fh();/ 查找 break;case 4: del(); fh();/刪除 break;case 5: tj();fh();/統(tǒng)計(jì)break;case 6: px();fh();/排序 break;case 7:bca();fh();/保存 break;default:break;fflush(stdin);getchar();system("c
8、ls");然后就要對(duì)對(duì)應(yīng)的功能函數(shù)實(shí)現(xiàn),里面有很多的代碼。首先是顯示主界面:讓操作的人一眼就能看到這系統(tǒng)有哪些功能 。我們根據(jù)界面的提示進(jìn)入對(duì)應(yīng)的數(shù)據(jù)操作主界面的流程圖:2.查看學(xué)生成績(jī)3.查找學(xué)生成績(jī)1.添加學(xué)生成績(jī)學(xué)生管理系統(tǒng)6.輸出前N名學(xué)生4.刪除學(xué)生成績(jī)5.總分、平均分void xianshi()cout<<"="cout<<" * 學(xué)生成績(jī)管理系統(tǒng) *"<<endl;cout<<"- 1 添加學(xué)生成績(jī) *"<<endl;cout<<"
9、;- 2 查看學(xué)生成績(jī) *"<<endl;cout<<"- 3 查找學(xué)生成績(jī) *"<<endl;cout<<"- 4 刪除學(xué)生成績(jī) *"<<endl;cout<<"- 5 統(tǒng)計(jì)(總成績(jī)和平均分) *"<<endl;cout<<"- 6 輸出前N名學(xué)生成績(jī) *"<<endl;cout<<"- 7 保存*"<<endl;cout<<"*
10、0 退出*"<<endl;cout<<"="<<endl;有了這個(gè)主頁(yè)面。我們一個(gè)一個(gè)的來(lái)實(shí)現(xiàn)。第一個(gè)先把添加學(xué)生信息的函數(shù)編好,這樣我們就可以向里面存學(xué)生的而信息了,先定義一個(gè)暫時(shí)的學(xué)生類保存,這里要注意的是我們添加的是很多學(xué)生信息,要用一個(gè)數(shù)組來(lái)實(shí)現(xiàn)。而且要把添加的學(xué)生信息保存到原有的文件中:具體的代碼如下:void add()/增加學(xué)生 int numberTemp=0;int i=0;struct student temp; /臨時(shí)保存信息cout<<"請(qǐng)輸入要增加學(xué)生個(gè)數(shù):"cin>
11、;>numberTemp;for(i=0;i<numberTemp;i+)cout<<"輸入第"<<i+1<<"個(gè)同學(xué)信息" <<endl;cout<<"姓名:"cin>>;cout<<"學(xué)號(hào):"cin>>temp.num;cout<<"性別:"cin>>temp.sex;cout<<"成績(jī):"<<end
12、l;cin>>temp.score;stNumber+=temp; /將剛添加的寫(xiě)入到數(shù)組bc(&temp); /將剛添加的寫(xiě)入到文件cout<<"添加成功"<<endl;第二個(gè)是要查看學(xué)生的信息,這個(gè)很簡(jiǎn)單,直接用一個(gè)for循環(huán)輸出在文件里的信息就好:void select()/查看學(xué)生 int i=0;cout<<"以下是全部學(xué)生成績(jī)"<<endl;cout<<"t姓名t學(xué)號(hào)t性別t成績(jī)n"for(i=0;i<Number;i+)cout<
13、<<<"t"<<sti.num<<"t"<<"t"<<sti.sex <<"t"<<sti.score<<endl ;第三個(gè)是查找學(xué)生的信息,做這個(gè)時(shí)需要做第二個(gè)界面菜單??梢园磳W(xué)號(hào)或是姓名來(lái)查找。然后,比如按學(xué)號(hào)來(lái)查是,提示用戶輸入要查找的學(xué)生的學(xué)號(hào),for循環(huán)和strcmp()函數(shù)查。當(dāng)文件里面有這個(gè)學(xué)生時(shí),輸出來(lái)給用戶;具體如下void chazhao()/查找學(xué)生 int n=0;cout&
14、lt;<endl<<"* 1 按姓名查找"<<endl;cout<<"* 2 按學(xué)號(hào)查找" cin>>n;switch(n)case 1: xmcz();break;case 2: xhcz();break;default:cout<<"輸入有誤,結(jié)束!"<<endl;break; void xhcz()/按學(xué)號(hào)查找 ,這里運(yùn)用了for循環(huán)和strcmp()查找學(xué)生。Strcmp()是一個(gè)比較函數(shù),里面兩個(gè)參數(shù)相等時(shí)入輸出結(jié)果。char id7;int i=
15、0;cout<<"請(qǐng)輸入要查找學(xué)生學(xué)號(hào):"cin>>id;system("cls");printf("t姓名t學(xué)號(hào)t性別t成績(jī)n");for (i=0;i<Number;i+)if (strcmp(id,sti.num)=0)cout<<<<"t"<<sti.num<<"t"<<"t"<<sti.sex <<"t"<<
16、;sti.score<<endl ;void xmcz()/按姓名查找 ,運(yùn)用學(xué)號(hào)查找一樣的方法 char name7;int i=0;cout<<"請(qǐng)輸入要查找學(xué)生姓名:"cin>>name;system("cls");cout<<"t姓名t學(xué)號(hào)t性別t成績(jī)n"for (i=0;i<Number;i+)if (strcmp(name,)=0)cout<<<<"t"<<sti.num<&l
17、t;"t"<<"t"<<sti.sex <<"t"<<sti.score<<endl ;.第四個(gè)就是刪除學(xué)生的而信息,這個(gè)大體上跟查找學(xué)生的差不多,只是在查出學(xué)生后處理的方式不一樣。查找是把學(xué)生的信息數(shù)出來(lái)就好,而刪除時(shí)則需要?jiǎng)h除該學(xué)生。刪除的思想是用該學(xué)生后面一個(gè)一個(gè)學(xué)生往前面的覆蓋。這里要注意的是,刪除信息后就要把信息保存到原有的文件中。具體代碼如下:void del()/刪除 int n=0;cout<<"1 按姓名刪除"<<
18、endl;cout<<"2 按學(xué)號(hào)刪除"cin>>n;switch(n)case 1: xmsc();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<Numbe
19、r-1;j+)stj=stj+1;Number-;/將剩余數(shù)據(jù)寫(xiě)入文件 重新一寫(xiě)的方式打開(kāi)文件 把以前的數(shù)據(jù)擦除了fp=fopen("F:/student.dat","wb");for (i=0;i<Number;i+)fwrite(&sti,sizeof(struct student),1,fp);/寫(xiě)入一個(gè)數(shù)據(jù)塊fclose(fp);cout<<"刪除成功;"void xhsc()/按學(xué)號(hào)刪除 FILE *fp=NULL;char id60;int i=0;int j=0;cout<<&quo
20、t;請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào):"cin>>id;for(i=0;i<Number;i+)if (strcmp(id,sti.num)=0) /如果查找到就刪除for (j=i;j<Number-1;j+)stj=stj+1;Number-;/將剩余數(shù)據(jù)寫(xiě)入文件 重新一寫(xiě)的方式打開(kāi)文件 把以前的數(shù)據(jù)擦除了fp=fopen("F:/student.dat","wb");for (i=0;i<Number;i+)fwrite(&sti,sizeof(struct student),1,fp);/寫(xiě)入一個(gè)數(shù)據(jù)塊fcl
21、ose(fp);cout<<"刪除成功;"第五個(gè)是把學(xué)生的分?jǐn)?shù)統(tǒng)計(jì)出來(lái),這個(gè)也很好實(shí)現(xiàn)。就是把所有的學(xué)生的分?jǐn)?shù)加在一起,然后把除以總數(shù)得出平均分:void tj()/統(tǒng)計(jì) int i=0;double sum=0.0;for(i=0;i<Number;i+)sum+=sti.score;printf("全班總分為:%fn",sum);printf("平均分為:%fn",sum/Number); 第六個(gè)排序:把學(xué)生的信息按照分?jǐn)?shù)的高低排序,然后可以輸出前幾位學(xué)生的信息輸出。void px()/排序 struct stu
22、dent temp;int wantNUmber=0;int i=0;int j=0;for(i=0;i<Number-1;i+)for(j=i;j<Number-1;j+)if(stj.score<stj+1.score)/比較 學(xué)生的成績(jī)temp=stj;stj=stj+1;stj+1=temp; printf("你想輸出前幾名的成績(jī):");scanf("%d",&wantNUmber);if (wantNUmber>Number)wantNUmber=Number;cout<<"t姓名t學(xué)號(hào)t性
23、別t成績(jī)"<<endl;for(i=0;i<wantNUmber;i+)cout<< <<sti.num <<sti.sex <<sti.score<<endl; 第七個(gè)是保存文件:void bc(struct student *st)/保存FILE *fp=NULL;fp=fopen("C:/student.dat","ab+");fwrite(st,sizeof(struct student),1,fp);fclose(fp);最后就是退出系統(tǒng)了,
24、這個(gè)在主程序就實(shí)現(xiàn)了,很簡(jiǎn)單就用一個(gè)exit(0)。.四 測(cè)試主程序 void main()int choose=0;FILE *fp=NULL;char yesorno;if(fp=fopen("F:/student.dat","rb")=NULL)cout<<("n=>提示:文件不存在,是否要?jiǎng)?chuàng)建一個(gè)?(y/n)n");cin>>yesorno;if(yesorno='y'|yesorno='Y') /這里僅為了建立文件,默認(rèn)的地址在F:/student.datfp=fopen("F:/student.dat","wb");fclose(fp);elseexit(0);elseNumber=dq(st); /要是文件只能夠已經(jīng)有數(shù)據(jù) 將數(shù)據(jù)初始化到數(shù)組中system("cls");while(true) xianshi();cout<<" =>請(qǐng)選擇:"scanf("%d",&choose)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年技術(shù)合同登記服務(wù)流程指南
- 單位資料員年終工作總結(jié)(3篇)
- 2024年挖掘機(jī)租賃服務(wù)協(xié)議(工程專用)
- DB4106T 28-2020 規(guī)模養(yǎng)豬場(chǎng)豬瘟檢測(cè)與凈化技術(shù)規(guī)范
- DB4105T 223-2023 餐飲菜單編制規(guī)范
- 學(xué)生計(jì)劃范文簡(jiǎn)短(8篇素材稿件)
- 關(guān)于安全心得參考6篇
- 2024年建筑水電安裝合同示范文本
- 2024年電子變壓器項(xiàng)目評(píng)估分析報(bào)告
- 2024年式樣:短期汽車租賃協(xié)議(簡(jiǎn)易版)
- 趙學(xué)慧-老年社會(huì)工作理論與實(shí)務(wù)-教案
- 《世界主要海峽》
- 住院醫(yī)師規(guī)范化培訓(xùn)師資培訓(xùn)
- “三新”背景下的數(shù)學(xué)課堂教學(xué) 論文
- 中央企業(yè)商業(yè)秘密安全保護(hù)技術(shù)指引2015版
- 螺旋果蔬榨汁機(jī)的設(shè)計(jì)
- 《脊柱整脊方法》
- 會(huì)計(jì)與財(cái)務(wù)管理專業(yè)英語(yǔ)智慧樹(shù)知到答案章節(jié)測(cè)試2023年哈爾濱商業(yè)大學(xué)
- 廣東省2020年中考英語(yǔ)試題【含答案】
- 0417 教學(xué)能力大賽 公共基礎(chǔ)《英語(yǔ) 》教學(xué)實(shí)施報(bào)告 電子商務(wù)專業(yè)
- 攔砂壩施工設(shè)計(jì)方案
評(píng)論
0/150
提交評(píng)論