C++課程設計報告(學生成績管理系統(tǒng))_第1頁
C++課程設計報告(學生成績管理系統(tǒng))_第2頁
C++課程設計報告(學生成績管理系統(tǒng))_第3頁
C++課程設計報告(學生成績管理系統(tǒng))_第4頁
C++課程設計報告(學生成績管理系統(tǒng))_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、學生成績管理系統(tǒng)說明:該課程設計包含兩個部分,一個為純dos系統(tǒng)下的控制臺程序,用C+編寫;另一個為有界面的MFC項目。目錄純dos系統(tǒng)下的控制臺程序1、 設計要求。.。.。.。.。.。.。.。.。.。.32、 設計分析。.。.。.。.。.。.。.。.。.。.。.。.。33、 調(diào)試說明。.。.。.。.。.。.。.。.。.。.。.。.44、 源代碼。.。.。.。.。.。.。.。.。.。85、 實驗總結(jié)。.。.。.。.。.。.。.。.。.。.21有界面的MFC項目1、設計內(nèi)容。.。.。.。.。.。.。.。.。.。.。.。222、設計說明.。.。.。.。.。.。.。.。.。.。223、設計步驟。.。

2、.。.。.。.。.。.。.。.。224、運行演示.。.。.。.。.。.。.。.。.275、實驗總結(jié)。.。.。.。.。.。.。.。.。.。.。29純dos系統(tǒng)下的控制臺程序1、 設計要求現(xiàn)有學生成績信息,內(nèi)容如下:姓名    學號   語文  數(shù)學   英語     張明明  01     67    78    

3、60; 82李成友  02     78    91      88張輝燦  03     68    82      56王露    04     56   

4、 45      77陳東明  05     67    38      47請用C/C+編寫一系統(tǒng),實現(xiàn)學生信息管理,軟件的入口界面應包括如下幾個方面:功能要求:(1)    信息維護:要求:學生信息數(shù)據(jù)要以文件的形式保存,能實現(xiàn)學生信息數(shù)據(jù)的維護。此模塊包括子模塊有:增加學生信息、刪除學生信息、修改學生信息(2) 

5、   信息查詢:要求:查詢時可實現(xiàn)按姓名查詢、按學號查詢(3)    成績統(tǒng)計:要求:A輸入任意的一個課程名(如數(shù)學)和一個分數(shù)段(如60-70),統(tǒng)計出在此分數(shù)段的學生情況。(4)    排序:能對用戶指定的任意課程名,按成績升序或降序排列學生數(shù)據(jù)并顯示排序結(jié)果(使用表格的形式顯示排序后的輸出結(jié)果)其它要求:(1) 只能使用C/C+語言,源程序要有適當?shù)淖⑨?,使程序容易閱讀(2) 至少采用文本菜單界面(如果能采用圖形菜單界面更好)(3) 學生可自動增加新功能模塊(視情況可另外加分)(

6、4)寫出課程設計報告,具體要求見相關說明文檔2、 設計分析(1)需求分析:該程序要能實現(xiàn)對學生成績信息的增加、刪除、修改,實現(xiàn)對學生按姓名查詢,按學號查詢顯示,對任意一個課程名和分數(shù)段的學生人數(shù)進行輸出并統(tǒng)計人數(shù),最好還要根據(jù)用戶的需求對學生成績排序.(2)系統(tǒng)性能要求: a. 系統(tǒng)安全、可靠; b. 功能齊全; c.操作方便、界面友好; d。易于維護和擴充。(3) 系統(tǒng)功能模塊:學生成績管理系統(tǒng)包括:增加、刪除、修改、顯示、信息查詢、成績統(tǒng)計、排序幾個部分構(gòu)成。學生成績管理系統(tǒng)(4)模塊框架圖排序成績統(tǒng)計信息查詢顯示修改刪除增加輸入課程名和升降序排序輸

7、入課程名和分數(shù)段統(tǒng)計按姓名查詢按學號查詢3、 調(diào)試說明運行程序后,現(xiàn)出來一個簡潔的主界面。若沒有學生信息,顯示“這是一個新系統(tǒng),無學生信息,請先輸入?!比粢汛嬖趯W生信息,顯示“讀取學生信息成功!”一秒鐘后,自動切入主菜單界面。首先選擇1,增加學生信息。錄入學生信息后選擇4,顯示學生信息.選擇2,刪除學生信息,輸入要刪除的學生姓名,這里我輸入的是王露,顯示剩下幾位同學的信息.選擇3,修改學生信息,輸入要修改的學生姓名,然后輸入新的學生信息,這里我修改的是張明明,顯示修改后的學生信息.將張明明和王露的信息重新輸入。輸入5,信息查詢,出來選擇界面,“1、按學生姓名查找"、“2、按學生學號查

