C教學規(guī)劃報告_第1頁
C教學規(guī)劃報告_第2頁
C教學規(guī)劃報告_第3頁
C教學規(guī)劃報告_第4頁
C教學規(guī)劃報告_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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 、設計步驟 224 、運行演示 275 、實驗總結(jié) 29純 dos 系統(tǒng)下的控制臺程序1、設計要求現(xiàn)有學生成績信息,內(nèi)容如下:姓名學號語文數(shù)學英語張明明01677882李成友02789188張輝燦03688256王露0456 4577陳東明05673847請用 C/C+ 編寫一

2、系統(tǒng),實現(xiàn)學生信息管理,軟件的入口界面應包括如下幾個方面:功能要求:( 1) 信息維護:要求:學生信息數(shù)據(jù)要以文件的形式保存, 能實現(xiàn)學生信息數(shù)據(jù)的維護。 此模塊包括子模塊有:增加學生信息、刪除學生信息、修改學生信息( 2) 信息查詢:要求:查詢時可實現(xiàn)按姓名查詢、按學號查詢( 3) 成績統(tǒng)計:要求: A 輸入任意的一個課程名(如數(shù)學)和一個分數(shù)段(如 60-70 ),統(tǒng)計出 在此分數(shù)段的學生情況(4) 排序:能對用戶指定的任意課程名,按成績升序或降序排列學生數(shù)據(jù)并 顯示排序結(jié)果(使用表格的形式顯示排序后的輸出結(jié)果) 其它要求:(1)只能使用C/C+語言,源程序要有適當?shù)淖⑨?,使程序容易閱讀(

3、2)至少采用文本菜單界面(如果能采用圖形菜單界面更好)(3)學生可自動增加新功能模塊(視情況可另外加分)(4)寫出課程設計報告,具體要求見相關(guān)說明文檔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)成。(4)模塊框架圖學生成績管

4、理系統(tǒng)增加刪除修改顯示信息查詢成績統(tǒng)計排序3、調(diào)試說明運行程序后,現(xiàn)出來一個簡潔的主界面若已若沒有學生信息,顯示“這是一個新系統(tǒng),無學生信息,請先輸入存在學生信息,顯示“讀取學生信息成功!一秒鐘后,自動切入主菜單界面首先選擇1,增加學生信息.1月 8 7 2 eeP- 7 6 8 明: 張S1績績績 .1 名號吏詰 MH勵U戒功!輸A任意錄入學生信息后選擇4,顯示學生信息請選嘩:4姓名宇號!張明明! 朗!李成友!02787B英語ES總分22257:張輝燦i 03455577178L52I陳東明!05選擇2,刪除學生信息,輸入要刪除的學生姓名,這里我輸入的是王露,顯示剩下幾位同學的信息諸輸入要B

5、M除的學生的姓名:王露 刪除力対)!姓名學號/成抵廠籍總分;_陰明程:;李成友;:張輝燦*03I I *陳東明*050182672378472572K152選擇3,修改學生信息,輸入要修改的學生姓名,然后輸入新的學生信息, 這里我修改的是張明明,顯示修改后的學生信息。請選擇:3 請輸入夢脩改的學牛的姓名;張明明已找到該寧土,請輸入新的信息8 ? 28 7 6 明 張01敲績M :亦成成 名號學乂語 咗學惡語關(guān)修改成功!張明李成友張輝燦陳東明學號0103QS數(shù)學88918278英語S847i總分:I II1|i 227 i257 i152將張明明和王露的信息重新輸入輸入5,信息查詢,出來選擇界面

6、,“ 1、按學生姓名查找”、“2、按學生學號查找”,輸入1,運行結(jié)果如下:請選擇:姓名請選擇t 1請輸入要查找的學生的姓名李成友工學生咸集一一 數(shù)學 _學號李咸九i 02語文英語總分B8257輸入2,運行結(jié)果如下:#w請選擇:2姓名1.2.鑽蠶請輸入蘿查找的學生的學號;0C學號曲成誓英語總分152輸入6,排序,顯示選擇界面,用戶可根據(jù)需求選擇科目和升降序,這里我是按語文成績降序排序。eJ/Ti月 嘖鬻序 沖看分Jr* 7 1 F 請選扌豐1州JT完妙!姓答學號I李咸聲:I 0278eeI總分(IItIis?i:帳輝燦:03:82:EB:5&;2 MbI1tI(|I(J帳:朗明:01:78!G7

