




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上遼 寧 科 技 大 學(xué)課程設(shè)計(jì)報(bào)告 設(shè)計(jì)題目: 學(xué)生成績(jī)管理 學(xué)院、系: 電子與信息工程學(xué)院 專業(yè)班級(jí): 計(jì)算機(jī) 11-2 班 學(xué)生姓名: 趙月 指導(dǎo)教師: 龍艷彬 成 績(jī): 2013年 1 月 8 日目 錄一、需求分析-3二、概要設(shè)計(jì)-3三、詳細(xì)設(shè)計(jì)-53.1系統(tǒng)流程圖-53.2界面設(shè)計(jì)-63.3各功能模塊的設(shè)計(jì)-7四、測(cè)試與分析-9五、總結(jié)-15六、附錄(源代碼)-161. 需求分析11問題描述本系統(tǒng)實(shí)現(xiàn)了學(xué)生成績(jī)管理的功能,具有學(xué)生成績(jī)的輸入、讀取、查詢、修改、插入、刪除、排序,統(tǒng)計(jì)等功能。12基本要求 (1) 輸入的形式和輸入值的范圍; 首先輸入學(xué)生
2、個(gè)數(shù),按回車鍵。按照提示選擇,將學(xué)生信息保存在文本文檔中,具體對(duì)學(xué)生信息進(jìn)行插入刪除查詢操作時(shí),將保存在文本文檔中的學(xué)生信息提取出來,保存在自己定義的數(shù)據(jù)結(jié)構(gòu)中,然后再對(duì)該數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作,所有操作完成,或者在相應(yīng)的命令后,再將學(xué)生信息保存到文本文檔中。輸入數(shù)據(jù)類型主要是char、int、float等數(shù)據(jù)類型,輸入內(nèi)容包括:學(xué)期、學(xué)號(hào)、姓名、高等數(shù)學(xué)成績(jī),數(shù)據(jù)機(jī)構(gòu)成績(jī),大學(xué)英語(yǔ)成績(jī)總分,平均分等數(shù)據(jù)。 (2) 輸出的形式;學(xué)期、學(xué)號(hào)、姓名、高等數(shù)學(xué)成績(jī),數(shù)據(jù)結(jié)構(gòu)成績(jī),大學(xué)英語(yǔ)成績(jī),總分,平均分等數(shù)據(jù)。 (3) 程序所能達(dá)到的功能;1. 數(shù)據(jù)輸入功能,輸入的數(shù)據(jù)能最終保存在文
3、件中;2.數(shù)據(jù)刪除功能,能最終從文件中刪除;3. 排序功能,根據(jù)自己設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)排序算法4.多種查詢(如按學(xué)號(hào)查詢、按姓名查詢、按成績(jī)查詢等)及輸出功能;6. 學(xué)生信息的修改(比如修改學(xué)生姓名,修改學(xué)生某門課程的成績(jī)) 7. 其它功能(如各種統(tǒng)計(jì),統(tǒng)計(jì)每個(gè)學(xué)生所有課程的平均分,統(tǒng)計(jì)某門課程所有學(xué)生的平均分等等)2、 概要設(shè)計(jì)1. 數(shù)據(jù)結(jié)構(gòu):數(shù)組(順序存儲(chǔ)結(jié)構(gòu))2. 程序模塊:(1)先編入系統(tǒng)所需的庫(kù)函數(shù),使程序可運(yùn)行#include <iostream.h>#include <stdlib.h>#include <iomanip.h> /主要是對(duì)ci
4、n,cout之類的一些操縱運(yùn)算,是I/O流控制頭文件。 #include <conio.h>/文件和標(biāo)準(zhǔn)控制臺(tái)的輸入輸出#include <stdio.h> (2) 主界面的設(shè)計(jì)在主界面中包括“輸入學(xué)生信息并保存到文件 讀取文件并輸出學(xué)生信息 按學(xué)號(hào)及學(xué)期查詢 按姓名及學(xué)期查詢 按學(xué)號(hào)及學(xué)期修改信息 插入信息 按學(xué)號(hào)及學(xué)期刪除信息 按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序 按總分降序(選擇)排序 統(tǒng)計(jì)各科成績(jī)的總分和平均分 11退出”等全部的功能。每個(gè)函數(shù)體如下:void input(Student *r); /輸入void output(Student *r); /輸出void s
5、earchnum(Student *r); /按 學(xué)號(hào)及學(xué)期 查找void searchname(Student *r); /按 姓名及學(xué)期 查找void change(Student *r); /按 學(xué)號(hào)及學(xué)期 修改信息Student *insert(Student *r); /插入信息void shanchu(Student *r); /按 學(xué)號(hào)及學(xué)期 刪除信息void maopao(Student *r); /按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序void xuanze(Student *r); /按總分降序(選擇)排序void tongji(Student *r); /統(tǒng)計(jì)各科總分和平均分信息(3
6、) Main()函數(shù)的設(shè)計(jì) 在main()函數(shù)中主要運(yùn)用do-while循環(huán)語(yǔ)句和switch()-case選擇判斷語(yǔ)句來調(diào)用相關(guān)功能模塊。系統(tǒng)的運(yùn)行是在一個(gè)循環(huán)里進(jìn)行的,只有在主界面并選擇“退出”時(shí),才會(huì)跳出循環(huán),并退出程序。void main()cout<<"輸入學(xué)生的個(gè)數(shù):"cin>>num; /全局變量Student *p=(Student *)new Studentnum;/定義指針數(shù)組,存放學(xué)生個(gè)數(shù)int m;docout<<endl;cout<<endl;cout<<"t*->菜單欄&
7、lt;-*n"<<endl;cout<<"t* <1> 輸入學(xué)生信息并保存到文件 <2> 讀取文件并輸出學(xué)生信息 *"<<endl;cout<<"t* <3> 按學(xué)號(hào)及學(xué)期查詢 <4> 按姓名及學(xué)期查詢 *"<<endl;cout<<"t* <5> 按學(xué)號(hào)及學(xué)期修改信息 <6> 插入信息 *"<<endl;cout<<"t* <7> 按學(xué)
8、號(hào)及學(xué)期刪除信息 <8> 按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序 *"<<endl;cout<<"t* <9> 按總分降序(選擇)排序 <10> 統(tǒng)計(jì)各科成績(jī)的總分和平均分*"<<endl;cout<<"t* <11> 退出 *"<<endl;cout<<"t*-*n"<<endl;cout<<"請(qǐng)選擇:"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è)計(jì)1、系統(tǒng)流程圖輸入學(xué)生個(gè)數(shù)主界面輸入學(xué)生成績(jī)輸
10、出學(xué)生成績(jī)查詢學(xué)生成績(jī)修改學(xué)生成績(jī)插入學(xué)生成績(jī)刪除學(xué)生信息按總分排序按單科排序統(tǒng)計(jì)分?jǐn)?shù)退出退出2、界面設(shè)計(jì)在此界面用戶可以選擇要操作的選項(xiàng),回車之后即可進(jìn)入相關(guān)的頁(yè)面進(jìn)行操作(例如:選擇1,即可進(jìn)入輸入學(xué)生信息頁(yè)面)3、各功能模塊的設(shè)計(jì)主函數(shù)模塊: 用函數(shù)void main()來實(shí)現(xiàn) 主要是來顯示主菜單,使用戶選擇操作。首先定義一個(gè)指針數(shù)組(全局使用)Student *p=(Student *)new Studentnum;在此處num是指學(xué)生個(gè)數(shù),并不是學(xué)號(hào),在這里應(yīng)用了do-while和switch-case語(yǔ)句來進(jìn)行選擇。最后若選擇“11”則是保存記錄并退出循環(huán)。輸入學(xué)生記錄模塊:用函數(shù)
11、void input(Student *r);來實(shí)現(xiàn) 主要功能用來對(duì)學(xué)生的成績(jī)進(jìn)行輸入。首先會(huì)有個(gè)提示“輸入學(xué)生的個(gè)數(shù)”,之后跳出主菜單,選擇"1",進(jìn)入輸入模塊輸入所需學(xué)生個(gè)數(shù)的學(xué)生信息,比如學(xué)期,學(xué)號(hào),姓名,成績(jī)等。輸完之后會(huì)自動(dòng)跳出主菜單。期間會(huì)有一些提示語(yǔ),按照提示操作。根據(jù)if和for語(yǔ)句來判定是否有重復(fù)學(xué)號(hào)輸入,在本操作中,允許有重復(fù)學(xué)生姓名出現(xiàn)。t=1表示找到了與之重復(fù)的學(xué)號(hào),t=0表示未出現(xiàn)重復(fù)學(xué)號(hào)。在此期間會(huì)根據(jù)語(yǔ)句算出總分和平均分,并默認(rèn)按學(xué)號(hào)排序保存到文件中去。之后返回主菜單。輸出學(xué)生記錄模塊: 用函數(shù)void output(Student *r);來
12、實(shí)現(xiàn) 主要功能是用來輸出學(xué)生的信息。在系統(tǒng)已經(jīng)錄入了學(xué)生資料的前提下,用該功能可以顯示學(xué)生的信息資料。同時(shí)也會(huì)自動(dòng)跳出主菜單進(jìn)行后續(xù)操作。其中stew()指的是兩字節(jié)之間的間隔,在括號(hào)中填入數(shù)字就會(huì)有相應(yīng)的間隔。按學(xué)號(hào)及學(xué)期來查找學(xué)生記錄模塊: 用函數(shù)void searchnum(Student *r);來實(shí)現(xiàn) 主要功能時(shí)用來查找學(xué)生記錄。首先會(huì)有提示輸入學(xué)號(hào)及學(xué)期,再用for循環(huán)語(yǔ)句和if判斷語(yǔ)句來進(jìn)行查找,if(rm.num=n&&rm.term=k)若找到則顯示學(xué)生記錄并跳出循環(huán);if(rm.num!=n&&rm.term!=k)若沒有則提示“該學(xué)號(hào)不存在
13、,或沒有這個(gè)學(xué)期的成績(jī)!”。按姓名及學(xué)期來查找學(xué)生記錄模塊: 用函數(shù)void searchname(Student *r)來實(shí)現(xiàn) 主要功能也是用來查找學(xué)生記錄的。首先會(huì)有提示輸入姓名及學(xué)期,再用for循環(huán)語(yǔ)句和if判斷語(yǔ)句來進(jìn)行查找,if(0 = n0) && (rm.term = k)若找到則顯示學(xué)生記錄并跳出循環(huán);if(0!=n0&&rm.term!=k)若沒有則提示"該姓名不存在,或沒有這個(gè)學(xué)期的成績(jī)!"按學(xué)號(hào)及學(xué)期修改信息: 用函數(shù)void change(Student *r)來實(shí)現(xiàn) 主要功能是用來修改學(xué)生
14、記錄。首先也要有個(gè)判斷語(yǔ)句,判斷學(xué)生是否存在,這個(gè)是通過學(xué)號(hào)及學(xué)期來判斷的,這里會(huì)有提示輸入學(xué)號(hào)及學(xué)期,之后是for和if語(yǔ)句,if(rm.num=n && rm.term=k)若存在則先輸出修改之前的信息,查看是否正確。若正確,則修改此學(xué)生記錄,這里有個(gè)while循環(huán)語(yǔ)句,和switch-case選擇語(yǔ)句,用來選擇修改哪科成績(jī),和是否進(jìn)行再修改記錄(通過選擇Y或y來實(shí)現(xiàn))。最后將修改過后的記錄保存到文件中去,并輸出提示"文件已修改并寫入"。插入學(xué)生資料模塊: 用函數(shù)Student *insert(Student *r);實(shí)現(xiàn) 主要功能是用來添加學(xué)生資料,成
15、績(jī)。若顯示沒有此學(xué)生的信息,就可以使用本模塊來進(jìn)行添加。在此模塊代碼中定義了另一個(gè)指針數(shù)組:Student *y = (Student *)new Studentnum+1;用來存放新添加的學(xué)生記錄。再利用for循環(huán)進(jìn)行輸入新學(xué)生記錄,for(m=0;m<num;m+)最后會(huì)有一個(gè)提示語(yǔ)句cout<<"是否繼續(xù)輸入?(繼續(xù),輸入y,否則輸入其他)"<<endl;若輸入y則繼續(xù)輸入,否則將返回主菜單。按學(xué)號(hào)及學(xué)期刪除學(xué)生記錄模塊 用函數(shù)void shanchu(Student *r)來實(shí)現(xiàn) 主要功能是用來刪除學(xué)生記錄。首先有個(gè)讀文件的操作,之后會(huì)
16、有判斷語(yǔ)句,根據(jù)所輸入的學(xué)號(hào)及學(xué)期,來顯示刪除前的信息記錄,添加for循環(huán)語(yǔ)句,循環(huán)把后一位的信息提前一位,整體數(shù)量減一,來進(jìn)行全局變量的修改,之后再把修改過后的信息記錄保存到文件中去。按數(shù)據(jù)結(jié)構(gòu)成績(jī)(冒泡)降序排序模塊用函數(shù)void maopao(Student *r) 來實(shí)現(xiàn) 主要功能時(shí)是用來對(duì)學(xué)生的記錄來按單科成績(jī)(這里以數(shù)據(jù)結(jié)構(gòu)成績(jī)?yōu)槔┻M(jìn)行排序。這樣方便對(duì)某科成績(jī)有個(gè)大致的了解。首先會(huì)有一個(gè)讀文件操作,為排序做基礎(chǔ)。本排序使用冒泡排序。它有兩個(gè)優(yōu)點(diǎn):一是很容易寫出代碼;二是具有穩(wěn)定性,這里的穩(wěn)定性是指原序列中相同兩元素的相對(duì)順序仍然保持到排序后的序列。冒泡排序時(shí)進(jìn)過n-1趟子排序完成
17、的,第i趟子排序從第1個(gè)數(shù)至第n+1個(gè)數(shù),若第i個(gè)數(shù)比后一個(gè)數(shù)大(則升序,小則降序。本程序一律采用降序)則交換兩數(shù)。排序之后,將排序之后的結(jié)果寫入文件,再打開文件的時(shí)候,里面顯示的就是按單科成績(jī)排序后的結(jié)果。按總分(選擇)降序排序: 用函數(shù)void xuanze(Student *r)來實(shí)現(xiàn) 主要功能時(shí)是用來對(duì)學(xué)生的記錄來按總分成績(jī)進(jìn)行排序。這樣方便對(duì)學(xué)生總體有個(gè)大致的了解。首先會(huì)有一個(gè)讀文件操作,為排序做基礎(chǔ)。本排序使用選擇排序。其基本思想是:n個(gè)記錄的文件的直接選擇排序可進(jìn)過n-1趟直接選擇排序得到有序結(jié)果:初始狀態(tài),無序區(qū)為R1.n,有序區(qū)為空。第一趟排序 在無序區(qū)R1.n中選出關(guān)鍵字最
18、小的記錄Rk,將它與無序區(qū)的第一個(gè)記錄R1交換,使R1.n和R2.n分別變?yōu)橛涗泜€(gè)數(shù)增加1個(gè)的新有序區(qū)記錄和記錄數(shù)減少1個(gè)的新無序區(qū)。 . 第i趟排序 第i趟排序開始時(shí),當(dāng)前有序區(qū)和無序區(qū)分別為R1.i-1和R(1in-1)。該趟排序從當(dāng)前無序區(qū)中選出關(guān)鍵字最小的記錄Rk,將它與無序區(qū)的第一個(gè)記錄與R交換,使R1.i和R分別變成為記錄個(gè)數(shù)增加1個(gè)的新有序區(qū)和記錄個(gè)數(shù)減少1個(gè)的新無序區(qū)。這樣,n個(gè)記錄的文件的直接選擇排序可經(jīng)過n-1趟直接選擇排序得到有序結(jié)果。統(tǒng)計(jì)各科總分及平均分模塊: 用函數(shù)void tongji(Student *r)來實(shí)現(xiàn) 主要功能是計(jì)算總分和各科平均分,計(jì)算完之后將總分保
19、存到文件中。4、 測(cè)試與分析進(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é)號(hào)及學(xué)期查詢學(xué)生信息:選擇<4>,按姓名及學(xué)期查詢學(xué)生信息:選擇<5>,按學(xué)號(hào)及學(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é)號(hào)及學(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)計(jì)各科成績(jī)的總分和平均分:選擇<11>,退出:5、 總結(jié) 課程設(shè)計(jì)終于結(jié)束了感覺有很多的收獲,通過課程設(shè)計(jì)我又一次鞏固了所學(xué)的知識(shí),對(duì)學(xué)習(xí)到的理論知識(shí)進(jìn)行了鞏固,真正的理解及體會(huì)了。平時(shí)有很多知識(shí)都是似懂非懂,通過平時(shí)上機(jī)操作,自己也了解了一些,但在這次的課設(shè)上,之前的困惑也通過這次的課設(shè)解決了一些,雖然還是不能夠全面的理解,但是有進(jìn)步就很有成就感。在課程設(shè)計(jì)中遇到不少困難,通過查閱資料,詢問同學(xué),在應(yīng)用課本的前提下,拓展課外知識(shí),完成了此次課程設(shè)計(jì),雖然還有許多不足
23、之處,但是從中我學(xué)到了許多東西。我懂得了我們不能拘泥于所學(xué)知識(shí),應(yīng)對(duì)其靈活運(yùn)用。 通過此次課程的設(shè)計(jì)使我認(rèn)識(shí)到對(duì)知識(shí)的掌握不全面,而且感覺我們?cè)趯W(xué)習(xí)專業(yè)知識(shí)的同時(shí)還需要再加強(qiáng)其他方面知識(shí)的學(xué)習(xí),因?yàn)榫幊逃袝r(shí)候涉及到其他方面的知識(shí),只有了解了其他方面的知識(shí)才能收集資料,然后編程。在編程的過程中,又重新復(fù)習(xí)了課本,從中學(xué)到了許多以前未學(xué)到的知識(shí),感覺非常有成就感,特別當(dāng)自己把程序一點(diǎn)點(diǎn)完善時(shí),讓我對(duì)自己更加有信心,讓我對(duì)數(shù)據(jù)結(jié)構(gòu)這門課程也更感興趣了,以前我一直感覺枯燥難學(xué)的數(shù)據(jù)結(jié)構(gòu),在編程的過程中我也愿意去認(rèn)真研究學(xué)習(xí)了。 這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)中,多虧了同學(xué)的耐心幫助。如果沒有同學(xué)的指導(dǎo)改錯(cuò),我會(huì)
24、花更多的時(shí)間去找錯(cuò)誤。在以后的學(xué)習(xí)過程中,我一定會(huì)認(rèn)真負(fù)責(zé)地對(duì)待課本中的每一個(gè)知識(shí)點(diǎn),進(jìn)一步充實(shí)自己,提高自己。爭(zhēng)取在不斷的練習(xí)中提高自己的層次。也希望可以在以后的專業(yè)課當(dāng)中多增加一些實(shí)踐的內(nèi)容,只有多動(dòng)手,我們才能不斷提高。6、附錄:源程序清單 #include <iostream.h>#include <stdlib.h>#include <iomanip.h> /主要是對(duì)cin,cout之類的一些操縱運(yùn)算,是I/O流控制頭文件。 #include <conio.h> /文件和標(biāo)準(zhǔn)控制臺(tái)的輸入輸出#include <stdio.h>
25、; /數(shù)組、結(jié)構(gòu)體struct Student /結(jié)構(gòu)體int term; /學(xué)期int num; /學(xué)號(hào)char name12; /姓名float mark1; /成績(jī)1float mark2; /成績(jī)2float mark3; /成績(jī)3float sum; /總分float average; /平均分;int num=0;/聲明void input(Student *r); /輸入void output(Student *r); /輸出void searchnum(Student *r); /按 學(xué)號(hào)及學(xué)期 查找void searchname(Student *r); /按 姓名及學(xué)期 查
26、找void change(Student *r); /按 學(xué)號(hào)及學(xué)期 修改信息Student *insert(Student *r); /插入信息void shanchu(Student *r); /按 學(xué)號(hào)及學(xué)期 刪除信息void maopao(Student *r); /按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序void xuanze(Student *r); /按總分降序(選擇)排序void tongji(Student *r); /統(tǒng)計(jì)各科總分和平均分信息void main()cout<<"輸入學(xué)生的個(gè)數(shù):"cin>>num; /全局變量Student *p
27、=(Student *)new Studentnum;/定義指針數(shù)組,存放學(xué)生個(gè)數(shù)int m;docout<<endl;cout<<endl;cout<<"t*->菜單欄<-*n"<<endl;cout<<"t* <1> 輸入學(xué)生信息并保存到文件 <2> 讀取文件并輸出學(xué)生信息 *"<<endl;cout<<"t* <3> 按學(xué)號(hào)及學(xué)期查詢 <4> 按姓名及學(xué)期查詢 *"<<end
28、l;cout<<"t* <5> 按學(xué)號(hào)及學(xué)期修改信息 <6> 插入信息 *"<<endl;cout<<"t* <7> 按學(xué)號(hào)及學(xué)期刪除信息 <8> 按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序 *"<<endl;cout<<"t* <9> 按總分降序(選擇)排序 <10> 統(tǒng)計(jì)各科成績(jī)的總分和平均分*"<<endl;cout<<"t* <11> 退出 *"<&l
29、t;endl;cout<<"t*-*n"<<endl;cout<<"請(qǐng)選擇:"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<<"-> 請(qǐng)輸入學(xué)生信息 <-"<<endl;for(i=0;i<num;i+)cout<<"請(qǐng)輸入學(xué)期:"cin>>ri.term;cout
31、<<"請(qǐng)輸入第"<<i+1<<"個(gè)人的學(xué)號(hào):"cin>>ri.num; if(i>=1)for(n=0;n<i;n+)if(rn.num=ri.num) cout<<"該學(xué)號(hào)已存在!"<<endl;t=1;if(t=1)/表示有重復(fù)i-;t=0;continue;cout<<"請(qǐng)輸入姓名:"cin>>;cout<<"請(qǐng)輸入 高等數(shù)學(xué) 成績(jī):"cin>>
32、ri.mark1;cout<<"請(qǐng)輸入 數(shù)據(jù)結(jié)構(gòu) 成績(jī):"cin>>ri.mark2;cout<<"請(qǐng)輸入 大學(xué)英語(yǔ) 成績(jī):"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é)號(hào)"<<setw(6)<<"姓名"<<setw(10)<<"高等數(shù)學(xué)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(10) /setw(6) 設(shè)置輸出寬度<<"大學(xué)
36、英語(yǔ)"<<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é)號(hào)及學(xué)期查找void searchnum(Student *r)int n,k;system("cls"); /清屏if
38、(num>0)cout<<"請(qǐng)輸入要查找學(xué)生的學(xué)號(hào):"cin>>n;cout<<"請(qǐng)輸入學(xué)期號(hào):"cin>>k;for(int m=0;m<num;m+)if(rm.num=n&&rm.term=k)/如果找到了輸出并跳出循環(huán)cout<<endl;cout<<"-> 要查找的信息如下 <-"<<endl;cout<<"學(xué)號(hào)"<<setw(6)<<"
39、姓名"<<setw(10)<<"高等數(shù)學(xué)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(10)<<"大學(xué)英語(yǔ)"<<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é)號(hào)不存在,或沒有這個(gè)學(xué)期的成績(jī)!"<<
41、endl;elsecout<<"未輸入任何信息!"<<endl;/按姓名及學(xué)期查找void searchname(Student *r)char n12;int k;system("cls"); /清屏if(num>0) /如果沒輸入就查找提示cout<<"請(qǐng)輸入要查找學(xué)生的姓名:"cin>>n;cout<<"請(qǐng)輸入學(xué)期號(hào):"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é)號(hào)"<<setw(6)<<"姓名"<<setw(10)<<"高等數(shù)學(xué)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(10)<<"大學(xué)英語(yǔ)"<<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<<"該姓名不存在,或沒有這個(gè)學(xué)期的成績(jī)!"<<endl;elsecout<<"未輸入任何信息!"<<endl;/按學(xué)號(hào)及學(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<<"輸入要修改成績(jī)的學(xué)生學(xué)號(hào):"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é)號(hào)"<<setw(6)<<"姓名"<<setw(10)<<"高等數(shù)學(xué)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(10)<<"大學(xué)英語(yǔ)"<<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-> 可以修改的項(xiàng)目如下 <-n"<<endl;cout<<"ttt 1.修改學(xué)生的 高等數(shù)學(xué) 成績(jī)記錄n"<<endl;cout<<"ttt 2.修改學(xué)生的 數(shù)據(jù)結(jié)構(gòu) 成績(jī)記錄n"<<endl;cout<<"ttt 3.修改學(xué)生的 大學(xué)英語(yǔ) 成績(jī)記錄n"<<endl; cout<<"請(qǐng)選擇:"cin>>j;switch(j)case 1:cou
49、t<<"輸入新的 高等數(shù)學(xué) 成績(jī):"cin>>rm.mark1;break;case 2:cout<<"輸入新的 數(shù)據(jù)結(jié)構(gòu) 成績(jī):"cin>>rm.mark2;break;case 3: cout<<"輸入新的 大學(xué)英語(yǔ) 成績(jī):"cin>>rm.mark3;break;t=1;cout<<"是否要繼續(xù)修改此學(xué)生的其他成績(jī)記錄?(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;/定義另一個(gè)數(shù)組,用于存放新添加的記錄for(m=0;m<num;m+)ym=rm;r=y;cout<<"請(qǐng)輸入學(xué)期:"cin>>rnum.term;cout<<"請(qǐng)輸入學(xué)號(hào):"ci
53、n>>rnum.num;cout<<"請(qǐng)輸入姓名:"cin>>;cout<<"請(qǐng)輸入 高等數(shù)學(xué) 成績(jī):"cin>>rnum.mark1;cout<<"請(qǐng)輸入 數(shù)據(jù)結(jié)構(gòu) 成績(jī):"cin>>rnum.mark2;cout<<"請(qǐng)輸入 大學(xué)英語(yǔ) 成績(jī):"cin>>rnum.mark3;rnum.sum=rnum.mark1+rnum.mark2+rnum.mark3;/計(jì)算總分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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)分包協(xié)議合同標(biāo)準(zhǔn)文本
- 借資合同標(biāo)準(zhǔn)文本
- 代收轉(zhuǎn)讓合同標(biāo)準(zhǔn)文本
- ppp項(xiàng)目運(yùn)營(yíng)合同樣本
- 公司律師顧問聘用合同標(biāo)準(zhǔn)文本
- 企業(yè)用工勞動(dòng)合同樣本4篇
- 企業(yè)招聘中介合同標(biāo)準(zhǔn)文本
- 公司找法人借款合同范例
- 代理轉(zhuǎn)讓協(xié)議合同標(biāo)準(zhǔn)文本
- 產(chǎn)品賣方合同標(biāo)準(zhǔn)文本
- 黑紅色簡(jiǎn)約風(fēng)《白夜行》名著導(dǎo)讀好書推薦PPT模板
- 吉春亞神奇的漢字-完整版PPT
- 上海市初三數(shù)學(xué)競(jìng)賽(大同杯)試題
- 付款審批表(標(biāo)準(zhǔn)樣本)
- 《船舶安全檢查表》word版
- 市政工程監(jiān)理規(guī)劃范本(完整版)
- 壓裂設(shè)計(jì)步驟
- 交管12123駕照學(xué)法減分題庫(kù)及答案共155題(完整版)
- 水蛭深加工提取天然水蛭素項(xiàng)目資金申請(qǐng)報(bào)告寫作模板
- 讓創(chuàng)造力照亮每一個(gè)孩子的未來向明初級(jí)中學(xué)
- 模塊三 物資調(diào)運(yùn)問題的圖上作業(yè)法
評(píng)論
0/150
提交評(píng)論