數(shù)據(jù)結(jié)構(gòu)課程設(shè)計學(xué)生成績管理系統(tǒng)_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計學(xué)生成績管理系統(tǒng)_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計學(xué)生成績管理系統(tǒng)_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計學(xué)生成績管理系統(tǒng)_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計學(xué)生成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上遼 寧 科 技 大 學(xué)課程設(shè)計報告 設(shè)計題目: 學(xué)生成績管理 學(xué)院、系: 電子與信息工程學(xué)院 專業(yè)班級: 計算機 11-2 班 學(xué)生姓名: 趙月 指導(dǎo)教師: 龍艷彬 成 績: 2013年 1 月 8 日目 錄一、需求分析-3二、概要設(shè)計-3三、詳細(xì)設(shè)計-53.1系統(tǒng)流程圖-53.2界面設(shè)計-63.3各功能模塊的設(shè)計-7四、測試與分析-9五、總結(jié)-15六、附錄(源代碼)-161. 需求分析11問題描述本系統(tǒng)實現(xiàn)了學(xué)生成績管理的功能,具有學(xué)生成績的輸入、讀取、查詢、修改、插入、刪除、排序,統(tǒng)計等功能。12基本要求 (1) 輸入的形式和輸入值的范圍; 首先輸入學(xué)生

2、個數(shù),按回車鍵。按照提示選擇,將學(xué)生信息保存在文本文檔中,具體對學(xué)生信息進(jìn)行插入刪除查詢操作時,將保存在文本文檔中的學(xué)生信息提取出來,保存在自己定義的數(shù)據(jù)結(jié)構(gòu)中,然后再對該數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作,所有操作完成,或者在相應(yīng)的命令后,再將學(xué)生信息保存到文本文檔中。輸入數(shù)據(jù)類型主要是char、int、float等數(shù)據(jù)類型,輸入內(nèi)容包括:學(xué)期、學(xué)號、姓名、高等數(shù)學(xué)成績,數(shù)據(jù)機構(gòu)成績,大學(xué)英語成績總分,平均分等數(shù)據(jù)。 (2) 輸出的形式;學(xué)期、學(xué)號、姓名、高等數(shù)學(xué)成績,數(shù)據(jù)結(jié)構(gòu)成績,大學(xué)英語成績,總分,平均分等數(shù)據(jù)。 (3) 程序所能達(dá)到的功能;1. 數(shù)據(jù)輸入功能,輸入的數(shù)據(jù)能最終保存在文

3、件中;2.數(shù)據(jù)刪除功能,能最終從文件中刪除;3. 排序功能,根據(jù)自己設(shè)計的數(shù)據(jù)結(jié)構(gòu),設(shè)計排序算法4.多種查詢(如按學(xué)號查詢、按姓名查詢、按成績查詢等)及輸出功能;6. 學(xué)生信息的修改(比如修改學(xué)生姓名,修改學(xué)生某門課程的成績) 7. 其它功能(如各種統(tǒng)計,統(tǒng)計每個學(xué)生所有課程的平均分,統(tǒng)計某門課程所有學(xué)生的平均分等等)2、 概要設(shè)計1. 數(shù)據(jù)結(jié)構(gòu):數(shù)組(順序存儲結(jié)構(gòu))2. 程序模塊:(1)先編入系統(tǒng)所需的庫函數(shù),使程序可運行#include <iostream.h>#include <stdlib.h>#include <iomanip.h> /主要是對ci

4、n,cout之類的一些操縱運算,是I/O流控制頭文件。 #include <conio.h>/文件和標(biāo)準(zhǔn)控制臺的輸入輸出#include <stdio.h> (2) 主界面的設(shè)計在主界面中包括“輸入學(xué)生信息并保存到文件 讀取文件并輸出學(xué)生信息 按學(xué)號及學(xué)期查詢 按姓名及學(xué)期查詢 按學(xué)號及學(xué)期修改信息 插入信息 按學(xué)號及學(xué)期刪除信息 按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序 按總分降序(選擇)排序 統(tǒng)計各科成績的總分和平均分 11退出”等全部的功能。每個函數(shù)體如下:void input(Student *r); /輸入void output(Student *r); /輸出void s

