(精選)學(xué)生成績單管理系統(tǒng)源代碼Word版_第1頁
(精選)學(xué)生成績單管理系統(tǒng)源代碼Word版_第2頁
(精選)學(xué)生成績單管理系統(tǒng)源代碼Word版_第3頁
(精選)學(xué)生成績單管理系統(tǒng)源代碼Word版_第4頁
(精選)學(xué)生成績單管理系統(tǒng)源代碼Word版_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、學(xué)生成績單管理系統(tǒng)利用面向?qū)ο缶幊谭椒ㄔO(shè)計一個學(xué)生成績單管理系統(tǒng),要求實現(xiàn)以下功能:l 錄入(添加)學(xué)生信息:學(xué)號、姓名、平時成績和考試成績,系統(tǒng)自動計算總評成績(平時成績占20%,考試成績占80%)??梢砸淮武浫攵嗝麑W(xué)生的信息。l 查詢學(xué)生成績:輸入要查詢的學(xué)生的學(xué)號,查詢該學(xué)生的信息并顯示。l 顯示學(xué)生成績單:按學(xué)號順序顯示學(xué)生成績單。l 刪除學(xué)生信息:輸入要刪除的學(xué)生的學(xué)號,得到用戶確認后,刪除該學(xué)生的信息。l 修改學(xué)生信息:輸入要修改的學(xué)生的學(xué)號,顯示該學(xué)生的原有信息,用戶輸入修改后的信息。l 對成績進行統(tǒng)計分析:可以對總成績進行統(tǒng)計分析,分別統(tǒng)計出各個成績段的人數(shù)和比例, 本課程班級

2、平均成績等。實驗步驟如下:1. 創(chuàng)建項目創(chuàng)建一個Win32 Console Application,項目名為“StudentScore”。2. 定義學(xué)生類CStudent(1)新建一個“C/C+ Header File”,文件名為“student.h”,代碼如下:/ student.h 學(xué)生類的定義class CStudent public: CStudent( char * id="", char *na="",int us=0, int ts=0 ); / 構(gòu)造函數(shù)CStudent( const CStudent &s ); / 拷貝構(gòu)造函數(shù)

3、CStudent(); char* GetID(); / 獲取學(xué)生的學(xué)號double GetTotalScore(); / 獲取總評成績static void TableHead( ); / 輸出表頭void Display( ); / 顯示學(xué)生信息private:char ID5; / 學(xué)號char name10; / 姓名int UsualScore; / 平時成績int TestScore; / 考試成績double TotalScore; / 總評成績void CalcTotalScore(); / 計算總評成績;(2)新建一個“C+ Source File”,文件名為“student

4、.cpp”,代碼如下:/ student.cpp 學(xué)生類的成員函數(shù)實現(xiàn)#include <iomanip.h>#include <string.h>#include "student.h"CStudent:CStudent( char * id, char *na,int us, int ts ) / 構(gòu)造函數(shù) strcpy(ID,id);strcpy(name,na); UsualScore=us; TestScore=ts; CalcTotalScore(); CStudent:CStudent( const CStudent &s )

5、/ 拷貝構(gòu)造函數(shù) strcpy( ID, s.ID );strcpy( name, );UsualScore=s.UsualScore;TestScore=s.TestScore;TotalScore=s.TotalScore;CStudent:CStudent() char* CStudent:GetID() / 取得學(xué)生的學(xué)號return ID; double CStudent:GetTotalScore() / 獲取總成績return TotalScore;void CStudent:TableHead( ) / 輸出學(xué)生信息表頭 cout<<setw(4)&l

6、t;<"學(xué)號"<<setw(10)<<"姓名"<<setw(10)<<"平時成績"<<setw(10)<<"考試成績"<<setw(12)<<"總成績n" void CStudent:Display( ) / 顯示學(xué)生信息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 定義成績單類,用來管理所有學(xué)生的成績信息#include "student.h&