7、9B2:227! I _=_ I1 陳東明;0%;167I47:IK2 I王露 fMIJI45 ISfiI77輸入7,成績統(tǒng)計,用戶自行輸入要統(tǒng)計的科目和分數(shù)段進行統(tǒng)計。這里我統(tǒng)計的是英語成績在60 90的學生。ft3、統(tǒng)計英話後舊緒艮拜員燈/科管iKbWiririiir,請選擇:3諳輸入分數(shù)段的起始分數(shù)知終1卜時扌眞60 9011.苣名!學號!嫦 !語文:-H英語!總分-II.111 _.李戒友!i1V:?1i怡8H1!2b?1 1I i張明明;= 01 $:78!67!821227I j11 王露104t1EG1771170英語成績在砂T昭學生共有3人!4、源程序代碼#in clude#i

8、n clude#i ncludevioma nip#i nclude#i ncludevWi ndows.h#in clude using n amespace std ;學生成績#defi ne HEADER1 n#define HEADER2 | 姓名 | 學號 | 數(shù)學 | 語文 |英語 |總分 |n|nclass Student / 定義學生類 public:char name20 ;char id20 ;int math ;int chinese ;int english ;int sum ;Student *next ;void input() ;void ReadFile(ist

9、ream & in) ;void show() ; ;void Student:input()/ 輸入學生信息函數(shù)coutntt 請輸入: endlendl ;coutname ;coutid ;coutmath ;coutchinese ;coutenglish ;sum = math + chinese + english ;void Student:ReadFile(istream & in)/ 讀取文件innameidmathchineseenglishsum ;void Student:show() / 輸出學生信息cout |setw(8)name |setw(6)id|setw(

10、6)math |setw(6)chinesecoutnext != End ; p = p-next) if(!strcmp(p-next-name , name) return p ;return NULL ;Student *StudentMassage:FindId(char *id)Student *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 S

11、tudent ;Head-next = new Student ;End = Head-next ;in.open(sort.txt) ;if(!in)endl ;coutReadFile(in) ;if(End-name0=0)break ;End-next = new Student ;End = End-next ;in.close() ;coutntt 讀取學生信息成功! next != End ; )temp = Head-next ;Head - next = Head -next-next ;delete temp ;delete Head , End ;/ 顯示菜單void S

12、tudentMassage:ShowMenu()coutnntttt主菜單 endlendlendl ;couttt*endlendl ;2、刪除學生信息couttt1 、 增 加 學 生 信 息endlendl ;couttt3、修改學生信息4、顯示學生信息endlendl ;couttt5、信息查詢6、排序e ndle ndl ;couttt7、成績統(tǒng)計0、安全退出 endlendl ;couttt*endlendlendl ;couttt 請選擇: ;void StudentMassage:Display() / 顯示學生信息 Student *p ; coutendlHEADER1HE

13、ADER2next ; p != End ; p = p-next)p-show() ;coutinput() ;End-next = new Student ;End = End-next ;coutntt 添加成功! endl ; coutn 輸入任意字符,繼續(xù) getch() ;/ 查找函數(shù)void StudentMassage:Find()char name20 , id20 ;int x ;Student *p = NULL ;coutntt*ncoutttt1、按學生姓名查找 endl ;coutttt2、按學生學號查找coutx ;switch(x)case 1:/ 按姓名查找c

14、outname ;if(p = FindItem(name)coutendlHEADER1HEADER2next-show() ;coutn 請輸入任意字符,繼續(xù) ;getch() ;elsecouttt 沒有找到該姓名的學生! endlendl ;cout 請輸入任意字符,繼續(xù) ;getch() ; break ;case 2:/ 按學號查找coutid ;coutendlHEADER1HEADER2next-show() ;coutn 請輸入任意字符,繼續(xù) ;getch() ;elsecoutntt 沒有找到該學號的學生! endlendl ;cout 請輸入任意字符,繼續(xù) ;getch(

15、) ; break ;void StudentMassage:ModifyItem() / 修改學生信息 char name20 ;Student *p = NULL ;coutname ;coutntt 已找到該學生,請輸入新的信息! next-input() ;coutntt 修改成功! endl ;Display() ;elsecoutntt 沒有找到! endl ;coutn 輸入任意字符!繼續(xù) ;getch() ;void StudentMassage:RemoveItem() / 刪除學生信息char name20 ;Student *p = NULL , *temp = NULL

16、 ;coutname ;temp = p-next ;p-next = p-next-next ;delete temp ;coutntt刪除成功! endl ;Display() ;elsecouttt 沒有找到! endl ;coutnext ; p != End ; p = p-next)n + ;return n ;int StudentMassage:Count() / 成績統(tǒng)計Student *p ;int x , m , n ,count = 0 ;if(!Head)coutntt 沒有資料可以統(tǒng)計! endl ;return 0 ;coutntt*n ;coutttt1、統(tǒng)計數(shù)