5、earchnum(Student *r); /按 學(xué)號及學(xué)期 查找void searchname(Student *r); /按 姓名及學(xué)期 查找void change(Student *r); /按 學(xué)號及學(xué)期 修改信息Student *insert(Student *r); /插入信息void shanchu(Student *r); /按 學(xué)號及學(xué)期 刪除信息void maopao(Student *r); /按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序void xuanze(Student *r); /按總分降序(選擇)排序void tongji(Student *r); /統(tǒng)計各科總分和平均分信息(3

6、) Main()函數(shù)的設(shè)計 在main()函數(shù)中主要運用do-while循環(huán)語句和switch()-case選擇判斷語句來調(diào)用相關(guān)功能模塊。系統(tǒng)的運行是在一個循環(huán)里進(jìn)行的,只有在主界面并選擇“退出”時,才會跳出循環(huán),并退出程序。void main()cout<<"輸入學(xué)生的個數(shù):"cin>>num; /全局變量Student *p=(Student *)new Studentnum;/定義指針數(shù)組,存放學(xué)生個數(shù)int m;docout<<endl;cout<<endl;cout<<"t*->菜單欄&

7、lt;-*n"<<endl;cout<<"t* <1> 輸入學(xué)生信息并保存到文件 <2> 讀取文件并輸出學(xué)生信息 *"<<endl;cout<<"t* <3> 按學(xué)號及學(xué)期查詢 <4> 按姓名及學(xué)期查詢 *"<<endl;cout<<"t* <5> 按學(xué)號及學(xué)期修改信息 <6> 插入信息 *"<<endl;cout<<"t* <7> 按學(xué)

8、號及學(xué)期刪除信息 <8> 按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序 *"<<endl;cout<<"t* <9> 按總分降序(選擇)排序 <10> 統(tǒng)計各科成績的總分和平均分*"<<endl;cout<<"t* <11> 退出 *"<<endl;cout<<"t*-*n"<<endl;cout<<"請選擇:"cin>>m;switch(m)case 1: input

9、(p); /輸入break;case 2:output(p);break;case 3: searchnum(p);break;case 4: searchname(p);break;case 5: change(p);break;case 6: p=insert(p);break;case 7: shanchu(p);break;case 8: maopao(p);break;case 9:xuanze(p);break;case 10: tongji(p);break;case 11: /退出break;while(m!=11); 3、詳細(xì)設(shè)計1、系統(tǒng)流程圖輸入學(xué)生個數(shù)主界面輸入學(xué)生成績輸

10、出學(xué)生成績查詢學(xué)生成績修改學(xué)生成績插入學(xué)生成績刪除學(xué)生信息按總分排序按單科排序統(tǒng)計分?jǐn)?shù)退出退出2、界面設(shè)計在此界面用戶可以選擇要操作的選項,回車之后即可進(jìn)入相關(guān)的頁面進(jìn)行操作(例如:選擇1,即可進(jìn)入輸入學(xué)生信息頁面)3、各功能模塊的設(shè)計主函數(shù)模塊: 用函數(shù)void main()來實現(xiàn) 主要是來顯示主菜單,使用戶選擇操作。首先定義一個指針數(shù)組(全局使用)Student *p=(Student *)new Studentnum;在此處num是指學(xué)生個數(shù),并不是學(xué)號,在這里應(yīng)用了do-while和switch-case語句來進(jìn)行選擇。最后若選擇“11”則是保存記錄并退出循環(huán)。輸入學(xué)生記錄模塊:用函數(shù)