8、quot;const int MaxStuNum=51; / 班級學(xué)生人數(shù)最多50人 class CStuDatabase public:CStuDatabase(); / 構(gòu)造函數(shù),從文件中讀入學(xué)生成績信息CStuDatabase(); / 析構(gòu)函數(shù),將學(xué)生成績信息寫入到文件中 void ListScore( ); / 顯示成績單,輸出所有學(xué)生信息 void SelectStuInfo( ); / 查詢學(xué)生信息 void AddStuInfo( ); / 添加學(xué)生成績 void DelStuInfo( ); / 刪除學(xué)生信息 void EditStuInfo( ); / 修改學(xué)生信息 voi

9、d AnalyScore( ); / 對成績進行統(tǒng)計分析void StuDBM( int ); / 成績庫維護int FunctionMenu(); / 功能菜單private: int num; / 學(xué)生人數(shù) CStudent stuMaxStuNum; / 學(xué)生數(shù)組,stu0不用int SearchStu(const char* id); / 查找指定學(xué)號的學(xué)生void SortStu( ); / 按學(xué)號從小到大對成績單排序 ;(2)新建一個“C+ Source File”,文件名為 “StuDataBase.cpp”,代碼如下:/ StuDataBase.cpp 成績單類的實現(xiàn)#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() / 從文件中讀入學(xué)生信息 CStudent s; / 學(xué)生對象num=0;fstream StuFile; / 該文件用來保存學(xué)生信息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() / 將學(xué)生信息寫入到文件中fstream StuFile; / 該文件用來保存學(xué)生信息StuFile.open( "StuInfo.dat", ios:out );if ( !StuFile )cout<<"文件StuInfo.dat不能創(chuàng)建!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) / 查找指定學(xué)號的學(xué)生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 - 查詢學(xué)生成績nn"<<setw(28)<<' '<<"2 - 顯示學(xué)生成績單nn"<<setw(28)&

15、lt;<' '<<"3 - 添加學(xué)生信息nn"<<setw(28)<<' '<<"4 - 刪除學(xué)生信息nn"<<setw(28)<<' '<<"5 - 修改學(xué)生信息nn"<<setw(28)<<' '<<"6 - 對成績進行統(tǒng)計分析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; / 查詢學(xué)生成績case 2: ListScore( ); break; / 顯示成績單case 3: AddStuInfo( ); break; / 添加學(xué)生信息case 4: DelStuInfo( ); break; / 刪除學(xué)生信息case 5: EditStuInfo( ); break; / 修改學(xué)生信息case 6: AnalyScore( ); break; / 對成績進行統(tǒng)計分析void CStuDatabase:SelectStuInfo( ) / 查詢學(xué)生信息system("cls"); /清屏char no5; /

18、臨時保存學(xué)號cout<<"n請輸入要查詢的學(xué)生學(xué)號:"<<endl;cin>>no;int i=SearchStu(no);if ( i=-1 )cout<<"n你查找的學(xué)生不存在!n"else cout<<"n你所查找的學(xué)生成績?nèi)缦拢簄n "CStudent:TableHead( ); / 輸出表頭stui.Display(); cout<<"n按任意鍵返回."<<endl; getch(); void CStuDatabase:

19、ListScore( ) / 顯示成績單system("cls"); /清屏if ( num = 0 )cout<<"當(dāng)前還沒有學(xué)生成績!n" elseSortStu( ); / 按學(xué)號對成績單排序 CStudent:TableHead( ); / 輸出表頭for ( int i=1; i<=num; i+ )stui.Display();cout<<"n共有 "<<num<<" 條學(xué)生成績信息n"cout<<"n顯示成績完畢!nn按任意鍵

20、返回."<<endl;getch(); void CStuDatabase:AddStuInfo( ) / 添加學(xué)生成績system("cls"); /清屏 char no5; / 臨時保存學(xué)號cout<<"請輸入要添加的學(xué)生的學(xué)號(輸入 -1 結(jié)束):"cin>>no;while ( strcmp(no,"-1")!=0 )int i=SearchStu( no ); while ( i!=-1 )cout<<"n你添加的學(xué)生已存在!n請重新輸入學(xué)號(-1結(jié)束):&

