




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、學生成績單管理系統利用面向對象編程方法設計一個學生成績單管理系統,要求實現以下功能:l 錄入(添加)學生信息:學號、姓名、平時成績和考試成績,系統自動計算總評成績(平時成績占20%,考試成績占80%)。可以一次錄入多名學生的信息。l 查詢學生成績:輸入要查詢的學生的學號,查詢該學生的信息并顯示。l 顯示學生成績單:按學號順序顯示學生成績單。l 刪除學生信息:輸入要刪除的學生的學號,得到用戶確認后,刪除該學生的信息。l 修改學生信息:輸入要修改的學生的學號,顯示該學生的原有信息,用戶輸入修改后的信息。l 對成績進行統計分析:可以對總成績進行統計分析,分別統計出各個成績段的人數和比例, 本課程班級
2、平均成績等。實驗步驟如下:1. 創建項目創建一個Win32 Console Application,項目名為“StudentScore”。2. 定義學生類CStudent(1)新建一個“C/C+ Header File”,文件名為“student.h”,代碼如下:/ student.h 學生類的定義class CStudent public: CStudent( char * id="", char *na="",int us=0, int ts=0 ); / 構造函數CStudent( const CStudent &s ); / 拷貝構造函數
3、CStudent(); char* GetID(); / 獲取學生的學號double GetTotalScore(); / 獲取總評成績static void TableHead( ); / 輸出表頭void Display( ); / 顯示學生信息private:char ID5; / 學號char name10; / 姓名int UsualScore; / 平時成績int TestScore; / 考試成績double TotalScore; / 總評成績void CalcTotalScore(); / 計算總評成績;(2)新建一個“C+ Source File”,文件名為“student
4、.cpp”,代碼如下:/ student.cpp 學生類的成員函數實現#include <iomanip.h>#include <string.h>#include "student.h"CStudent:CStudent( char * id, char *na,int us, int ts ) / 構造函數 strcpy(ID,id);strcpy(name,na); UsualScore=us; TestScore=ts; CalcTotalScore(); CStudent:CStudent( const CStudent &s )
5、/ 拷貝構造函數 strcpy( ID, s.ID );strcpy( name, );UsualScore=s.UsualScore;TestScore=s.TestScore;TotalScore=s.TotalScore;CStudent:CStudent() char* CStudent:GetID() / 取得學生的學號return ID; double CStudent:GetTotalScore() / 獲取總成績return TotalScore;void CStudent:TableHead( ) / 輸出學生信息表頭 cout<<setw(4)&l
6、t;<"學號"<<setw(10)<<"姓名"<<setw(10)<<"平時成績"<<setw(10)<<"考試成績"<<setw(12)<<"總成績n" void CStudent:Display( ) / 顯示學生信息cout<<setw(3)<<ID<<setw(10)<<name<<setw(10)<<UsualSc
7、ore <<setw(10)<<TestScore<<setw(10)<<TotalScore<<endl; void CStudent:CalcTotalScore() / 計算總成績TotalScore= UsualScore*0.2 + TestScore*0.8; 3. 定義成績單類CStuDataBase(1)新建一個“C/C+ Header File”,文件名為“StuDataBase.h”,代碼如下:/ StuDataBase.h 定義成績單類,用來管理所有學生的成績信息#include "student.h&
8、quot;const int MaxStuNum=51; / 班級學生人數最多50人 class CStuDatabase public:CStuDatabase(); / 構造函數,從文件中讀入學生成績信息CStuDatabase(); / 析構函數,將學生成績信息寫入到文件中 void ListScore( ); / 顯示成績單,輸出所有學生信息 void SelectStuInfo( ); / 查詢學生信息 void AddStuInfo( ); / 添加學生成績 void DelStuInfo( ); / 刪除學生信息 void EditStuInfo( ); / 修改學生信息 voi
9、d AnalyScore( ); / 對成績進行統計分析void StuDBM( int ); / 成績庫維護int FunctionMenu(); / 功能菜單private: int num; / 學生人數 CStudent stuMaxStuNum; / 學生數組,stu0不用int SearchStu(const char* id); / 查找指定學號的學生void SortStu( ); / 按學號從小到大對成績單排序 ;(2)新建一個“C+ Source File”,文件名為 “StuDataBase.cpp”,代碼如下:/ StuDataBase.cpp 成績單類的實現#incl
10、ude <fstream.h>#include <string.h>#include <stdlib.h>#include <iomanip.h>#include <conio.h>#include "StuDataBase.h"int InputScore( ) / 輸入百分制成績 int score;cin>>score;while ( score<0 | score>100 ) cout<<"成績超出范圍,請重新輸入百分制成績(0-100分):"cin&
11、gt;>score;return score;CStuDatabase:CStuDatabase() / 從文件中讀入學生信息 CStudent s; / 學生對象num=0;fstream StuFile; / 該文件用來保存學生信息StuFile.open( "StuInfo.dat", ios:in );if ( !StuFile ) cout<<"文件StuInfo.dat不能打開!n" return; StuFile.read( (char*)&s, sizeof(s) );while ( !StuFile.eof()
12、 ) num+; stunum=s; StuFile.read( (char*)&s, sizeof(s) ); StuFile.close(); CStuDatabase:CStuDatabase() / 將學生信息寫入到文件中fstream StuFile; / 該文件用來保存學生信息StuFile.open( "StuInfo.dat", ios:out );if ( !StuFile )cout<<"文件StuInfo.dat不能創建!n" return;for ( int i=1; i<=num; i+ ) StuFi
13、le.write( (char*)&stui, sizeof(stui) );StuFile.close(); int CStuDatabase:SearchStu(const char * id) / 查找指定學號的學生for ( int i=1; i<=num; i+ )if ( strcmp(stui.GetID(),id)=0 )return i;return -1; int CStuDatabase:FunctionMenu() /功能菜單int FuncNum; / 保存操作編號system("cls"); /清屏cout<<"
14、;nnn"cout<<setw(20)<<' '<<"*nnn"cout<<setw(24)<<' '<<"請選擇要進行的操作:nn"cout<<setw(28)<<' '<<"1 - 查詢學生成績nn"<<setw(28)<<' '<<"2 - 顯示學生成績單nn"<<setw(28)&
15、lt;<' '<<"3 - 添加學生信息nn"<<setw(28)<<' '<<"4 - 刪除學生信息nn"<<setw(28)<<' '<<"5 - 修改學生信息nn"<<setw(28)<<' '<<"6 - 對成績進行統計分析nn"<<setw(28)<<' '<<&qu
16、ot;0 - 退出nnn"cout<<setw(20)<<' '<<"*nnn"cin>>FuncNum;while ( FuncNum<0 | FuncNum>6 )cout<<"請重新選擇要進行的操作:"<<endl;cin>>FuncNum; return FuncNum;void CStuDatabase:StuDBM( int FuncNum ) / 成績維護switch ( FuncNum )case 1: SelectS
17、tuInfo(); break; / 查詢學生成績case 2: ListScore( ); break; / 顯示成績單case 3: AddStuInfo( ); break; / 添加學生信息case 4: DelStuInfo( ); break; / 刪除學生信息case 5: EditStuInfo( ); break; / 修改學生信息case 6: AnalyScore( ); break; / 對成績進行統計分析void CStuDatabase:SelectStuInfo( ) / 查詢學生信息system("cls"); /清屏char no5; /
18、臨時保存學號cout<<"n請輸入要查詢的學生學號:"<<endl;cin>>no;int i=SearchStu(no);if ( i=-1 )cout<<"n你查找的學生不存在!n"else cout<<"n你所查找的學生成績如下:nn "CStudent:TableHead( ); / 輸出表頭stui.Display(); cout<<"n按任意鍵返回."<<endl; getch(); void CStuDatabase:
19、ListScore( ) / 顯示成績單system("cls"); /清屏if ( num = 0 )cout<<"當前還沒有學生成績!n" elseSortStu( ); / 按學號對成績單排序 CStudent:TableHead( ); / 輸出表頭for ( int i=1; i<=num; i+ )stui.Display();cout<<"n共有 "<<num<<" 條學生成績信息n"cout<<"n顯示成績完畢!nn按任意鍵
20、返回."<<endl;getch(); void CStuDatabase:AddStuInfo( ) / 添加學生成績system("cls"); /清屏 char no5; / 臨時保存學號cout<<"請輸入要添加的學生的學號(輸入 -1 結束):"cin>>no;while ( strcmp(no,"-1")!=0 )int i=SearchStu( no ); while ( i!=-1 )cout<<"n你添加的學生已存在!n請重新輸入學號(-1結束):&
21、quot;cin>>no;if ( strcmp(no,"-1")=0 )cout<<"n本次操作完成!nn按任意鍵返回."<<endl;getch();return;i=SearchStu( no ); num+;char na10;cout<<"n請輸入要添加的學生的姓名:"cin>>na;cout<<"n請輸入要添加的學生的平時成績:n"int us = InputScore();cout<<"n請輸入要添加的學生的
22、考試成績:n"int ts = InputScore();CStudent s(no,na,us,ts);stunum=s;cout<<"nn請輸入要添加的學生的學號(輸入 -1 結束):" cin>>no; cout<<"n本次操作完成!nn按任意鍵返回."<<endl;getch(); void CStuDatabase:DelStuInfo( ) / 刪除學生信息模塊system("cls"); /清屏 char no5; / 臨時保存學號cout<<&quo
23、t;n請輸入要刪除的學生學號:"<<endl;cin>>no;int i=SearchStu( no );if ( i=-1 )cout<<"n你要刪除的學生不存在!n" else cout<<"n您所刪除的學生信息如下:nn "CStudent:TableHead( ); / 輸出表頭stui.Display();char anser;cout<<"n是否真的要刪除該學生?(Y/N):"cin>>anser;if ( anser='y'
24、 | anser='Y') for ( int j=i+1; j<=num; j+ )stuj-1=stuj;num-;cout<<"n刪除信息成功!"<<endl; cout<<"nn按任意鍵返回."<<endl; getch(); void CStuDatabase:EditStuInfo( ) / 修改學生信息模塊system("cls"); /清屏 char no5; / 臨時保存學號 cout<<"n請輸入要修改的學生學號:"
25、;<<endl;cin>>no;int i=SearchStu( no );if ( i=-1 )cout<<"n你要修改的學生不存在!n" else cout<<"n您所修改的學生成績如下:nn "CStudent:TableHead( ); / 輸出表頭stui.Display(); cout<<"n請輸入學生的新信息:"cout<<"n請輸入學生的姓名:"char na10;cin>>na;cout<<"
26、n請輸入學生的平時成績:n"int us = InputScore(); cout<<"n請輸入學生的考試成績:n" int ts = InputScore(); CStudent s(no,na,us,ts);stui=s;cout<<"n修改信息成功!"<<endl;cout<<"nn按任意鍵返回."<<endl;getch();void CStuDatabase:AnalyScore( ) / 對成績進行統計分析system("cls");
27、 / 清屏 int c5=0; / 用來保存各個分數段的人數 double AveScore=0; / 用來保存所有學生的平均成績double ts; / 臨時保存總評成績for ( int i=1; i<=num; i+ )ts=stui.GetTotalScore();AveScore+=ts;switch ( int( ts/10 ) )case 10:case 9: c0+; break; / 90(含90)分以上人數 case 8: c1+; break; / 80(含80)-90(不含90) 分人數 case 7: c2+; break; / 70(含70)-80(不含80)
28、 分人數 case 6: c3+; break; / 60(含60)-70(不含70) 分人數 default: c4+; break; / 不及格人數 AveScore/=num;cout<<"n學生成績分布情況如下:nn"cout<<"優秀(90分-100分)人數:"<<c0<<",t占 "<<double(c0)/num*100<<" %nn"cout<<"良好(80分- 89分)人數:"<<c
29、1<<",t占 "<<double(c1)/num*100<<" %nn" cout<<"中等(70分- 79分)人數:"<<c2<<",t占 "<<double(c2)/num*100<<" %nn"cout<<"及格(60分- 69分)人數:"<<c3<<",t占 "<<double(c3)/num*100<<" %nn"cout<<"不及格( 60分以下 )人數:"<<c4<<",t占 "<<double(c4)/num*100<<" %nn"cout<<"學生總人數為:"<<num<<endl;cout<<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上市國有企業2025年品牌建設工作總結與計劃
- 食品安全檢測與質量控制措施
- 公共設施抵押協議
- 農業企業財務部門年終總結示例
- 2025年秋小學信息技術教育計劃
- 醫療機構護士安全操作培訓計劃
- 2025年骨科護理質量監測計劃
- 2025年統計學專業期末考試題庫-綜合案例分析題庫及解題思路試卷
- 磨損考核合同
- 部編版語文互動課堂計劃
- GJB9001C-2017質量管理體系檢查內容的內部審核檢查表【含檢查內容】
- DB12T 1111 2021 城鎮燃氣供氣設施運行管理規范
- 面試人員測評打分表
- 大學本科畢業設計畢業論文-網上藥店管理系統的設計與實現
- 《畢業生登記表》填寫模板
- 初中物理中考實驗操作培訓
- 風電場建設項目綠色施工方案
- GIS軟件工程_01概述
- 湘少版級英語單詞表吐血整理
- 部編版《道德與法治》六年級下冊第8課《科技發展造福人類》優秀課件(含視頻)
- 馬列工程西方經濟學_宏觀_第11章
評論
0/150
提交評論