11、void input(Student *r);來實現(xiàn) 主要功能用來對學(xué)生的成績進(jìn)行輸入。首先會有個提示“輸入學(xué)生的個數(shù)”,之后跳出主菜單,選擇"1",進(jìn)入輸入模塊輸入所需學(xué)生個數(shù)的學(xué)生信息,比如學(xué)期,學(xué)號,姓名,成績等。輸完之后會自動跳出主菜單。期間會有一些提示語,按照提示操作。根據(jù)if和for語句來判定是否有重復(fù)學(xué)號輸入,在本操作中,允許有重復(fù)學(xué)生姓名出現(xiàn)。t=1表示找到了與之重復(fù)的學(xué)號,t=0表示未出現(xiàn)重復(fù)學(xué)號。在此期間會根據(jù)語句算出總分和平均分,并默認(rèn)按學(xué)號排序保存到文件中去。之后返回主菜單。輸出學(xué)生記錄模塊: 用函數(shù)void output(Student *r);來

12、實現(xiàn) 主要功能是用來輸出學(xué)生的信息。在系統(tǒng)已經(jīng)錄入了學(xué)生資料的前提下,用該功能可以顯示學(xué)生的信息資料。同時也會自動跳出主菜單進(jìn)行后續(xù)操作。其中stew()指的是兩字節(jié)之間的間隔,在括號中填入數(shù)字就會有相應(yīng)的間隔。按學(xué)號及學(xué)期來查找學(xué)生記錄模塊: 用函數(shù)void searchnum(Student *r);來實現(xiàn) 主要功能時用來查找學(xué)生記錄。首先會有提示輸入學(xué)號及學(xué)期,再用for循環(huán)語句和if判斷語句來進(jìn)行查找,if(rm.num=n&&rm.term=k)若找到則顯示學(xué)生記錄并跳出循環(huán);if(rm.num!=n&&rm.term!=k)若沒有則提示“該學(xué)號不存在

13、,或沒有這個學(xué)期的成績!”。按姓名及學(xué)期來查找學(xué)生記錄模塊: 用函數(shù)void searchname(Student *r)來實現(xiàn) 主要功能也是用來查找學(xué)生記錄的。首先會有提示輸入姓名及學(xué)期,再用for循環(huán)語句和if判斷語句來進(jìn)行查找,if(0 = n0) && (rm.term = k)若找到則顯示學(xué)生記錄并跳出循環(huán);if(0!=n0&&rm.term!=k)若沒有則提示"該姓名不存在,或沒有這個學(xué)期的成績!"按學(xué)號及學(xué)期修改信息: 用函數(shù)void change(Student *r)來實現(xiàn) 主要功能是用來修改學(xué)生

14、記錄。首先也要有個判斷語句,判斷學(xué)生是否存在,這個是通過學(xué)號及學(xué)期來判斷的,這里會有提示輸入學(xué)號及學(xué)期,之后是for和if語句,if(rm.num=n && rm.term=k)若存在則先輸出修改之前的信息,查看是否正確。若正確,則修改此學(xué)生記錄,這里有個while循環(huán)語句,和switch-case選擇語句,用來選擇修改哪科成績,和是否進(jìn)行再修改記錄(通過選擇Y或y來實現(xiàn))。最后將修改過后的記錄保存到文件中去,并輸出提示"文件已修改并寫入"。插入學(xué)生資料模塊: 用函數(shù)Student *insert(Student *r);實現(xiàn) 主要功能是用來添加學(xué)生資料,成

15、績。若顯示沒有此學(xué)生的信息,就可以使用本模塊來進(jìn)行添加。在此模塊代碼中定義了另一個指針數(shù)組:Student *y = (Student *)new Studentnum+1;用來存放新添加的學(xué)生記錄。再利用for循環(huán)進(jìn)行輸入新學(xué)生記錄,for(m=0;m<num;m+)最后會有一個提示語句cout<<"是否繼續(xù)輸入?(繼續(xù),輸入y,否則輸入其他)"<<endl;若輸入y則繼續(xù)輸入,否則將返回主菜單。按學(xué)號及學(xué)期刪除學(xué)生記錄模塊 用函數(shù)void shanchu(Student *r)來實現(xiàn) 主要功能是用來刪除學(xué)生記錄。首先有個讀文件的操作,之后會

