




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C+ 課程設計報告書題目:學生成績管理系統專業:信息與計算科學班級:0208403學號:020840306姓名:張亞炬任課老師: 文 軍學生成績管理系統課程設計報告摘要: 本系統主要用于對學生的成績進行管理。通過本系統,可以將各個學生的成績記錄 輸入到系統中,保存到文件,便于查閱和相關管理。此外,該系統還能實現對學生成績 記錄的顯示,查詢以及插入或刪除學生的成績記錄等功能。一、 問題描述編寫一個簡單的學生成績管理系統。 學生成績管理系統有若干學生成績記錄組成, 每個記錄由學號、姓名、性別和成績四部分組成,學號不超過 11 個字符,姓名不超過 21個字符,性別為m '(male)或
2、9;'(female),成績為double型數據。該系統具有以下功 能:(1) 程序開始執行時顯示如下版權信息和主菜單:*學生成績管理系統*1.添加學生成績記錄*2. 顯示學生成績記錄*3.查找學生成績記錄* 4. 刪除學生成績記錄* 5. 保存學生成績記錄* 6. 加載學生成績記錄* 7. 退出學生成績管理系統*請輸入 (17):2) 通過鍵盤輸入數字 17 后,程序能夠執行相應的功能,執行完后回到上述 主菜單繼續等待用戶輸入,輸入數字 7 后退出程序。3) 選擇“添加學生成績記錄”后,輸入要插入記錄的位置。按程序提示依次 輸入學號,姓名,性別,成績,插入記錄成功。選擇“顯示學生成績
3、記錄” ,顯示學生成績表中已有的學生記錄的個數,績記錄( 5) 選擇“查找學生成績記錄” ,按提示輸入要查找的學生的學號,輸入學號, 若該學號存在,則輸出相應的學生記錄,如該學號不存在,則按任意鍵返 回主菜單。( 6) 選擇“刪除學生成績記錄” ,按提示輸入要刪除的學生的學號,輸入學號, 若改學號存在,則刪除相應的學生記錄,如果該學號不存在,則按任意鍵 返回主菜單。( 7) 選擇“保存學生成績記錄” ,系統會將已有的學生記錄保存在默認的文件 名為 fname.txt 的文件中。( 8) 選擇“加載學生成績記錄” ,系統會提示輸入文件名,輸入默認的文件名為 fname.txt ,則可將文件中的相
4、關信息導出。( 9) 選擇“退出學生成績管理系統” ,按任意鍵退出系統。解決方案這是一個很實際的編程實例。 編程要求很詳細, 內容也比較多, 有一定難度。 首先,學生成績記錄是一個復雜的數據結構,至少應包括學號,姓名,性別和成 績。所以,必須建立一個類stude nt,用來記錄學號,姓名,性別和成績。此外還得建立一個類stuscore,用來記錄多個學生的成績記錄。1、建立類學生類 student,它至少包括學號number,姓名name,性別sex,成績chengji。具體如下:class studentpublic:char name21;/姓名char number11;/學號char s
5、ex; / 性別double chengji; /成績student *next;/類指針,用來指向下一個記錄/輸入學生成student();void init(string &Name,string &Number,char Sex,double Chengji); virtual student();函數 init(string &Name,string &Number,char Sex,double Chengji) 用于輸入學生 記錄,相當于一個注冊。其具體實現如下: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、建立學生成績記錄類 stuscore,該類是學生成績記錄的集合。其成員函數則是問
7、題中要求的添加、顯示、查找、刪除、保存、導出等各種操作。改 類具體如下:class stuscorestudent* head;public:bool add_record();/ 添加學生成績記錄void display_record();/ 顯示學生成績記錄int length();/ 學生成績記錄個數bool delete_record();/ 刪除學生成績記錄void save_record();/ 保存學生成績記錄void load_record();/ 加載學生成績記錄bool find_record();/ 查找學生成績記錄 stuscore();virtual stuscore
8、();現在就要編寫各個功能的函數實體了: 添加學生成績記錄 add_record() ,建立一個鏈表: 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<<" 請輸入插入的位置 :"cin>>i;if(i<=0|i>length()+1)cout<<" 輸入的位置
9、不正確 !" return false;cout<<" 請輸入學號 :" cin>>Number;cout<<" 請輸入姓名 :"cin>>Name;cout<<" 請輸入性別 :"cin>>Sex;cout<<" 請輸入成績 :"cin>>Chengji;newnode=new student();newnode->init(Name,Number,Sex,Chengji);newnode->ne
10、xt=null;if(!newnode)cout<<" 內存已滿 !"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; 顯示學生成績記錄 display_record() ,具體實現如下:voi
11、d stuscore:display_record()student*current;current=head;cout<<" 表中有 "<<length()<<" 條記錄 !n"if(length()cout<<setiosflags(ios:left)<<setw(15)<<" 學號 "<<setw(15)<<" 姓名 "<<setw(12)<<" 性別 "<<
12、setw(5)<<" 成績 "<<endl;while(current)cout<<current;current=current->next;另外,對 <<運算符進行了重載,這樣就可以直接用cout 輸出學生成績記錄,函數重載如下: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; 查找學生成績記錄 find_record() ,具體實現如下:bool stuscore:find_record() student *current,*previous;string Number;cout<<" 請輸入要查找的學生的學號 :"cin>>Number;curren
14、t=previous=head;while(current)if(current->number=Number)cout<<setiosflags(ios:left)<<setw(15)<<" 學號 "<<setw(15)<<"姓名 "<<setw(12)<<" 性別 "<<setw(5)<<" 成績 "<<endl;cout<<current;return true;elsep
15、revious=current;current=current->next;if(!current)cout<<" 沒有找到該學生 !"return false;return true; 刪除學生記錄 delete_record() ,具體實現如下:bool stuscore:delete_record()string s;student*current,*previous;current=previous=head;"<<endl;cout<<" 成績表中有 "<<length()<
16、<" 個學生成績記錄if(!length()cout<<" 學生成績表已空 !n"return false;elsecout<<" 請輸入要刪除的學生記錄的學號 :"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<<" 沒有找到該學號所對應的學生記錄 !"return false;return true; 保存學生成績記錄 save_record() ,具體實現如下: 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(); 加載學生成績記錄 load_record() ,具體實現如下:void stuscore:load_record()ifstr
19、eam file;char fname20;student *n;n=new student();cout<<" 請輸入要打開的文件名 (fname.txt):"cin>>fname;file.open(fname,ios:in);if(!file)cout<<" 文件打開失敗 !"cin.get();else姓名 成績 "<<endl;cout<<setiosflags(ios:left)<<setw(21)<<""<<setw
20、(11)<<" 學號 "<<setw(5)<<" 性別 "<<setw(5)<<" while(file&&file.peek()!=EOF)file.read(char*)n,sizeof(*n);cout<<n<<endl;file.close(); 計算學生成績記錄的個數 length() ,具體實現如下:int stuscore:length()int j=0;student*current;current=head;while(current)current=current->next;j+;return j;程序運行結果:王采單界面添加學生成績記錄:0-亞炬 DJ2OS4 D30 K + DebiiR 5tudent see res. ei e號£盤爰 -3插罕姓性冼邑 遙 ZKXA入XX住 2請憊備於12TH 顯示學生成績記錄: 按照所示再添加幾個學生成績記錄,顯示結果為:查找學生成績記錄:刪除學生成績記錄:O *"a尋功1刪除記錄后再顯示學生成績記錄:保存學生成績記錄:J ifc-S-性:了IF
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 液氧供應框架協議書
- 春蕾計劃戰略協議書
- 村民公產分配協議書
- 民事糾紛借貸協議書
- 推拿生意合伙協議書
- 朋友共同貸款協議書
- 攤位高價轉讓協議書
- 攜程租車保險協議書
- 房顫買賣提存協議書
- 收購公司土地協議書
- 中級審計師考試精彩瞬間試題及答案
- 胃鏡室試題及答案
- 2025年高考英語總復習《語法填空》專項檢測卷(附答案)
- 電子電路維修試題及答案
- 2025中國臨床腫瘤學會CSCO小細胞肺癌診療指南解讀課件
- 2025年陜西高中學業水平合格性考試數學模擬試卷(含答案詳解)
- 微生物污染問題的防治策略試題及答案
- 2025重慶建峰工業集團有限公司招聘77人筆試參考題庫附帶答案詳解
- 自然分娩接產操作規范
- 倉庫三級安全教育培訓
- 焊接實訓車間建設方案
評論
0/150
提交評論