8、找”,輸入1,運行結(jié)果如下:輸入2,運行結(jié)果如下:輸入6,排序,顯示選擇界面,用戶可根據(jù)需求選擇科目和升降序,這里我是按語文成績降序排序。輸入7,成績統(tǒng)計,用戶自行輸入要統(tǒng)計的科目和分數(shù)段進行統(tǒng)計。這里我統(tǒng)計的是英語成績在6090的學生.4、 源程序代碼includeiostream>#includefstream#includeiomanip>includestdlib.h>#includeWindows。hincludeconio.husing namespace std ;define HEADER1 " -學生成績-n”#define HEADER2 &qu

9、ot; | 姓名 | 學號 | 數(shù)學 | 語文 | 英語 | 總分 |n"define HEADER3 " |-|-|-|n"class Student /定義學生類public:char name20 ;char id20 ;int math ;int chinese ;int english ;int sum ;Student *next ;void input() ;void ReadFile(istream & in) ;void show() ; ;void Student::input() /輸入學生信息函數(shù)cout<<”ntt請輸

10、入:”<<endl<endl ;cout”tt姓名:” ;cin>name ;cout<"tt學號:” ;cinid ;cout<"tt數(shù)學成績:” ;cin>>math ;cout<”tt語文成績:” ;cin>chinese ;cout<<”tt英語成績:” ;cin>english ;sum = math + chinese + english ;void Student::ReadFile(istream in) /讀取文件in>name>id>math>chine

11、seenglish>>sum ;void Student::show() /輸出學生信息cout<” |"setw(8)<<name<” "<<setw(6)<id<" ”<setw(6)<math<<” "<setw(6)<<chinese” "<setw(6)<<english<” ”<setw(7)<<sum<<" ”<endl ;cout<” |-|-|-|n&

12、quot; ;class StudentMassage /定義學生信息類,包含各項處理功能public:StudentMassage() ;StudentMassage() ;void ShowMenu() ;void Display() ;void AddItem() ;void Find() ;void save() ;void ModifyItem() ;void RemoveItem() ;void Swap(Student *p1 , Student *p2) ;void Sort() ;int ListCount() ;int Count() ;private:Student *H