16、有判斷語句,根據(jù)所輸入的學(xué)號及學(xué)期,來顯示刪除前的信息記錄,添加for循環(huán)語句,循環(huán)把后一位的信息提前一位,整體數(shù)量減一,來進(jìn)行全局變量的修改,之后再把修改過后的信息記錄保存到文件中去。按數(shù)據(jù)結(jié)構(gòu)成績(冒泡)降序排序模塊用函數(shù)void maopao(Student *r) 來實現(xiàn) 主要功能時是用來對學(xué)生的記錄來按單科成績(這里以數(shù)據(jù)結(jié)構(gòu)成績?yōu)槔┻M(jìn)行排序。這樣方便對某科成績有個大致的了解。首先會有一個讀文件操作,為排序做基礎(chǔ)。本排序使用冒泡排序。它有兩個優(yōu)點:一是很容易寫出代碼;二是具有穩(wěn)定性,這里的穩(wěn)定性是指原序列中相同兩元素的相對順序仍然保持到排序后的序列。冒泡排序時進(jìn)過n-1趟子排序完成

17、的,第i趟子排序從第1個數(shù)至第n+1個數(shù),若第i個數(shù)比后一個數(shù)大(則升序,小則降序。本程序一律采用降序)則交換兩數(shù)。排序之后,將排序之后的結(jié)果寫入文件,再打開文件的時候,里面顯示的就是按單科成績排序后的結(jié)果。按總分(選擇)降序排序: 用函數(shù)void xuanze(Student *r)來實現(xiàn) 主要功能時是用來對學(xué)生的記錄來按總分成績進(jìn)行排序。這樣方便對學(xué)生總體有個大致的了解。首先會有一個讀文件操作,為排序做基礎(chǔ)。本排序使用選擇排序。其基本思想是:n個記錄的文件的直接選擇排序可進(jìn)過n-1趟直接選擇排序得到有序結(jié)果:初始狀態(tài),無序區(qū)為R1.n,有序區(qū)為空。第一趟排序 在無序區(qū)R1.n中選出關(guān)鍵字最

18、小的記錄Rk,將它與無序區(qū)的第一個記錄R1交換,使R1.n和R2.n分別變?yōu)橛涗泜€數(shù)增加1個的新有序區(qū)記錄和記錄數(shù)減少1個的新無序區(qū)。 . 第i趟排序 第i趟排序開始時,當(dāng)前有序區(qū)和無序區(qū)分別為R1.i-1和R(1in-1)。該趟排序從當(dāng)前無序區(qū)中選出關(guān)鍵字最小的記錄Rk,將它與無序區(qū)的第一個記錄與R交換,使R1.i和R分別變成為記錄個數(shù)增加1個的新有序區(qū)和記錄個數(shù)減少1個的新無序區(qū)。這樣,n個記錄的文件的直接選擇排序可經(jīng)過n-1趟直接選擇排序得到有序結(jié)果。統(tǒng)計各科總分及平均分模塊: 用函數(shù)void tongji(Student *r)來實現(xiàn) 主要功能是計算總分和各科平均分,計算完之后將總分保

19、存到文件中。4、 測試與分析進(jìn)入主界面選擇<1>輸入學(xué)生信息輸入結(jié)束后的界面:Student.txt:23 趙月 89.0 92.0 88.0 3 269.0 89.712 李麗 92.0 85.0 88.0 3 265.0 88.331 王虎 87.0 79.0 45.0 3 211.0 70.3選擇<2>,輸出了學(xué)生信息:選擇<3>,按學(xué)號及學(xué)期查詢學(xué)生信息:選擇<4>,按姓名及學(xué)期查詢學(xué)生信息:選擇<5>,按學(xué)號及學(xué)期修改學(xué)生信息:Student.txt:23 趙月 89.0 92.0 88.0 3 269.0 89.712 李

20、麗 92.0 85.0 88.0 3 265.0 88.331 王虎 87.0 79.0 85.0 3 211.0 70.3選擇<6>,插入學(xué)生信息:Student.txt:23 趙月 89.0 92.0 88.0 3 269.0 89.712 李麗 92.0 85.0 88.0 3 265.0 88.331 王虎 87.0 79.0 85.0 3 211.0 70.317 王萬 78.0 79.0 86.0 3 243.0 81.0選擇<7>,按學(xué)號及學(xué)期刪除學(xué)生信息:Student.txt:23 趙月 89.0 88.0 88.0 3 269.0 89.712 李麗