17、學成績 endl ;coutttt2、統(tǒng)計語文成績 endl ;coutttt3、統(tǒng)計英語成績 ;coutntt*nendlcoutx ;switch(x)case 1 :coutm ;cinn ;for(p = Head ; p != End ; p = p-next)if(p-math =m & p-math = n)count + ;if(count = 1)coutendlHEADER1HEADER2show() ;的學生共有coutntt數(shù) 學 成 績 在 m-ncount 人! nendl ;cout 輸入任意字符,繼續(xù) ;getch() ; ; break ;case 2:cou

18、tm ;cinn ;for(p = Head ; p != End ; p = p-next)if(p-chinese =m & p-chinese = n)count + ;if(count = 1)coutendlHEADER1HEADER2show() ;的學生共有coutntt語 文 成 績 在 m-ncount 人! nendl ;cout 輸入任意字符,繼續(xù) ;getch() ; ; break ;case 3:coutm ;cinn ;for(p = Head ; p != End ; p = p-next)if(p-english =m & p-english = n)的學生共

19、有/ 交 p1,p2count + ;if(count = 1)coutendlHEADER1HEADER2show() ;coutntt英 語 成 績 在 m-ncount 人! nendl ;coutname , p1-name) ;strcpy(temp-id , p1-id) ;temp-chinese = p1-chinese ; temp-english = p1-english ; temp-sum = p1-sum ; strcpy(p1-name , p2-name) ; strcpy(p1-id , p2-id) ; p1-math = p2-math ; p1-chine

20、se = p2-chinese ; p1-english = p2-english ; p1-sum = p2-sum ;strcpy(p2-name , temp-name) ; strcpy(p2-id , temp-id) ; p2-math = temp-math ; p2-chinese = temp-chinese ; p2-english = temp-english ; p2-sum = temp-sum ;void StudentMassage:Sort() / 排序 Student *p = NULL , *p1 = NULL , *k = NULL ; int n = S

21、tudentMassage:ListCount() , x , y ;if(n 2)擇:cout 數(shù)據(jù)較少,無法排序! endl ;return ;coutntt*n ;coutttt1、按數(shù)學成績排序 endl ;coutttt2、按語文成績排序 endl ;coutttt3、按英語成績排序 endl ;coutttt4、按總分排序 ;coutx ;switch(x)case 1:coutntt*n請選擇:coutttt1、按降序排序 nttt2 、按升序排序couty ;if(y = 1)for(k = p-next ; k != End ; k = k-next) if(p-math m

22、ath)StudentMassage:Swap(p , k) ; coutntt 排序完成! next ; p != End ; p = p-next) for(k = p-next ; k != End ; k = k-next) if(p-math k-math)StudentMassage:Swap(p , k) ; coutntt 排序完成! endl ;StudentMassage:Display() ;getch() ; ; break ;case 2:coutntt*n ;擇:IIcoutttt1、按降序排序 nttt2 、按升序排序couty ;if(y = 1)for(p =

23、 Head-next ; p != End ; p = p-next) for(k = p-next ; k != End ; k = k-next) if(p-chinese chinese)StudentMassage:Swap(p , k) ; coutntt 排序完成! next ; k != End ; k = k-next)if(p-chinese k-chinese)StudentMassage:Swap(p , k) ;coutntt 排序完成! endl ;StudentMassage:Display() ;getch() ;coutntt*n ;coutttt1、按降序排序

24、 nttt2、按升序排序 ;請選couty ;if(y = 1)if(p-english english)StudentMassage:Swap(p , k) ; coutntt 排序完成! next ; p != End ; p = p-next) for(k = p-next ; k != End ; k = k-next) if(p-english k-english)StudentMassage:Swap(p , k) ; coutntt 排序完成! endl ; StudentMassage:Display() ;getch() ; ; break ;case 4:擇:coutntt

