版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、.課程設計報告題 目 學籍管理系統(tǒng) 課 程 名 稱 面向?qū)ο蟪绦蛟O計課程設計 院 部 名 稱 軟件學院 專 業(yè) 數(shù)字媒體技術班 級 1222202 學 生 姓 名 張吉發(fā) 學 號 201220220203 課程設計地點 軟件樓 課程設計學時 16 指 導 教 師 鄒國華 一 需求分析隨著計算機的發(fā)展,越來越多的學校有自己的學籍管理系統(tǒng)。這樣更方便數(shù)據(jù)的長期保存,更適用于數(shù)據(jù)的集中處理。通過這個簡單的學籍管理系統(tǒng),可以添加新成員的基本信息,通過其姓名,性別,科目,分數(shù)等信息查詢這個人的基本信息??梢院芊奖愕倪M行數(shù)據(jù)修改,以及數(shù)據(jù)刪除。本系統(tǒng)主要是通過二進制的文件讀取,進行輸入,輸出,以及修改,刪
2、除等基本功能。用結構體實行學生的基本信息。結構體student數(shù)據(jù)成員:1. 姓名 name2. 學號 num3. 語文 Chinese4. 數(shù)學 math.二 概要設計struct studentchar name60;char num20;int score;char sex30;這個結構體設計的很簡單,里面有四個數(shù)據(jù)成員。包括了學生的基本信息,姓名name用多字符來保存,學好num用多字符類型,分數(shù)score用整數(shù)定義,性別用多字符類定義。為了可以對數(shù)據(jù)進行操作,處理。我們這里用了很多函數(shù)。int dq(struct student st);void xianshi();/顯示主界面vo
3、id bc(struct student st);/保存學生信息void add(); /添加學生的信息void select();/查看學生信息void chazhao();/查找void xhcz();/學號查找void xmcz();/姓名查找void del();/刪除,里面提供了兩個函數(shù)實現(xiàn)按學號void xhsc();或是姓名void xmsc();查找來刪除void xmsc();/姓名刪除void xhsc();/學號刪除void tj();/統(tǒng)計分數(shù),求出總分和平均分void px();/排序void bjg();void bca();/打印出文件的保存字樣void fh()
4、;/文件顯示提醒struct student st300; /這個數(shù)組用來保存所有的學生信息 和文件里面的一致int Number=0; /記錄總的學生人數(shù) 也就是數(shù)組/文件里面的學生人數(shù)主函數(shù)的流程圖:創(chuàng)建一個文件夾,用結構體student輸入信息顯示菜單,把系統(tǒng)功能界面給用戶用戶輸入序號,根據(jù)輸入進行操作輸入0,結束第一次沒有文件,判斷是否創(chuàng)建文件?開始.三 詳細的設計。主函數(shù)void main()這里默認的查查在F盤是否有一個文件,student。如果有就直接在原有的基礎上添加或是修改信息。沒有就建立一個文件在磁盤中 。編輯主頁面的鏈接。主要有八個功能:1添加學生的信息2查看學生的信息3
5、查找學生的信息4刪除學生的信息5統(tǒng)計(總成績和平均分)6輸出前N名學生的成績7保存文件0退出系統(tǒng)用switch語句來實現(xiàn)對應的鏈接具體核心代碼如下:void main()int choose=0;FILE *fp=NULL;char yesorno;if(fp=fopen("F:/student.dat","rb")=NULL)cout<<("n=>提示:文件不存在,是否要創(chuàng)建一個?(y/n)n");cin>>yesorno;if(yesorno='y'|yesorno='Y
6、9;) /這里僅為了建立文件,默認的地址在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<<" =>請選擇:"scanf("%d",&choose);system("cls");switch(ch
7、oose)case 0: exit(0);/退出 break; case 1: add();fh();/增加學生成績break; case 2: select();fh();/查看學生成績break; case 3: chazhao();fh();/ 查找 break;case 4: del(); fh();/刪除 break;case 5: tj();fh();/統(tǒng)計break;case 6: px();fh();/排序 break;case 7:bca();fh();/保存 break;default:break;fflush(stdin);getchar();system("c
8、ls");然后就要對對應的功能函數(shù)實現(xiàn),里面有很多的代碼。首先是顯示主界面:讓操作的人一眼就能看到這系統(tǒng)有哪些功能 。我們根據(jù)界面的提示進入對應的數(shù)據(jù)操作主界面的流程圖:2.查看學生成績3.查找學生成績1.添加學生成績學生管理系統(tǒng)6.輸出前N名學生4.刪除學生成績5.總分、平均分void xianshi()cout<<"="cout<<" * 學生成績管理系統(tǒng) *"<<endl;cout<<"- 1 添加學生成績 *"<<endl;cout<<"
9、;- 2 查看學生成績 *"<<endl;cout<<"- 3 查找學生成績 *"<<endl;cout<<"- 4 刪除學生成績 *"<<endl;cout<<"- 5 統(tǒng)計(總成績和平均分) *"<<endl;cout<<"- 6 輸出前N名學生成績 *"<<endl;cout<<"- 7 保存*"<<endl;cout<<"*
10、0 退出*"<<endl;cout<<"="<<endl;有了這個主頁面。我們一個一個的來實現(xiàn)。第一個先把添加學生信息的函數(shù)編好,這樣我們就可以向里面存學生的而信息了,先定義一個暫時的學生類保存,這里要注意的是我們添加的是很多學生信息,要用一個數(shù)組來實現(xiàn)。而且要把添加的學生信息保存到原有的文件中:具體的代碼如下:void add()/增加學生 int numberTemp=0;int i=0;struct student temp; /臨時保存信息cout<<"請輸入要增加學生個數(shù):"cin>
11、;>numberTemp;for(i=0;i<numberTemp;i+)cout<<"輸入第"<<i+1<<"個同學信息" <<endl;cout<<"姓名:"cin>>;cout<<"學號:"cin>>temp.num;cout<<"性別:"cin>>temp.sex;cout<<"成績:"<<end
12、l;cin>>temp.score;stNumber+=temp; /將剛添加的寫入到數(shù)組bc(&temp); /將剛添加的寫入到文件cout<<"添加成功"<<endl;第二個是要查看學生的信息,這個很簡單,直接用一個for循環(huán)輸出在文件里的信息就好:void select()/查看學生 int i=0;cout<<"以下是全部學生成績"<<endl;cout<<"t姓名t學號t性別t成績n"for(i=0;i<Number;i+)cout<
13、<<<"t"<<sti.num<<"t"<<"t"<<sti.sex <<"t"<<sti.score<<endl ;第三個是查找學生的信息,做這個時需要做第二個界面菜單。可以按學號或是姓名來查找。然后,比如按學號來查是,提示用戶輸入要查找的學生的學號,for循環(huán)和strcmp()函數(shù)查。當文件里面有這個學生時,輸出來給用戶;具體如下void chazhao()/查找學生 int n=0;cout&
14、lt;<endl<<"* 1 按姓名查找"<<endl;cout<<"* 2 按學號查找" cin>>n;switch(n)case 1: xmcz();break;case 2: xhcz();break;default:cout<<"輸入有誤,結束!"<<endl;break; void xhcz()/按學號查找 ,這里運用了for循環(huán)和strcmp()查找學生。Strcmp()是一個比較函數(shù),里面兩個參數(shù)相等時入輸出結果。char id7;int i=
15、0;cout<<"請輸入要查找學生學號:"cin>>id;system("cls");printf("t姓名t學號t性別t成績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()/按姓名查找 ,運用學號查找一樣的方法 char name7;int i=0;cout<<"請輸入要查找學生姓名:"cin>>name;system("cls");cout<<"t姓名t學號t性別t成績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 ;.第四個就是刪除學生的而信息,這個大體上跟查找學生的差不多,只是在查出學生后處理的方式不一樣。查找是把學生的信息數(shù)出來就好,而刪除時則需要刪除該學生。刪除的思想是用該學生后面一個一個學生往前面的覆蓋。這里要注意的是,刪除信息后就要把信息保存到原有的文件中。具體代碼如下:void del()/刪除 int n=0;cout<<"1 按姓名刪除"<<
18、endl;cout<<"2 按學號刪除"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("請輸入要刪除的學生姓名:");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ù)寫入文件 重新一寫的方式打開文件 把以前的數(shù)據(jù)擦除了fp=fopen("F:/student.dat","wb");for (i=0;i<Number;i+)fwrite(&sti,sizeof(struct student),1,fp);/寫入一個數(shù)據(jù)塊fclose(fp);cout<<"刪除成功;"void xhsc()/按學號刪除 FILE *fp=NULL;char id60;int i=0;int j=0;cout<<&quo
20、t;請輸入要刪除的學生學號:"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ù)寫入文件 重新一寫的方式打開文件 把以前的數(shù)據(jù)擦除了fp=fopen("F:/student.dat","wb");for (i=0;i<Number;i+)fwrite(&sti,sizeof(struct student),1,fp);/寫入一個數(shù)據(jù)塊fcl
21、ose(fp);cout<<"刪除成功;"第五個是把學生的分數(shù)統(tǒng)計出來,這個也很好實現(xiàn)。就是把所有的學生的分數(shù)加在一起,然后把除以總數(shù)得出平均分:void tj()/統(tǒng)計 int i=0;double sum=0.0;for(i=0;i<Number;i+)sum+=sti.score;printf("全班總分為:%fn",sum);printf("平均分為:%fn",sum/Number); 第六個排序:把學生的信息按照分數(shù)的高低排序,然后可以輸出前幾位學生的信息輸出。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)/比較 學生的成績temp=stj;stj=stj+1;stj+1=temp; printf("你想輸出前幾名的成績:");scanf("%d",&wantNUmber);if (wantNUmber>Number)wantNUmber=Number;cout<<"t姓名t學號t性
23、別t成績"<<endl;for(i=0;i<wantNUmber;i+)cout<< <<sti.num <<sti.sex <<sti.score<<endl; 第七個是保存文件: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、這個在主程序就實現(xiàn)了,很簡單就用一個exit(0)。.四 測試主程序 void main()int choose=0;FILE *fp=NULL;char yesorno;if(fp=fopen("F:/student.dat","rb")=NULL)cout<<("n=>提示:文件不存在,是否要創(chuàng)建一個?(y/n)n");cin>>yesorno;if(yesorno='y'|yesorno='Y') /這里僅為了建立文件,默認的地址在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<<" =>請選擇:"scanf("%d",&choose)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 美容院前臺服務員工作總結
- 家居建材行業(yè)營銷工作總結
- 二零二五年度二手車交易個人信用貸款合作協(xié)議3篇
- 二零二五版消費信貸合同參考范本3篇
- 二零二五版小產(chǎn)權房屋交易協(xié)議(附裝修及配套設施承諾)6篇
- 2025版淘寶商家與消費者金融支付合同3篇
- 二零二五年度汽車租賃及維修一體化服務協(xié)議4篇
- 2025版石榴品牌授權與市場推廣合作協(xié)議3篇
- 二零二五年度個人消費貸款合同個人信息保護條款3篇
- 二零二五年度綠色蔬菜直供社區(qū)配送合同2篇
- 安全生產(chǎn)法律法規(guī)匯編(2025版)
- 2024年英語高考全國各地完形填空試題及解析
- 2024至2030年中國餐飲管理及無線自助點單系統(tǒng)數(shù)據(jù)監(jiān)測研究報告
- 2024年服裝門店批發(fā)管理系統(tǒng)軟件項目可行性研究報告
- 體育概論(第二版)課件第三章體育目的
- T-GDASE 0042-2024 固定式液壓升降裝置安全技術規(guī)范
- 香港朗文4B單詞及句子
- 運動技能學習與控制課件第五章運動中的中樞控制
- 財務部規(guī)范化管理 流程圖
- 斷絕關系協(xié)議書范文參考(5篇)
- 農(nóng)村集體“三資”管理流程圖
評論
0/150
提交評論