21、 92.0 88.0 88.0 3 265.0 88.317 王萬 78.0 86.0 86.0 3 243.0 81.0選擇<8>,按數(shù)據(jù)結(jié)構(gòu)降序<冒泡>排序:Student.txt:23 趙月 89.0 88.0 88.0 3 269.0 89.712 李麗 92.0 88.0 88.0 3 265.0 88.317 王萬 78.0 86.0 86.0 3 243.0 81.0選擇<9>,按總分降序<選擇>排序:Student.txt:23 趙月 89.0 88.0 88.0 3 269.0 89.712 李麗 92.0 88.0 88.0

22、3 265.0 88.317 王萬 78.0 86.0 86.0 3 243.0 81.選擇<10>,統(tǒng)計各科成績的總分和平均分:選擇<11>,退出:5、 總結(jié) 課程設(shè)計終于結(jié)束了感覺有很多的收獲,通過課程設(shè)計我又一次鞏固了所學(xué)的知識,對學(xué)習(xí)到的理論知識進(jìn)行了鞏固,真正的理解及體會了。平時有很多知識都是似懂非懂,通過平時上機操作,自己也了解了一些,但在這次的課設(shè)上,之前的困惑也通過這次的課設(shè)解決了一些,雖然還是不能夠全面的理解,但是有進(jìn)步就很有成就感。在課程設(shè)計中遇到不少困難,通過查閱資料,詢問同學(xué),在應(yīng)用課本的前提下,拓展課外知識,完成了此次課程設(shè)計,雖然還有許多不足

23、之處,但是從中我學(xué)到了許多東西。我懂得了我們不能拘泥于所學(xué)知識,應(yīng)對其靈活運用。 通過此次課程的設(shè)計使我認(rèn)識到對知識的掌握不全面,而且感覺我們在學(xué)習(xí)專業(yè)知識的同時還需要再加強其他方面知識的學(xué)習(xí),因為編程有時候涉及到其他方面的知識,只有了解了其他方面的知識才能收集資料,然后編程。在編程的過程中,又重新復(fù)習(xí)了課本,從中學(xué)到了許多以前未學(xué)到的知識,感覺非常有成就感,特別當(dāng)自己把程序一點點完善時,讓我對自己更加有信心,讓我對數(shù)據(jù)結(jié)構(gòu)這門課程也更感興趣了,以前我一直感覺枯燥難學(xué)的數(shù)據(jù)結(jié)構(gòu),在編程的過程中我也愿意去認(rèn)真研究學(xué)習(xí)了。 這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計中,多虧了同學(xué)的耐心幫助。如果沒有同學(xué)的指導(dǎo)改錯,我會

24、花更多的時間去找錯誤。在以后的學(xué)習(xí)過程中,我一定會認(rèn)真負(fù)責(zé)地對待課本中的每一個知識點,進(jìn)一步充實自己,提高自己。爭取在不斷的練習(xí)中提高自己的層次。也希望可以在以后的專業(yè)課當(dāng)中多增加一些實踐的內(nèi)容,只有多動手,我們才能不斷提高。6、附錄:源程序清單 #include <iostream.h>#include <stdlib.h>#include <iomanip.h> /主要是對cin,cout之類的一些操縱運算,是I/O流控制頭文件。 #include <conio.h> /文件和標(biāo)準(zhǔn)控制臺的輸入輸出#include <stdio.h>

25、; /數(shù)組、結(jié)構(gòu)體struct Student /結(jié)構(gòu)體int term; /學(xué)期int num; /學(xué)號char name12; /姓名float mark1; /成績1float mark2; /成績2float mark3; /成績3float sum; /總分float average; /平均分;int num=0;/聲明void input(Student *r); /輸入void output(Student *r); /輸出void searchnum(Student *r); /按 學(xué)號及學(xué)期 查找void searchname(Student *r); /按 姓名及學(xué)期 查