25、*ncoutttt1、按降序排序 nttt2 、按升序排序couty ;if(y = 1)for(p = Head-next ; p != End ; p = p-next) for(k = p-next ; k != End ; k = k-next) if(p-sum sum)StudentMassage:Swap(p , k) ; coutntt 排序完成! sum k-sum)StudentMassage:Swap(p , k) ;coutntt 排序完成! next;p!=End;p=p-next)outnametidtmathtchinesetenglishtsumn;out.cl

26、ose();void main()int x ;bool quit = false ;coutnnnnnnnn ;couttt*、endl ;couttt 歡迎使用學生成績管理系統(tǒng)! endl ;couttt*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() ;

27、 break ;case 6:Grade.Sort() ; break ;case 7:Grade.Count() ; 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 庫類編寫對

28、話框的原理, 加深對 C+ 類的學習及應用。2、設計說明(1) 包含的功能有:查看、增加、刪除、排序、篩選等功能。(2) 通過 access 創(chuàng)建數(shù)據(jù)庫并通過 OD 方式訪問數(shù)據(jù)庫。(3) 編輯界面上的不同按鈕,創(chuàng)建消息映射,以完成相關(guān)的各種操作。3、設計步驟入相關(guān)內(nèi)容,選擇類型,完成后保存(2)添加ODBC數(shù)據(jù)源打開“ ODBC數(shù)據(jù)源管理器”添加Dnw dfl MrrDW CMT-S flquiwU5. tCTto Itt i de4kH|I I1.414詡冶 曲r.dbh|ii嚴 de-E胡 |1Driw de- M-cirai.-aH:I*.Jb |)nwvrE(i曲Mkwcil 削:曲

29、牛 T|血和 r.mbjDriw rjlfrfti il:.Li rnT-_ - Jv JLArW上 Ifflr繼續(xù)d 09刁|iMI ilqr;Kf 4i_wP rk mq. Ijnr Ei孑生站論姬壓卽 j Ar-ruBtfilnv-口41耳KD DbU-(Kl僵錄皿心肚空為每個編輯框控件綁定數(shù)據(jù)源字段: 選定一個編輯框控件,右鍵I建立類向 導|成員變量標簽|class name列表下選CmySet (數(shù)據(jù)庫的結(jié)果集)。先將Member 中不好記的值通過“ Delete Variable ”刪除,再“ Add Variables添加,改為自己好記的的名字Message MapsMember

30、 VanoblesEnjtct:半生成績音理豊城AutarriatiDnAdivieX tventeClass name:3IV疔生成埶腎理系壕屜m九VT生慮纜皆理砂SeixppCvlumn Nartirs*TypeMcinbtfCMySnlClass IntoAdd Class. *Add Variable.Delete VariableH學英進A 1 ! t- t tlongmrrnaithCSUiiiglongmidInngmenglilshlongm.chincsclongmfitimUpdate ColumnsBiad All將編輯框(在CmyView 視圖類中)與上述變量綁定:Ad

31、d VariableMFC Class/izrdMapi Member Viairiabllcb AulDiinaliuiiAtlivcX EventsClas IntoPrvjecl:莊比前皆理刁 I芳生成撅胃理系檢旳(.憶學生成蹴管現(xiàn)系統(tǒng)View(TPConltvl IDs:TypeMcmbtiGlace nmc:IDC8U1 ION SORTIDCDUnONT ADDIDCtDH 匸HIMtStlong-m_chinestIDCEDrT_fNGLI5lllongm_cngli!ihIDCEDII IDlong心jidIDCLDrT_MATI1kNiaIDCEDU NAMEString-r

32、n_nimeIDCEDrCSUMlangIDCSTATIC BlDC BUI fON DLLLlbIDC_BunON_nNDDescription:現(xiàn)在為功能鍵的實現(xiàn)進行操作增加新的對話框(窗體)及創(chuàng)建類成員在查詢或過濾記錄時,需要一個對話框,用于添加信息,增加對話框的方法:VC主菜單,“插入” I “資源” I “對話框(Dialog)類型” I放一個“分組框控件” I在分組框內(nèi)按圖設置編輯框和按鈕:CDiqADDyXHI clasi niE-mbcrilj- AddNew();m_pSet-m_id=DlgAdd.md;m_pSet-m _n ame=DlgAdd.m _n ame;m_pSet-m_chinese=DlgAdd.m_chinese;m_pSet-m_math=DlgAdd.m_math;m_pSet-m_english=DlgAdd.m_english; m_pSet-m_sum=DlgAdd.m_sum;m_pSet-Update();/ 更新記錄集m_p

溫馨提示

  • 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

提交評論