C++課程設(shè)計(jì)報(bào)告--學(xué)籍管理系統(tǒng)
《C++課程設(shè)計(jì)報(bào)告--學(xué)籍管理系統(tǒng)》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《C++課程設(shè)計(jì)報(bào)告--學(xué)籍管理系統(tǒng)(17頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 課程設(shè)計(jì)報(bào)告 題 目 學(xué)籍管理系統(tǒng) 課 程 名 稱(chēng) 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì) 院 部 名 稱(chēng) 軟件學(xué)院 專(zhuān) 業(yè) 數(shù)字媒體技術(shù) 班 級(jí) 1222202 學(xué) 生 姓 名 張吉發(fā) 學(xué) 號(hào) 201220220203 課程設(shè)計(jì)地點(diǎn) 軟件樓 課程設(shè)計(jì)學(xué)時(shí) 16 指 導(dǎo) 教 師
2、 鄒國(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ù)等信息查詢(xún)這個(gè)人的基本信息??梢院芊奖愕倪M(jìn)行數(shù)據(jù)修改,以及數(shù)據(jù)刪除。本系統(tǒng)主要是通過(guò)二進(jìn)制的文件讀取,進(jìn)行輸入,輸出,以及修改,刪除等基本功能。用結(jié)構(gòu)體實(shí)行學(xué)生的基本信息。 結(jié)構(gòu)體student 數(shù)據(jù)成員: 1. 姓名 name 2. 學(xué)號(hào) num 3. 語(yǔ)文 Chinese 4. 數(shù)學(xué)
3、math .二 概要設(shè)計(jì) struct student { char name[60]; char num[20]; int score; char sex[30]; }; 這個(gè)結(jié)構(gòu)體設(shè)計(jì)的很簡(jiǎn)單,里面有四個(gè)數(shù)據(jù)成員。包括了學(xué)生的基本信息,姓名name用多字符來(lái)保存,學(xué)好num用多字符類(lèi)型,分?jǐn)?shù)score用整數(shù)定義,性別用多字符類(lèi)定義。 為了可以對(duì)數(shù)據(jù)進(jìn)行操作,處理。我們這里用了很多函數(shù)。 int dq(struct student st[]); void xianshi();//顯示主界面 void bc(struct student st[]);//保存
4、學(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();//打印出文件的保存
5、字樣 void fh();//文件顯示提醒 struct student st[300]; //這個(gè)數(shù)組用來(lái)保存所有的學(xué)生信息 和文件里面的一致 int Number=0; //記錄總的學(xué)生人數(shù) 也就是數(shù)組/文件里面的學(xué)生人數(shù) 主函數(shù)的流程圖: 創(chuàng)建一個(gè)文件夾,用結(jié)構(gòu)體student輸入信息 顯示菜單,把系統(tǒng)功能界面給用戶(hù) 用戶(hù)輸入序號(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)
6、有就建立一個(gè)文件在磁盤(pán)中 。編輯主頁(yè)面的鏈接。 主要有八個(gè)功能: 1添加學(xué)生的信息 2查看學(xué)生的信息 3查找學(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
7、)\n"); cin>>yesorno; if(yesorno=='y'||yesorno=='Y') { //這里僅為了建立文件,默認(rèn)的地址在 fp=fopen("F://student.dat","wb"); fclose(fp); } else exit(0); } else { Number=dq(st); //要是文件只能夠已經(jīng)有數(shù)據(jù) 將數(shù)據(jù)初始化到數(shù)組中 } system("cls"); while(true) { xianshi(); cout<<" ====>請(qǐng)選擇:"; scanf("%d",&choose); syst
8、em("cls"); switch(choose) { 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
9、7:bca(); fh();//保存 break; default: break; } fflush(stdin); getchar(); system("cls"); } } 然后就要對(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
10、()
{
cout<<"===================================================";
cout<<" * 學(xué)生成績(jī)管理系統(tǒng) *"< 11、out<<"-- [4] 刪除學(xué)生成績(jī) ***************************"< 12、<"==================================================="< 13、數(shù):";
cin>>numberTemp;
for(i=0;i 14、ndl;
}
第二個(gè)是要查看學(xué)生的信息,這個(gè)很簡(jiǎn)單,直接用一個(gè)for循環(huán)輸出在文件里的信息就好:
void select()//查看學(xué)生
{
int i=0;
cout<<"以下是全部學(xué)生成績(jī)"< 15、來(lái)查找。然后,比如按學(xué)號(hào)來(lái)查是,提示用戶(hù)輸入要查找的學(xué)生的學(xué)號(hào),for循環(huán)和strcmp()函數(shù)查。當(dāng)文件里面有這個(gè)學(xué)生時(shí),輸出來(lái)給用戶(hù);具體如下
void chazhao()//查找學(xué)生
{
int n=0;
cout< 16、hcz()//按學(xué)號(hào)查找 ,這里運(yùn)用了for循環(huán)和strcmp()查找學(xué)生。Strcmp()是一個(gè)比較函數(shù),里面兩個(gè)參數(shù)相等時(shí)入輸出結(jié)果。
{
char id[7];
int i=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 17、 18、< 19、 xhsc();
break;
}
}
void xmsc()//按姓名刪除
{
FILE *fp=NULL;
char name[60];
int i=0;
int j=0;
printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生姓名:");
scanf("%s",name);
for(i=0;i 20、式打開(kāi)文件 把以前的數(shù)據(jù)擦除了
fp=fopen("F://student.dat","wb");
for (i=0;i 21、
if (strcmp(id,st[i].num)==0) //如果查找到就刪除
{
for (j=i;j 22、把學(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 23、NUmber=0;
int i=0;
int j=0;
for(i=0;i 24、號(hào)\t性別\t成績(jī)"< 25、很簡(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)的地址在
fp=fopen("F://student.dat","wb");
fclose(f 26、p);}
else
exit(0);
}
else
{Number=dq(st); //要是文件只能夠已經(jīng)有數(shù)據(jù) 將數(shù)據(jù)初始化到數(shù)組中}
system("cls");
while(true)
{ xianshi();
cout<<" ====>請(qǐng)選擇:";
scanf("%d",&choose);
system("cls");
switch(choose)
{case 0: exit(0);
//退出
break;
case 1: add();
fh();//增加學(xué)生成績(jī)
break;
case 2: select();
fh();//查看學(xué) 27、生成績(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("cls");}}
部分測(cè)試數(shù)據(jù)如下:
主界面
添加數(shù)據(jù)
查看所有學(xué)生:
查找 28、學(xué)生:選著1姓名查詢(xún)
刪除學(xué)生:比如按姓名來(lái)刪除
再次查看所有學(xué)生
按6進(jìn)行排序,查看前兩名學(xué)生的成績(jī)
按7保存信息。最后可以按0退出系統(tǒng)
測(cè)試完畢。
五 個(gè)人體會(huì)
通過(guò)這次課程設(shè)計(jì),我更加深刻的知道了我們學(xué)的c++和我們的生活密切相連,所以更應(yīng)該注意平時(shí)上課各種小知識(shí)點(diǎn)的積累。然后上機(jī)具體操作的情況又與筆試有很大的不同,因?yàn)橥ㄟ^(guò)鍵盤(pán)操作,更容易出錯(cuò)。所以我們平時(shí)在學(xué)習(xí)的時(shí)候,就應(yīng)該做到邊學(xué)邊編,如果很久沒(méi)有接觸到c++的編譯環(huán)境,就會(huì)出現(xiàn)不知道從何如手。
另外,程序的變化太大拉,它需要我們拓展課外知識(shí),所以?xún)H靠在課堂上的時(shí)間學(xué)好它是不現(xiàn)實(shí)的。有很多小的技巧,以及編程思想需要我們自己去領(lǐng)悟,這要求我們要有很好的自學(xué)能力。比如說(shuō)這次變成如果沒(méi)有掌握好文件輸入,打開(kāi)的話(huà),就很難編出能實(shí)現(xiàn)功能的程序,還有需要到網(wǎng)上去查很多資料,不懂就要借鑒。
編程最重要的是思路清晰,條理清楚,只有思路比較清楚的條件下,進(jìn)展才比較順利。并且,在編譯過(guò)程中遇到的錯(cuò)誤也要耐心去修改,并且記住這相應(yīng)的錯(cuò)誤代碼,以便以后遇到相同的情況,知道怎么修正。
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案