26、找void change(Student *r); /按 學(xué)號及學(xué)期 修改信息Student *insert(Student *r); /插入信息void shanchu(Student *r); /按 學(xué)號及學(xué)期 刪除信息void maopao(Student *r); /按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序void xuanze(Student *r); /按總分降序(選擇)排序void tongji(Student *r); /統(tǒng)計各科總分和平均分信息void main()cout<<"輸入學(xué)生的個數(shù):"cin>>num; /全局變量Student *p

27、=(Student *)new Studentnum;/定義指針數(shù)組,存放學(xué)生個數(shù)int m;docout<<endl;cout<<endl;cout<<"t*->菜單欄<-*n"<<endl;cout<<"t* <1> 輸入學(xué)生信息并保存到文件 <2> 讀取文件并輸出學(xué)生信息 *"<<endl;cout<<"t* <3> 按學(xué)號及學(xué)期查詢 <4> 按姓名及學(xué)期查詢 *"<<end

28、l;cout<<"t* <5> 按學(xué)號及學(xué)期修改信息 <6> 插入信息 *"<<endl;cout<<"t* <7> 按學(xué)號及學(xué)期刪除信息 <8> 按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序 *"<<endl;cout<<"t* <9> 按總分降序(選擇)排序 <10> 統(tǒng)計各科成績的總分和平均分*"<<endl;cout<<"t* <11> 退出 *"<&l

29、t;endl;cout<<"t*-*n"<<endl;cout<<"請選擇:"cin>>m;switch(m)case 1: input(p); /輸入break;case 2:output(p);break;case 3: searchnum(p);break;case 4: searchname(p);break;case 5: change(p);break;case 6: p=insert(p);break;case 7: shanchu(p);break;case 8: maopao(p);bre

30、ak;case 9:xuanze(p);break;case 10: tongji(p);break;case 11: /退出break;while(m!=11); /輸入信息void input(Student *r)FILE *fp;int n=0;int i;int t=0;/t為標(biāo)志位,1為找到,0為未找到 cout<<endl<<"-> 請輸入學(xué)生信息 <-"<<endl;for(i=0;i<num;i+)cout<<"請輸入學(xué)期:"cin>>ri.term;cout

31、<<"請輸入第"<<i+1<<"個人的學(xué)號:"cin>>ri.num; if(i>=1)for(n=0;n<i;n+)if(rn.num=ri.num) cout<<"該學(xué)號已存在!"<<endl;t=1;if(t=1)/表示有重復(fù)i-;t=0;continue;cout<<"請輸入姓名:"cin>>;cout<<"請輸入 高等數(shù)學(xué) 成績:"cin>>

32、ri.mark1;cout<<"請輸入 數(shù)據(jù)結(jié)構(gòu) 成績:"cin>>ri.mark2;cout<<"請輸入 大學(xué)英語 成績:"cin>>ri.mark3;ri.sum=ri.mark1+ri.mark2+ri.mark3;ri.average=(ri.mark1+ri.mark2+ri.mark3)/3;fp=fopen("student.txt","w+");if(!fp) cout<<"文件不能打開"<<endl;exi

33、t(0); for(n=0;n<i;n+)fprintf(fp,"%d %s %.1f %.1f %.1f %d %.1f %.1f",rn.num,,rn.mark1,rn.mark2,rn.mark3,rn.term,rn.sum,rn.average);fprintf(fp,"n");fclose(fp);cout<<"文件已經(jīng)寫入"<<endl;/輸出信息void output(Student *r) int m;system("cls"); /清屏if(num&

34、gt;0)FILE *fp;if(fp=fopen("student.txt","r")=NULL) /r只讀cout<<"文件不能打開"<<endl;exit(0); for(int n=0;n<num;n+)fscanf(fp,"%d%s%f%f%f%d%f%f",&rn.num,,&rn.mark1,&rn.mark2,&rn.mark3,&rn.term,&rn.sum,&rn.average);fclose