21、quot;cin>>no;if ( strcmp(no,"-1")=0 )cout<<"n本次操作完成!nn按任意鍵返回."<<endl;getch();return;i=SearchStu( no ); num+;char na10;cout<<"n請輸入要添加的學(xué)生的姓名:"cin>>na;cout<<"n請輸入要添加的學(xué)生的平時成績:n"int us = InputScore();cout<<"n請輸入要添加的學(xué)生的

22、考試成績:n"int ts = InputScore();CStudent s(no,na,us,ts);stunum=s;cout<<"nn請輸入要添加的學(xué)生的學(xué)號(輸入 -1 結(jié)束):" cin>>no; cout<<"n本次操作完成!nn按任意鍵返回."<<endl;getch(); void CStuDatabase:DelStuInfo( ) / 刪除學(xué)生信息模塊system("cls"); /清屏 char no5; / 臨時保存學(xué)號cout<<&quo

23、t;n請輸入要刪除的學(xué)生學(xué)號:"<<endl;cin>>no;int i=SearchStu( no );if ( i=-1 )cout<<"n你要刪除的學(xué)生不存在!n" else cout<<"n您所刪除的學(xué)生信息如下:nn "CStudent:TableHead( ); / 輸出表頭stui.Display();char anser;cout<<"n是否真的要刪除該學(xué)生?(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( ) / 修改學(xué)生信息模塊system("cls"); /清屏 char no5; / 臨時保存學(xué)號 cout<<"n請輸入要修改的學(xué)生學(xué)號:"

25、;<<endl;cin>>no;int i=SearchStu( no );if ( i=-1 )cout<<"n你要修改的學(xué)生不存在!n" else cout<<"n您所修改的學(xué)生成績?nèi)缦拢簄n "CStudent:TableHead( ); / 輸出表頭stui.Display(); cout<<"n請輸入學(xué)生的新信息:"cout<<"n請輸入學(xué)生的姓名:"char na10;cin>>na;cout<<"

26、n請輸入學(xué)生的平時成績:n"int us = InputScore(); cout<<"n請輸入學(xué)生的考試成績:n" int ts = InputScore(); CStudent s(no,na,us,ts);stui=s;cout<<"n修改信息成功!"<<endl;cout<<"nn按任意鍵返回."<<endl;getch();void CStuDatabase:AnalyScore( ) / 對成績進行統(tǒng)計分析system("cls");

27、 / 清屏 int c5=0; / 用來保存各個分?jǐn)?shù)段的人數(shù) double AveScore=0; / 用來保存所有學(xué)生的平均成績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)分以上人數(shù) case 8: c1+; break; / 80(含80)-90(不含90) 分人數(shù) case 7: c2+; break; / 70(含70)-80(不含80)

28、 分人數(shù) case 6: c3+; break; / 60(含60)-70(不含70) 分人數(shù) default: c4+; break; / 不及格人數(shù) AveScore/=num;cout<<"n學(xué)生成績分布情況如下:nn"cout<<"優(yōu)秀(90分-100分)人數(shù):"<<c0<<",t占 "<<double(c0)/num*100<<" %nn"cout<<"良好(80分- 89分)人數(shù):"<<c

29、1<<",t占 "<<double(c1)/num*100<<" %nn" cout<<"中等(70分- 79分)人數(shù):"<<c2<<",t占 "<<double(c2)/num*100<<" %nn"cout<<"及格(60分- 69分)人數(shù):"<<c3<<",t占 "<<double(c3)/num*100<<" %nn"cout<<"不及格( 60分以下 )人數(shù):"<<c4<<",t占 "<<double(c4)/num*100<<" %nn"cout<<"學(xué)生總?cè)藬?shù)為:"<<num<<endl;cout<<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論