13、ead , *End ;ifstream in ;ofstream out ;Student *FindItem(char name) ;Student *FindId(char *id) ; ;Student *StudentMassage:FindItem(char *name)Student p ;for(p = Head ; p->next != End ; p = p>next)if(!strcmp(pnext>name , name)return p ;return NULL ;Student StudentMassage::FindId(char id) Stu

14、dent p ;for(p = Head ; p-next != End ; p = p->next)if(!strcmp(p->next->id , id))return p ;return NULL ;StudentMassage::StudentMassage() /構(gòu)造函數(shù)Head = new Student ;Head->next = new Student ;End = Head>next ;in.open("sort.txt”) ;if(!in)cout"ntt這是一個新系統(tǒng),無學生信息,請先輸入.”endl ;elsewhile

15、(!in。eof()End->ReadFile(in) ;if(End>name0='0')break ;End->next = new Student ;End = End->next ;in.close() ;cout<”ntt讀取學生信息成功!”endl ;StudentMassage::StudentMassage() /析構(gòu)函數(shù)Student *temp ;save() ;for(temp ; Head>next != End ; )temp = Headnext ;Head > next = Head next>nex

16、t ;delete temp ;delete Head , End ;void StudentMassage::ShowMenu() /顯示菜單cout<<”nntttt 主菜單"<endl<endlendl ;cout<<"tt*"endl<<endl ;cout<"tt1、增加學生信息 2、刪除學生信息"<<endl<endl ;cout<”tt3、修改學生信息 4、顯示學生信息”<endl<endl ;cout<"tt5、信息查詢 6

17、、排序”<endlendl ;cout<<”tt7、成績統(tǒng)計 0、安全退出"<endl<endl ;cout"tt*”<<endl<endl<endl ;cout”tt請選擇:” ;void StudentMassage::Display() /顯示學生信息Student p ;cout<endl<HEADER1HEADER2<HEADER3 ;for(p = Head-next ; p != End ; p = p>next)p>show() ;cout<"nn輸入任意字符

18、,繼續(xù)。.。." ;getch() ;void StudentMassage::AddItem() /添加學生信息Endinput() ;End->next = new Student ;End = End->next ;cout”ntt添加成功!"<<endl ;cout<<"n輸入任意字符,繼續(xù).。.” ;getch() ;void StudentMassage:Find() /查找函數(shù)char name20 , id20 ;int x ;Student p = NULL ;cout<”ntt*n" ;cou

19、t”ttt 1、按學生姓名查找"<endl ;cout<"ttt 2、按學生學號查找" ;cout<<"ntt*nntt請選擇:” ;cin>x ;switch(x)case 1: /按姓名查找cout”ntt請輸入要查找的學生的姓名:” ;cinname ;if(p = FindItem(name)cout<endl<HEADER1HEADER2<HEADER3 ;p-next>show() ;cout”n請輸入任意字符,繼續(xù).?!?;getch() ;elsecout<"tt沒有找

20、到該姓名的學生!"endl<endl ;cout<<"請輸入任意字符,繼續(xù)。.。.。" ;getch() ; break ;case 2: /按學號查找cout<"ntt請輸入要查找的學生的學號:” ;cin>id ;if(p = FindId(id))cout<endl<<HEADER1<<HEADER2<HEADER3 ;p-next-show() ;cout”n請輸入任意字符,繼續(xù)。.。" ;getch() ;elsecout<<”ntt沒有找到該學號的學生!&

21、quot;<<endl<endl ;cout<”請輸入任意字符,繼續(xù).。.。” ;getch() ; break ;void StudentMassage:ModifyItem() /修改學生信息char name20 ;Student *p = NULL ;cout"ntt請輸入要修改的學生的姓名:" ;cin>>name ;if(p = FindItem(name)cout<<"ntt已找到該學生,請輸入新的信息!"<endl ;p-next-input() ;cout<<"

22、ntt修改成功!"<<endl ;Display() ;elsecout<”ntt沒有找到!"<endl ;cout”n輸入任意字符!繼續(xù)。.” ;getch() ;void StudentMassage:RemoveItem() /刪除學生信息char name20 ;Student p = NULL , *temp = NULL ;cout<<”ntt請輸入要刪除的學生的姓名:" ;cin>name ;if(p = FindItem(name)temp = p>next ;pnext = p-next-next

23、;delete temp ;cout"ntt刪除成功!"endl ;Display() ;elsecout<”tt沒有找到!”endl ;cout<”輸入任意字符!繼續(xù).。.” ;getch() ;int StudentMassage:ListCount() /返回記錄的學生總數(shù)Student p ;int n = 0 ;if(!Head)return 0 ;for(p = Head>next ; p != End ; p = p-next)n + ;return n ;int StudentMassage:Count() /成績統(tǒng)計Student p ;

24、int x , m , n ,count = 0 ;if(!Head)cout<"ntt沒有資料可以統(tǒng)計!"<<endl ;return 0 ;cout"ntt*n" ;cout"ttt 1、統(tǒng)計數(shù)學成績”<endl ;cout<"ttt 2、統(tǒng)計語文成績"<endl ;cout<"ttt 3、統(tǒng)計英語成績" ;cout<"ntt*n”endl ;cout<"tt請選擇:" ;cin>x ;switch(x)case

25、 1 :cout<<"ntt請輸入分數(shù)段的起始分數(shù)和終止分數(shù):” ;cin>>m ;cin>n ;for(p = Head ; p != End ; p = pnext)if(p->math =m & p>math <= n)count + ;if(count = 1)cout<endlHEADER1HEADER2<HEADER3 ;p>show() ;cout<"ntt數(shù)學成績在”m<<"”<<n"的學生共有”<count<”人!n”en

26、dl ;cout"輸入任意字符,繼續(xù)。.。" ;getch() ; ; break ;case 2:cout<"ntt請輸入分數(shù)段的起始分數(shù)和終止分數(shù):” ;cinm ;cin>n ;for(p = Head ; p != End ; p = p>next)if(p->chinese >=m & p-chinese <= n)count + ;if(count = 1)cout<endl<<HEADER1<HEADER2<HEADER3 ;p>show() ;cout<”ntt語

27、文成績在”<<m<"-”<<n<<"的學生共有”<count<”人!n"<endl ;cout<<"輸入任意字符,繼續(xù)。.。." ;getch() ; ; break ;case 3:cout<"ntt請輸入分數(shù)段的起始分數(shù)和終止分數(shù):” ;cin>m ;cin>n ;for(p = Head ; p != End ; p = pnext)if(p>english >=m & penglish <= n)count +

28、;if(count = 1)coutendl<HEADER1<HEADER2<HEADER3 ;p->show() ;cout<<"ntt英語成績在"<<m"-”<<n<<”的學生共有”<count<<"人!n"endl ;cout”輸入任意字符,繼續(xù).。.。.” ;getch() ; ; break ;void StudentMassage:Swap(Student p1 , Student *p2) /交p1,p2學生信息Student temp =

29、new Student ;strcpy(temp->name , p1name) ;strcpy(tempid , p1->id) ;tempmath = p1-math ;temp-chinese = p1>chinese ;temp-english = p1english ;temp>sum = p1sum ;strcpy(p1->name , p2name) ;strcpy(p1-id , p2->id) ;p1->math = p2>math ;p1chinese = p2>chinese ;p1>english = p2-e

30、nglish ;p1>sum = p2>sum ;strcpy(p2>name , temp-name) ;strcpy(p2->id , tempid) ;p2>math = temp-math ;p2-chinese = temp->chinese ;p2english = temp-english ;p2sum = temp->sum ;void StudentMassage:Sort() /排序Student p = NULL , p1 = NULL , *k = NULL ;int n = StudentMassage:ListCount()

31、 , x , y ;if(n < 2)cout"數(shù)據(jù)較少,無法排序!”endl ;return ;cout<"ntt*n” ;cout<”ttt 1、按數(shù)學成績排序"<endl ;cout<”ttt 2、按語文成績排序”<endl ;cout<"ttt 3、按英語成績排序"<endl ;cout<<”ttt 4、按總分排序” ;cout<"ntt*nnt請選擇:" ;cin>>x ;switch(x)case 1:cout<"ntt

32、*n” ;cout<”ttt 1、按降序排序nttt 2、按升序排序” ;cout<<"ntt*nnt請選擇:" ;cin>y ;if(y = 1)for(p = Head>next ; p != End ; p = p>next)for(k = p->next ; k != End ; k = k>next)if(p-math k-math)StudentMassage::Swap(p , k) ;cout"ntt排序完成!”endl ;StudentMassage::Display() ;getch() ;els

33、efor(p = Head->next ; p != End ; p = pnext)for(k = p->next ; k != End ; k = k>next)if(pmath > k-math)StudentMassage::Swap(p , k) ;cout”ntt排序完成!”<<endl ;StudentMassage:Display() ;getch() ; ; break ;case 2:cout”ntt*n" ;cout<<"ttt 1、按降序排序nttt 2、按升序排序” ;cout<<”ntt

34、*nnt請選擇:" ;cin>>y ;if(y = 1)for(p = Head>next ; p != End ; p = p-next)for(k = pnext ; k != End ; k = k->next)if(p->chinese k->chinese)StudentMassage:Swap(p , k) ;cout<"ntt排序完成!”endl ;StudentMassage::Display() ;getch() ;elsefor(p = Head-next ; p != End ; p = pnext)for(k

35、 = p>next ; k != End ; k = k->next)if(p>chinese > k->chinese)StudentMassage:Swap(p , k) ;cout"ntt排序完成!”<endl ;StudentMassage::Display() ;getch() ; ; break ;case 3:cout<<"ntt*n” ;cout"ttt 1、按降序排序nttt 2、按升序排序" ;cout<"ntt*nnt請選擇:” ;cin>y ;if(y = 1)

36、for(p = Head>next ; p != End ; p = p->next)for(k = p->next ; k != End ; k = k>next)if(p-english kenglish)StudentMassage::Swap(p , k) ;cout<<"ntt排序完成!”<endl ;StudentMassage:Display() ;getch() ;elsefor(p = Headnext ; p != End ; p = p-next)for(k = p-next ; k != End ; k = knext

37、)if(p>english kenglish)StudentMassage:Swap(p , k) ;cout"ntt排序完成!"<endl ;StudentMassage::Display() ;getch() ; ; break ;case 4:cout”ntt*n" ;cout<<"ttt 1、按降序排序nttt 2、按升序排序" ;cout<<”ntt*nnt請選擇:” ;cin>>y ;if(y = 1)for(p = Head->next ; p != End ; p = pne

38、xt)for(k = p-next ; k != End ; k = k>next)if(p-sum < k->sum)StudentMassage:Swap(p , k) ;cout<”ntt排序完成!"<endl ;StudentMassage::Display() ;getch() ;elsefor(p = Head-next ; p != End ; p = pnext)for(k = p-next ; k != End ; k = knext)if(p>sum ksum)StudentMassage:Swap(p , k) ;cout&l

39、t;"ntt排序完成!”<endl ;StudentMassage::Display() ;getch() ; ; break ;void StudentMassage:save() /存入文件out.open("sort。txt”);for(Student *p=Head-next;p!=End;p=p->next)out<p>name<”t”<p->id<"t"<p>math<<"t"<p->chinese<<"t"

40、<p-english<<”t"<p->sum<n'out.close();void main()int x ;bool quit = false ;cout<”nnnnnnnn" ;cout<<"tt*"<endl ;cout<<”tt 歡迎使用學生成績管理系統(tǒng)!”<<endl ;cout<<"tt*"<<endl ;StudentMassage Grade ;Sleep(1000) ;while(!quit)syste

41、m("cls") ;Grade。ShowMenu() ;cin>>x ;switch(x)case 0:quit = true ; break ;case 1:Grade。AddItem() ; break ;case 2:Grade。RemoveItem() ; break ;case 3:Grade。ModifyItem() ; break ;case 4:Grade.Display() ; break ;case 5:Grade.Find() ; break ;case 6:Grade。Sort() ; break ;case 7:Grade.Count(

42、) ; break ;5、 實驗總結(jié)通過編寫這個純dos系統(tǒng)下的控制臺程序,加深了我對如何用C+編寫一個簡單的應用程序的理解。首先要對程序的設計要求有一個比較明確的認識,然后系統(tǒng)分析與系統(tǒng)設計,最后是代碼設計與調(diào)試。程序?qū)崿F(xiàn)上,設計了簡單的菜單界面,將各個功能集中出來按照程序編寫原則,便于查詢。 有界面的MFC項目1、 設計內(nèi)容以學生成績管理系統(tǒng)為例,通過對簡單應用軟件系統(tǒng)的設計,編制、調(diào)試,實現(xiàn)簡單的增加、刪除、排序等運算,以學習應用MFC庫類編寫對話框的原理,加深對C+類的學習及應用. 2、 設計說明(1)包含的功能有:查看、增加、刪除、排序、篩選等功能。 (

43、2)通過access創(chuàng)建數(shù)據(jù)庫并通過OD方式訪問數(shù)據(jù)庫. (3)編輯界面上的不同按鈕,創(chuàng)建消息映射,以完成相關的各種操作。3、設計步驟(1)創(chuàng)建數(shù)據(jù)庫: 打開access,并創(chuàng)建一個新表“學生成績管理表”,輸入相關內(nèi)容,選擇類型,完成后保存。(2)添加ODBC數(shù)據(jù)源打開“ODBC數(shù)據(jù)源管理器”  添加繼續(xù)(3)在MFC中創(chuàng)建相關按鍵并設置好屬性及ID為每個編輯框控件綁定數(shù)據(jù)源字段:選定一個編輯框控件,右鍵 | 建立類向?qū)?#160; 成員變量標簽 |class name列表下選CmySet(數(shù)據(jù)庫的結(jié)果集)。

44、60;先將Member中不好記的值通過“Delete Variable”刪除,再“Add Vairiables”添加,改為自己好記的的名字。將編輯框(在CmyView視圖類中)與上述變量綁定:Add Variable現(xiàn)在為功能鍵的實現(xiàn)進行操作  增加新的對話框(窗體)及創(chuàng)建類成員在查詢或過濾記錄時,需要一個對話框,用于添加信息,增加對話框的方法:  VC主菜單,“插入”|“資源”|“對話框(Dialog)類型”| 放一個“分組框控件" 在分組框內(nèi)按圖設置編輯框和按鈕:建立類向?qū)?,分配好成員變量并綁定好為其中的“確定”按鈕添加代碼:void CDlgADD:OnOK() / TODO: Add extra validation hereUpdateData(); if(m_id=0|m_name=”|m_chinese=0|m_math=0|m_english=0|m_sum=0) MessageBox("請完整輸入數(shù)據(jù)”); return; CDialog:OnOK();同理,添加查詢條件的對話框:建立類向?qū)砑庸δ苕I的代碼: 雙擊向?qū)е械摹癐DD_MY_FORM”,雙擊主界面的“增加記錄"按鈕void CMyView::OnBu

溫馨提示

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

評論

0/150

提交評論