35、(fp); /關(guān)閉文件cout<<"文件已經(jīng)讀入"<<endl;cout<<"-> 學(xué)生信息如下 <-"<<endl;cout<<"學(xué)號"<<setw(6)<<"姓名"<<setw(10)<<"高等數(shù)學(xué)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(10) /setw(6) 設(shè)置輸出寬度<<"大學(xué)

36、英語"<<setw(6)<<"學(xué)期"<<setw(6)<<"總分"<<setw(8)<<"平均分"<<endl;cout<<"-"<<endl;for(m=0;m<num;m+)cout<<rm.num<<setw(6)<<<<setw(7)<<rm.mark1<<setw(10)<<rm.mar

37、k2<<setw(10)<<rm.mark3<<setw(8)<<rm.term<<setw(6)<<rm.sum<<setw(6)<<rm.average<<endl;cout<<"00"<<endl;elsecout<<"未輸入任何信息!"<<endl;/按學(xué)號及學(xué)期查找void searchnum(Student *r)int n,k;system("cls"); /清屏if

38、(num>0)cout<<"請輸入要查找學(xué)生的學(xué)號:"cin>>n;cout<<"請輸入學(xué)期號:"cin>>k;for(int m=0;m<num;m+)if(rm.num=n&&rm.term=k)/如果找到了輸出并跳出循環(huán)cout<<endl;cout<<"-> 要查找的信息如下 <-"<<endl;cout<<"學(xué)號"<<setw(6)<<"

39、姓名"<<setw(10)<<"高等數(shù)學(xué)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(10)<<"大學(xué)英語"<<setw(6)<<"學(xué)期"<<setw(6)<<"總分"<<setw(8)<<"平均分"<<endl;cout<<rm.num<<setw(6)<<rm.nam

40、e<<setw(7)<<rm.mark1<<setw(10)<<rm.mark2<<setw(10)<<rm.mark3<<setw(8)<<rm.term<<setw(6)<<rm.sum<<setw(8)<<rm.average<<endl;break;if(rm.num!=n&&rm.term!=k)/若沒找到提示不存在cout<<"該學(xué)號不存在,或沒有這個學(xué)期的成績!"<<

41、endl;elsecout<<"未輸入任何信息!"<<endl;/按姓名及學(xué)期查找void searchname(Student *r)char n12;int k;system("cls"); /清屏if(num>0) /如果沒輸入就查找提示cout<<"請輸入要查找學(xué)生的姓名:"cin>>n;cout<<"請輸入學(xué)期號:"cin>>k;for(int m=0;m<num;m+)if(0 = n0) &&am

42、p; (rm.term = k) /如果找到了輸出并跳出循環(huán)cout<<endl;cout<<"-> 要查找的信息如下 <-"<<endl;cout<<"學(xué)號"<<setw(6)<<"姓名"<<setw(10)<<"高等數(shù)學(xué)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(10)<<"大學(xué)英語"<<setw(

43、6)<<"學(xué)期"<<setw(6)<<"總分"<<setw(8)<<"平均分"<<endl;cout<<rm.num<<setw(6)<<<<setw(7)<<rm.mark1<<setw(10)<<rm.mark2<<setw(10)<<rm.mark3<<setw(8)<<rm.term<<setw(6)

44、<<rm.sum<<setw(8)<<rm.average<<endl;break;if(0!=n0&&rm.term!=k) /若沒找到提示不存在cout<<"該姓名不存在,或沒有這個學(xué)期的成績!"<<endl;elsecout<<"未輸入任何信息!"<<endl;/按學(xué)號及學(xué)期修改信息 void change(Student *r) FILE *fp;int n=0;char chiose ='Y'if(num

45、>0)int n,k;int t=0;system("cls"); /清屏cout<<"輸入要修改成績的學(xué)生學(xué)號:"cin>>n;cout<<"所需修改的學(xué)期:"cin>>k;for(int m=0;m<num;m+)if(rm.num=n && rm.term=k)int j;cout<<endl;cout<<"-> 修改前的信息如下 <-"<<endl;cout<<"

