




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C+ 課程設(shè)計(jì)報(bào)告書題目:學(xué)生成績(jī)管理系統(tǒng)專業(yè):信息與計(jì)算科學(xué)班級(jí):0208403學(xué)號(hào):020840306姓名:張亞炬任課老師: 文 軍學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告摘要: 本系統(tǒng)主要用于對(duì)學(xué)生的成績(jī)進(jìn)行管理。通過本系統(tǒng),可以將各個(gè)學(xué)生的成績(jī)記錄 輸入到系統(tǒng)中,保存到文件,便于查閱和相關(guān)管理。此外,該系統(tǒng)還能實(shí)現(xiàn)對(duì)學(xué)生成績(jī) 記錄的顯示,查詢以及插入或刪除學(xué)生的成績(jī)記錄等功能。一、 問題描述編寫一個(gè)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng)。 學(xué)生成績(jī)管理系統(tǒng)有若干學(xué)生成績(jī)記錄組成, 每個(gè)記錄由學(xué)號(hào)、姓名、性別和成績(jī)四部分組成,學(xué)號(hào)不超過 11 個(gè)字符,姓名不超過 21個(gè)字符,性別為m '(male)或
2、9;'(female),成績(jī)?yōu)閐ouble型數(shù)據(jù)。該系統(tǒng)具有以下功 能:(1) 程序開始執(zhí)行時(shí)顯示如下版權(quán)信息和主菜單:*學(xué)生成績(jī)管理系統(tǒng)*1.添加學(xué)生成績(jī)記錄*2. 顯示學(xué)生成績(jī)記錄*3.查找學(xué)生成績(jī)記錄* 4. 刪除學(xué)生成績(jī)記錄* 5. 保存學(xué)生成績(jī)記錄* 6. 加載學(xué)生成績(jī)記錄* 7. 退出學(xué)生成績(jī)管理系統(tǒng)*請(qǐng)輸入 (17):2) 通過鍵盤輸入數(shù)字 17 后,程序能夠執(zhí)行相應(yīng)的功能,執(zhí)行完后回到上述 主菜單繼續(xù)等待用戶輸入,輸入數(shù)字 7 后退出程序。3) 選擇“添加學(xué)生成績(jī)記錄”后,輸入要插入記錄的位置。按程序提示依次 輸入學(xué)號(hào),姓名,性別,成績(jī),插入記錄成功。選擇“顯示學(xué)生成績(jī)
3、記錄” ,顯示學(xué)生成績(jī)表中已有的學(xué)生記錄的個(gè)數(shù),績(jī)記錄( 5) 選擇“查找學(xué)生成績(jī)記錄” ,按提示輸入要查找的學(xué)生的學(xué)號(hào),輸入學(xué)號(hào), 若該學(xué)號(hào)存在,則輸出相應(yīng)的學(xué)生記錄,如該學(xué)號(hào)不存在,則按任意鍵返 回主菜單。( 6) 選擇“刪除學(xué)生成績(jī)記錄” ,按提示輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào),輸入學(xué)號(hào), 若改學(xué)號(hào)存在,則刪除相應(yīng)的學(xué)生記錄,如果該學(xué)號(hào)不存在,則按任意鍵 返回主菜單。( 7) 選擇“保存學(xué)生成績(jī)記錄” ,系統(tǒng)會(huì)將已有的學(xué)生記錄保存在默認(rèn)的文件 名為 fname.txt 的文件中。( 8) 選擇“加載學(xué)生成績(jī)記錄” ,系統(tǒng)會(huì)提示輸入文件名,輸入默認(rèn)的文件名為 fname.txt ,則可將文件中的相
4、關(guān)信息導(dǎo)出。( 9) 選擇“退出學(xué)生成績(jī)管理系統(tǒng)” ,按任意鍵退出系統(tǒng)。解決方案這是一個(gè)很實(shí)際的編程實(shí)例。 編程要求很詳細(xì), 內(nèi)容也比較多, 有一定難度。 首先,學(xué)生成績(jī)記錄是一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu),至少應(yīng)包括學(xué)號(hào),姓名,性別和成 績(jī)。所以,必須建立一個(gè)類stude nt,用來記錄學(xué)號(hào),姓名,性別和成績(jī)。此外還得建立一個(gè)類stuscore,用來記錄多個(gè)學(xué)生的成績(jī)記錄。1、建立類學(xué)生類 student,它至少包括學(xué)號(hào)number,姓名name,性別sex,成績(jī)chengji。具體如下:class studentpublic:char name21;/姓名char number11;/學(xué)號(hào)char s
5、ex; / 性別double chengji; /成績(jī)student *next;/類指針,用來指向下一個(gè)記錄/輸入學(xué)生成student();void init(string &Name,string &Number,char Sex,double Chengji); virtual student();函數(shù) init(string &Name,string &Number,char Sex,double Chengji) 用于輸入學(xué)生 記錄,相當(dāng)于一個(gè)注冊(cè)。其具體實(shí)現(xiàn)如下:void student:init(string &Name,string &a
6、mp;Number,char Sex,double Chengji)int len;len=Name.length(); if(len>20)len=20;Name.copy(name,len,0); namelen=0;len=Number.length(); if(len>10)len=10;Number.copy(number,len,0); numberlen=0;sex=(sex='m')?'m':'f'); chengji=Chengji;2、建立學(xué)生成績(jī)記錄類 stuscore,該類是學(xué)生成績(jī)記錄的集合。其成員函數(shù)則是問
7、題中要求的添加、顯示、查找、刪除、保存、導(dǎo)出等各種操作。改 類具體如下:class stuscorestudent* head;public:bool add_record();/ 添加學(xué)生成績(jī)記錄void display_record();/ 顯示學(xué)生成績(jī)記錄int length();/ 學(xué)生成績(jī)記錄個(gè)數(shù)bool delete_record();/ 刪除學(xué)生成績(jī)記錄void save_record();/ 保存學(xué)生成績(jī)記錄void load_record();/ 加載學(xué)生成績(jī)記錄bool find_record();/ 查找學(xué)生成績(jī)記錄 stuscore();virtual stuscore
8、();現(xiàn)在就要編寫各個(gè)功能的函數(shù)實(shí)體了: 添加學(xué)生成績(jī)記錄 add_record() ,建立一個(gè)鏈表: bool stuscore:add_record()int i;int j=1;string Name;string Number;char Sex;double Chengji;student *newnode,*current,*previous; current=previous=head;cout<<" 請(qǐng)輸入插入的位置 :"cin>>i;if(i<=0|i>length()+1)cout<<" 輸入的位置
9、不正確 !" return false;cout<<" 請(qǐng)輸入學(xué)號(hào) :" cin>>Number;cout<<" 請(qǐng)輸入姓名 :"cin>>Name;cout<<" 請(qǐng)輸入性別 :"cin>>Sex;cout<<" 請(qǐng)輸入成績(jī) :"cin>>Chengji;newnode=new student();newnode->init(Name,Number,Sex,Chengji);newnode->ne
10、xt=null;if(!newnode)cout<<" 內(nèi)存已滿 !"return false;if(i=1)newnode->next=head;head=newnode;return true;elsewhile(current&&j<i)previous=current; current=current->next; j+;newnode->next=current;previous->next=newnode;return true; 顯示學(xué)生成績(jī)記錄 display_record() ,具體實(shí)現(xiàn)如下:voi
11、d stuscore:display_record()student*current;current=head;cout<<" 表中有 "<<length()<<" 條記錄 !n"if(length()cout<<setiosflags(ios:left)<<setw(15)<<" 學(xué)號(hào) "<<setw(15)<<" 姓名 "<<setw(12)<<" 性別 "<<
12、setw(5)<<" 成績(jī) "<<endl;while(current)cout<<current;current=current->next;另外,對(duì) <<運(yùn)算符進(jìn)行了重載,這樣就可以直接用cout 輸出學(xué)生成績(jī)記錄,函數(shù)重載如下:ostream&operator<<(ostream&output,const student *addr) output<<setiosflags(ios:left)<<setw(15)<<addr->number<
13、;<setw(15)<<addr->name<<setw(12)<<addr->sex<<setw(5)<<addr->chengji<<endl;return output; 查找學(xué)生成績(jī)記錄 find_record() ,具體實(shí)現(xiàn)如下:bool stuscore:find_record() student *current,*previous;string Number;cout<<" 請(qǐng)輸入要查找的學(xué)生的學(xué)號(hào) :"cin>>Number;curren
14、t=previous=head;while(current)if(current->number=Number)cout<<setiosflags(ios:left)<<setw(15)<<" 學(xué)號(hào) "<<setw(15)<<"姓名 "<<setw(12)<<" 性別 "<<setw(5)<<" 成績(jī) "<<endl;cout<<current;return true;elsep
15、revious=current;current=current->next;if(!current)cout<<" 沒有找到該學(xué)生 !"return false;return true; 刪除學(xué)生記錄 delete_record() ,具體實(shí)現(xiàn)如下:bool stuscore:delete_record()string s;student*current,*previous;current=previous=head;"<<endl;cout<<" 成績(jī)表中有 "<<length()<
16、<" 個(gè)學(xué)生成績(jī)記錄if(!length()cout<<" 學(xué)生成績(jī)表已空 !n"return false;elsecout<<" 請(qǐng)輸入要?jiǎng)h除的學(xué)生記錄的學(xué)號(hào) :"cin>>s;while(current)if(current->number=s)if(current=head)head=head->next;delete current;cout<<" 刪除成功 !"return true;elseprevious->next=current->
17、;next;delete current;cout<<" 刪除成功 !"return true;elseprevious=current;current=current->next;if(!current)cout<<" 沒有找到該學(xué)號(hào)所對(duì)應(yīng)的學(xué)生記錄 !"return false;return true; 保存學(xué)生成績(jī)記錄 save_record() ,具體實(shí)現(xiàn)如下: void stuscore:save_record()ofstream file;student*current=head;file.open("
18、./fname.txt",ios:out);if(!file)cout<<" 打開文件失敗 !"cin.get();elsewhile(current)if(file&&!file.eof()file.write(char*)current,sizeof(*current);current=current->next;cout<<" 保存完成 !"file.close(); 加載學(xué)生成績(jī)記錄 load_record() ,具體實(shí)現(xiàn)如下:void stuscore:load_record()ifstr
19、eam file;char fname20;student *n;n=new student();cout<<" 請(qǐng)輸入要打開的文件名 (fname.txt):"cin>>fname;file.open(fname,ios:in);if(!file)cout<<" 文件打開失敗 !"cin.get();else姓名 成績(jī) "<<endl;cout<<setiosflags(ios:left)<<setw(21)<<""<<setw
20、(11)<<" 學(xué)號(hào) "<<setw(5)<<" 性別 "<<setw(5)<<" while(file&&file.peek()!=EOF)file.read(char*)n,sizeof(*n);cout<<n<<endl;file.close(); 計(jì)算學(xué)生成績(jī)記錄的個(gè)數(shù) length() ,具體實(shí)現(xiàn)如下:int stuscore:length()int j=0;student*current;current=head;while(current)current=current->next;j+;return j;程序運(yùn)行結(jié)果:王采單界面添加學(xué)生成績(jī)記錄:0-亞炬 DJ2OS4 D30 K + DebiiR 5tudent see res. ei e號(hào)£盤爰 -3插罕姓性冼邑 遙 ZKXA入XX住 2請(qǐng)憊備於12TH 顯示學(xué)生成績(jī)記錄: 按照所示再添加幾個(gè)學(xué)生成績(jī)記錄,顯示結(jié)果為:查找學(xué)生成績(jī)記錄:刪除學(xué)生成績(jī)記錄:O *"a尋功1刪除記錄后再顯示學(xué)生成績(jī)記錄:保存學(xué)生成績(jī)記錄:J ifc-S-性:了IF
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)村土地租賃與農(nóng)產(chǎn)品訂單合同
- 二零二五年度美甲店知識(shí)產(chǎn)權(quán)保護(hù)合作協(xié)議
- 二零二五年度高端派遣出國勞務(wù)合同模板(IT領(lǐng)域)
- 2025年度貓咪寵物智能領(lǐng)養(yǎng)與買賣合同
- 二零二五年度醫(yī)療健康行業(yè)員工入職保密及服務(wù)合同
- 2025福建福州市建筑設(shè)計(jì)院有限責(zé)任公司招聘22人筆試參考題庫附帶答案詳解
- 2025廣西貴港市金融投資發(fā)展集團(tuán)有限公司招聘4人筆試參考題庫附帶答案詳解
- 交通運(yùn)輸系統(tǒng)規(guī)劃知到智慧樹章節(jié)測(cè)試課后答案2024年秋黑龍江工程學(xué)院
- 2025年河北保定鈔票紙業(yè)有限公司人員招聘29名筆試參考題庫附帶答案詳解
- 2025年華電煤業(yè)集團(tuán)有限公司校園招聘筆試參考題庫附帶答案詳解
- DB37T-住宅小區(qū)供配電設(shè)施建設(shè)標(biāo)準(zhǔn)編制說明
- GB/T 41869.4-2024光學(xué)和光子學(xué)微透鏡陣列第4部分:幾何特性測(cè)試方法
- 食品飲料行業(yè)酒類2025年度策略報(bào)告:拐點(diǎn)漸近行穩(wěn)致遠(yuǎn)
- 工作計(jì)劃-2024年學(xué)校工會(huì)工作計(jì)劃
- 秦朝文書課件
- ISO22000食品管理體系2023年度內(nèi)審全套資料
- 2024-2030年中國街舞培訓(xùn)行業(yè)發(fā)展趨勢(shì)及競(jìng)爭(zhēng)格局分析報(bào)告
- DB32-T 2197-2022 水文自動(dòng)測(cè)報(bào)系統(tǒng)數(shù)據(jù)傳輸規(guī)約
- 油田勘測(cè)設(shè)計(jì)行業(yè)發(fā)展概況及未來三年行業(yè)發(fā)展趨勢(shì)預(yù)測(cè)
- 機(jī)床設(shè)備質(zhì)量保證協(xié)議(2024版)3篇
- 致病菌引起的食品安全事件
評(píng)論
0/150
提交評(píng)論