46、學(xué)號"<<setw(6)<<"姓名"<<setw(10)<<"高等數(shù)學(xué)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(10)<<"大學(xué)英語"<<setw(6)<<"學(xué)期"<<setw(6)<<"總分"<<setw(8)<<"平均分"<<endl;cout<&l

47、t;rm.num<<setw(6)<<<<setw(7)<<rm.mark1<<setw(10)<<rm.mark2<<setw(10)<<rm.mark3<<setw(8)<<rm.term<<setw(6)<<rm.sum<<setw(8)<<rm.average<<endl;cout<<endl;while (chiose='Y'|chiose='y')

48、cout<<"ttt-> 可以修改的項目如下 <-n"<<endl;cout<<"ttt 1.修改學(xué)生的 高等數(shù)學(xué) 成績記錄n"<<endl;cout<<"ttt 2.修改學(xué)生的 數(shù)據(jù)結(jié)構(gòu) 成績記錄n"<<endl;cout<<"ttt 3.修改學(xué)生的 大學(xué)英語 成績記錄n"<<endl; cout<<"請選擇:"cin>>j;switch(j)case 1:cou

49、t<<"輸入新的 高等數(shù)學(xué) 成績:"cin>>rm.mark1;break;case 2:cout<<"輸入新的 數(shù)據(jù)結(jié)構(gòu) 成績:"cin>>rm.mark2;break;case 3: cout<<"輸入新的 大學(xué)英語 成績:"cin>>rm.mark3;break;t=1;cout<<"是否要繼續(xù)修改此學(xué)生的其他成績記錄?(Y/N)"fflush(stdin);/清空輸入緩沖區(qū),通常是為了確保不影響后面的數(shù)據(jù)讀取cin>&

50、gt;chiose;elsecout<<"未輸入任何信息!"<<endl;if(fp=fopen("student.txt","w")=NULL) cout<<"文件不能打開"<<endl;exit(0); for(n=0;n<num;n+)fprintf(fp,"%d %s %.1f %.1f %.1f %d %.1f %.1f",rn.num,,rn.mark1,rn.mark2,rn.mark3,rn.term,rn.su

51、m,rn.average);fprintf(fp,"n");fclose(fp);cout<<"文件已修改并寫入"<<endl;/插入Student *insert(Student *r) FILE *fp;int m;char n;doif(fp=fopen("student.txt","r")=NULL) cout<<"文件不能打開"<<endl;exit(0); for(int o=0;o<num;o+)fscanf(fp,"

52、%d%s%f%f%f%d%f%f",&ro.num,,&ro.mark1,&ro.mark2,&ro.mark3,&ro.term,&ro.sum,&ro.average);Student *y = (Student *)new Studentnum+1;/定義另一個數(shù)組,用于存放新添加的記錄for(m=0;m<num;m+)ym=rm;r=y;cout<<"請輸入學(xué)期:"cin>>rnum.term;cout<<"請輸入學(xué)號:"ci

53、n>>rnum.num;cout<<"請輸入姓名:"cin>>;cout<<"請輸入 高等數(shù)學(xué) 成績:"cin>>rnum.mark1;cout<<"請輸入 數(shù)據(jù)結(jié)構(gòu) 成績:"cin>>rnum.mark2;cout<<"請輸入 大學(xué)英語 成績:"cin>>rnum.mark3;rnum.sum=rnum.mark1+rnum.mark2+rnum.mark3;/計算總分rnum.avera

54、ge=(rnum.mark1+rnum.mark2+rnum.mark3)/3;num+;cout<<"是否繼續(xù)輸入?(繼續(xù),輸入y,否則輸入其他)"<<endl;cin>>n;while(n='y');if(fp=fopen("student.txt","w+")=NULL)cout<<"文件不能打開"<<endl;exit(0); for(n=0;n<num;n+)fprintf(fp,"%d %s %.1f %.1f %.1f %d %.1f %.1f",rn.num,,rn.mark1,rn.mark2,rn.mark3,rn.term,rn.sum,rn.average);fprintf(fp,"n");fclose(fp);cout<<"文件已經(jīng)寫入&q

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論