




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、遼寧科技大學課程設(shè)計報告設(shè)計題目:學生成績治理學院、系:電子與信息工程學院專業(yè)班級:計算機11-2班學生姓名:月指導教師:龍艷彬成績:2021年1月8日目錄一、需求分析3二、概要設(shè)計3三、詳細設(shè)計53.1 系統(tǒng)流程圖53.2 界面設(shè)計63.3 各功能模塊的設(shè)計7四、測試與分析五、總結(jié)15六、附錄源代碼161.需求分析1.1問題描述本系統(tǒng)實現(xiàn)了學生成績治理的功能,具有學生成績的輸入、讀取、查詢、修改、插入、刪除、排序,統(tǒng)計等功能.1.2根本要求(1)輸入的形式和輸入值的圍;首先輸入學生個數(shù),按回車鍵.根據(jù)提示選擇,將學生信息保存在文本文檔中,具體對學生信息進行插入刪除查詢操作時,將保存在文本文檔
2、中的學生信息提取出來,保存在自己定義的數(shù)據(jù)結(jié)構(gòu)中,然后再對該數(shù)據(jù)結(jié)構(gòu)進行操作,所有操作完成,或者在相應的命令后,再將學生信息保存到文本文檔中.輸入數(shù)據(jù)類型主要是char、int、float等數(shù)據(jù)類型,輸入容包括:學期、學號、姓名、高等數(shù)學成績,數(shù)據(jù)機構(gòu)成績,大學英語成績總分,平均分等數(shù)據(jù).(2)輸出的形式;學期、學號、姓名、高等數(shù)學成績,數(shù)據(jù)結(jié)構(gòu)成績,大學英語成績,總分,平均分等數(shù)據(jù).(3)程序所能到達的功能;1 .數(shù)據(jù)輸入功能,輸入的數(shù)據(jù)能最終保存在文件中;2 .數(shù)據(jù)刪除功能,能最終從文件中刪除;3 .排序功能,根據(jù)自己設(shè)計的數(shù)據(jù)結(jié)構(gòu),設(shè)計排序算法4 .多種查詢(如按學號查詢、按姓名查詢、按
3、成績查詢等)及輸出功能;6 .學生信息的修改(比方修改學生姓名,修改學生某門課程的成績)7 .其它功能(如各種統(tǒng)計,統(tǒng)計每個學生所有課程的平均分,統(tǒng)計某門課程所有學生的平均分等等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>/主要是對cin,cout之類的一些操縱運算,是I/O流限制頭文件.#include<conio.h>/文件和標準限制臺的輸入輸出#include<stdi
4、o.h>2主界面的設(shè)計在主界面中包括“輸入學生信息并保存到文件讀取文件并輸出學生信息按學號及學期查詢按姓名及學期查詢按學號及學期修改信息插入信息按學號及學期刪除信息按數(shù)據(jù)Z構(gòu)降序冒泡排序按總分降序選擇排序統(tǒng)計各科成績的總分和平均分11退出等全部的功能.每個函數(shù)體如下:voidinput(Student*r);/輸入voidoutput(Student*r);/輸出voidsearchnum(Student*r);/按學號及學期查找voidsearchname(Student*r);/按姓名及學期查找voidchange(Student*r);/按學號及學期修改信息/插入信息Student
5、*insert(Student*r);voidshanchu(Student*r);/按學號及學期刪除信息voidmaopao(Student*r);按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序voidxuanze(Student*r);按總分降序(選擇)排序voidtongji(Student*r);/統(tǒng)計各科總分和平均分信息(3) Main()函數(shù)的設(shè)計在main()函數(shù)中主要運用do-while循環(huán)語句和switch()-case選擇判斷語句來調(diào)用相關(guān)功能模塊.系統(tǒng)的運行是在一個循環(huán)里進行的,只有在主界面并選擇“退出時,才會跳出循環(huán),并退出程序.voidmain()cout<<"輸入
6、學生的個數(shù):";cin>>num;/全局變量/定義指針數(shù)組,存放學生Student*p=(Student*)newStudentnum;個數(shù)intm;docout<<endl;信息*"<<endl;*"<<endl;cout<<endl;cout<<"t*n"<<endl;cout<<"t*"<<endl;cout<<"t*cout<<"t*cout<<"
7、;t*排序*"<<endl;cout<<"t*和平均分*"<<endl;cout<<"t*<1><3><5><7><9>輸入學生信息并保存到文件<2>讀取文件并輸出學生按學號及學期查詢<4>按姓名及學期查詢按學號及學期修改信息按學號及學期刪除信息按總分降序選擇排序<8><10><6>插入信息按數(shù)據(jù)結(jié)構(gòu)降序冒泡統(tǒng)計各科成績的總分<11>退出*"<<endl;
8、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);break;case 9:xuanze(
9、p);break;case 10:tongji(p);break;case 11: /退出break;while(m!=11);3、詳細設(shè)計1、系統(tǒng)流程圖輸入學生個2、界面設(shè)計ia,ia.a.aa、彳,£,=國lid'F:Zfebug;gggg£joe室黑露:知譽薩信息:到總息亭存f=lltm¥>并萱修刪推后學學序生忠及陡字號號舁清選梨在此界面用戶可以選擇要操作的選項,回車之后即可進入相關(guān)的頁面進行操作例如:選擇1,即可進入輸入學生信息頁面)3、各功能模塊的設(shè)計主函數(shù)模塊:用函數(shù)voidmain()來實現(xiàn)主要是來顯示主菜單,使用戶選擇操作.首先定義一
10、個指針數(shù)組(全局使用)Student*p=(Student*)newStudentnum;在此處num是指學生個數(shù),并不是學號,在這里應用了do-while和switch-case語句來進行選擇.最后假設(shè)選擇"11"那么是保存記錄并退出循環(huán).輸入學生記錄模塊:用函數(shù)voidinput(Student*r);來實現(xiàn)主要功能用來對學生的成績進行輸入.首先會有個提示“輸入學生的個數(shù),之后跳出主菜單,選擇"1,進入輸入模塊輸入所需學生個數(shù)的學生信息,比方學期,學號,姓名,成績等.輸完之后會自動跳出主菜單.期間會有一些提示語,根據(jù)提示操作.根據(jù)if和for語句來判定是否有重
11、復學號輸入,在本操作中,允許有重復學生姓名出現(xiàn).t=1表示找到了與之重復的學號,t=0表示未出現(xiàn)重復學號.在此期間會根據(jù)語句算出總分和平均分,并默認按學號排序保存到文件中去.之后返回主菜單.輸出學生記錄模塊:用函數(shù)voidoutput(Student*r);來實現(xiàn)主要功能是用來輸出學生的信息.在系統(tǒng)已經(jīng)錄入了學生資料的前提下,用該功能可以顯示學生的信息資料.同時也會自動跳出主菜單進行后續(xù)操作.其中stew()指的是兩字節(jié)之間的間隔,在括號中填入數(shù)字就會有相應的間隔.按學號及學期來查找學生記錄模塊:用函數(shù)voidsearchnum(Student*r);來實現(xiàn)主要功能時用來查找學生記錄.首先會有
12、提示輸入學號及學期,再用for循環(huán)語句和if判斷語句來進行查找,if(rm.num=n&&rm.term=k)假設(shè)找到那么顯示學生記錄并跳出循環(huán);if(rm.num!=n&&rm.term!=k)假設(shè)沒有那么提示“該學號不存在,或沒有這個學期的成績!.按姓名及學期來查找學生記錄模塊:用函數(shù)voidsearchname(Student*r)來實現(xiàn)主要功能也是用來查找學生記錄的.首先會有提示輸入姓名及學期,再用for循環(huán)語句和if判斷語句來進行查找,if(0=n0)&&(rm.term=k)假設(shè)找到那么顯示學生記錄并跳出循環(huán);if(rm
13、.name0!=n0&&rm.term!=k)假設(shè)沒有那么提示"該姓名不存在,或沒有這個學期的成績!"按學號及學期修改信息:用函數(shù)voidchange(Student*r)來實現(xiàn)主要功能是用來修改學生記錄.首先也要有個判斷語句,判斷學生是否存在,這個是通過學號及學期來判斷的,這里會有提示輸入學號及學期,之后是for和if語句,if(rm.num=n&&rm.term=k)假設(shè)存在那么先輸出修改之前的信息,查看是否正確.假設(shè)正確,那么修改此學生記錄,這里有個while循環(huán)語句,和switch-case選擇語句,用來選擇修改哪科成績,和是否進行再
14、修改記錄(通過選擇Y或y來實現(xiàn)).最后將修改正后的記錄保存到文件中去,并輸出提示"文件已修改并寫入".插入學生資料模塊:實現(xiàn)用函數(shù)Student*insert(Student*r);主要功能是用來添加學生資料,成績.假設(shè)顯示沒有此學生的信息,就可以使用本模塊來進行添加.在此模塊代碼中定義了另一個指針數(shù)組:Student*y=Student*newStudentnum+1;用來存放新添加的學生記錄.再利用for循環(huán)進行輸入新學生記錄,form=0;m<num;m+最后會有一個提示語句cout<<"是否繼續(xù)輸入繼續(xù),輸入y,否那么輸入其他"
15、<<endl;假設(shè)輸入y那么繼續(xù)輸入,否那么將返回主菜單.按學號及學期刪除學生記錄模塊用函數(shù)voidshanchuStudent*r來實現(xiàn)主要功能是用來刪除學生記錄.首先有個讀文件的操作,之后會有判斷語句,根據(jù)所輸入的學號及學期,來顯示刪除前的信息記錄,添加for循環(huán)語句,循環(huán)把后一位的信息提前一位,整體數(shù)量減一,來進行全局變量的修改,之后再把修改正后的信息記錄保存到文件中去.按數(shù)據(jù)結(jié)構(gòu)成績冒泡降序排序模塊用函數(shù)voidmaopaoStudent*r來實現(xiàn)主要功能時是用來對學生的記錄來按單科成績這里以數(shù)據(jù)結(jié)構(gòu)成績?yōu)槔M行排序.這樣方便對某科成績有個大致的了解.首先會有一個讀文件操作
16、,為排序做根底.本排序使用冒泡排序.它有兩個優(yōu)點:一是很容易寫出代碼;二是具有穩(wěn)定性,這里的穩(wěn)定性是指原序列中相同兩元素的相對順序仍然保持到排序后的序列.冒泡排序時進過n-1趟子排序完成的,第i趟子排序從第1個數(shù)至第n+1個數(shù),假設(shè)第i個數(shù)比后一個數(shù)大那么升序,小那么降序.本程序一律采用降序那么交換兩數(shù).排序之后,將排序之后的結(jié)果寫入文件,再翻開文件的時候,里面顯示的就是按單科成績排序后的結(jié)果.按總分選擇降序排序:用函數(shù)voidxuanze(Student*r)來實現(xiàn)主要功能時是用來對學生的記錄來按總分成績進行排序.這樣方便對學生總體有個大致的了解.首先會有一個讀文件操作,為排序做根底.本排序
17、使用選擇排序.其根本思想是:n個記錄的文件的直接選擇排序可進過n-1趟直接選擇排序得到有序結(jié)果:初始狀態(tài),無序區(qū)為R1.n,有序區(qū)為空.第一趟排序在無序區(qū)R1.n中選出關(guān)鍵字最小的記錄Rk,將它與無序區(qū)的第一個記錄R1交換,使R1.n和R2.n分別變?yōu)橛涗泜€數(shù)增加1個的新有序區(qū)記錄和記錄數(shù)減少1個的新無序區(qū).第i趟排序第i趟排序開始時,當前有序區(qū)和無序區(qū)分別為R1.i-1和R(14Wn-1).該趟排序從當前無序區(qū)中選出關(guān)鍵字最小的記錄Rk,將它與無序區(qū)的第一個記錄與R交換,使R1.i和R分別變成為記錄個數(shù)增加1個的新有序區(qū)和記錄個數(shù)減少1個的新無序區(qū).這樣,n個記錄的文件的直接選擇排序可經(jīng)過n
18、-1趟直接選擇排序得到有序結(jié)果.統(tǒng)計各科總分及平均分模塊:用函數(shù)voidtongji(Student*r)來實現(xiàn)主要功能是計算總分和各科平均分,計算完之后將總分保存到文件中.4、測試與分析進入主界面選擇1輸入學生信息't:pebugggsggjexe榆入學生的個數(shù)二3自三息士丁并普修刪財急期信學學學序生及及及降學號號口各茁£于急曳W賓fefe+JL一;二:.J,睛選擇請例入學生信息?一-層輸入學期q輸入結(jié)束后的界面:"F:'fDebjgcjaese績績璋成成成一那么亍相語成成成的原字構(gòu)語入入.人人入入入人入人已,-HN-JaH-InTJ-34.3HJ,-nH
19、.»-RM.-nHr.FH1清士舊土月主后青土舊土舊生-n生-R*apw-東單欄?底冒泡班班,意的馬分和十均分麟翻生信息息結(jié)(2>9<6><10>退出到息息序ff-fg.d=W改除豺并查修刪料sis生暴及及降學號號L5R11請這擇:.Student.txt:23月89.092.088.03269.089.712麗92.085.088.03265.088.331王虎87.079.045.03211.070.3選擇2,輸出了學生信息:而出學生信息涮查詢退出10統(tǒng)計百科國置嚼序喟泡楙序-痂的11分和平均分*-菜單欄f匕狂宣人8£269A9.78昌26
20、5王院4占21L趙旦李麗學生信息如下姓名高等數(shù)學數(shù)據(jù)結(jié)構(gòu)大罩耳話學期息分平均分請選擇J1"F:Debuggggg.exe息息序井沓修刪堂息朗期朗通JlajLn-j-生及及及降iTlr號口疝AilUS.選擇3,按學號及學期查詢學生信息:32£號學的生學13枕號查期IAIA翹出'<存至文件其息序信停一哥嚕改除5>并查修刪蟒主及及及蜂學號號=天萬ASI清選捍,選擇<4>,按姓名及學期查詢學生信息:卷炫件三息<11>1波除沁一為宜篩®信斌丈再生及貧蜂學號號4X力.CIS2-t-息B9選擇<5>,按學號及學期修改學生信
21、息:修以學生的大學其吉成績詢最2.修以學生的數(shù)據(jù)結(jié)陶成績圮錄1一修改學生的高等數(shù)學成情記錄得修改的學期用'=:>ebLigggggcxc"外:口血學明汨啟一單號姓名高等數(shù)學II王虎87訂以,修改的工程如F1.修改學生的高等款學成績;己錄2.修改學生的數(shù)兆結(jié)構(gòu)成績;己最3.修改學生的大學英語成績:己錄選A不同請曾受霞穗醒疆.嗎?MhON*、落旦欄?-*俁由改除卜,A修附型:-_-二千卞生及於降學號號ZB<3lp-bAT1nA_k.'."tl_-r-r.二11;存到文件信息11<3><4><&><8&
22、gt;彳<1H>退出|心領(lǐng)出學生信息£冒沖排用*勺月咨卻平均分呆Student.txt:23月89.092.088.03269.089.712麗92.085.088.03265.088.331王虎87.079.085.03211.070.3選擇<6>,插入學生信息:否那么輸入其他線績續(xù)續(xù)應成成戾五甫語,17或結(jié)英V詩詩詩詩詩詩生W7En文采亙欄工-H>1i件墳到息.自保司汛除公井杳修嘉生度及風降學號號口滅內(nèi)入手定學怠""JTl一.一:一:一;Student.txt:23月89.092.088.03269.089.712麗92.085.
23、088.03265.088.331王虎87.079.085.03211.017土刃78.079.086.03243.070.381.0選擇<7>,按學號及學期刪除學生信息:T-F;Debug;gggg.ex?rr#翻醯歌麟分:<4>?<6>I<9>%<te><11>退出息息序1§信tirI及先隆號otiticJlrTJ->A>>3s7g<ccc*»#*»*,菜單欄?京鬻藕舞蜜生信息混蝙®退出.用冒理甜序*緒的息分卻平均分存到文件甯改陳步井查修刪贄息s<i
24、號期學學的的竺績s糜除ffilffll一與:7要謨擇人人已選請請*受位SS落生及度度降字號號LZRAS1Hi請運雜Student.txt:23月89.088.088.03269.089.712麗92.088.088.03265.088.317土刃78.086.086.03243.081.0選擇<8>,按數(shù)據(jù)結(jié)構(gòu)降序<冒泡>排序:M-F:Debuggggg.ewe尸>>A>-35794息息停J一蘋腮B皮功及降號號一口冢J,lf.44>4到息息序井置修刪的息(1信學.學學序生及2及窿學號號口ZF'4孟S子息Student.txt:23月89.
25、088.088.03269.089.712麗92.088.088.03265.088.317土刃78.086.086.03243.081.0選擇<9>,按總分降序<選擇>排序:rFDebugggggaexe*<1>*<3>*<5>*<7>*<9>仔信;±硯保詢改除辦并查修跚墻總<1叁學學序生及及及降耆號本年學生總.百密曼哥4T74JJJJ+1-息息序魂黯生信息<2><4><6><8><10>退出髓髓黑幅加*<1>*<3
26、>*<5>»<7>*<9>保間破除?>.開直修刪時息學期<i生"K隆息息序小程<<=>取文件療輸出學生信息<4><6><S>姓名及學期查詢退評喟期排序-以的意分和平拘分不請選擇:半;Student.txt:23月89.088.088.03269.089.712麗92.088.088.03265.088.317土力78.086.086.03243.081.選擇<10>,統(tǒng)計各科成績的總分和平均分:f'F:Debuggg;gg£>
27、63;eR同等初學思分為二玷9千均分為煙.3333數(shù)據(jù)結(jié)構(gòu)息分為經(jīng)62平均分為汨7:羽3k學英語總分為德8平均分為73口3為為為MU占AJOU3*學苞語初結(jié)英等厚高螯到息息T亭4>罪s-s宦干學學序生及及摩學號號=3U讀取文件并歲i出學生信息*s察癱第繃查詢-穗I蹄®懶1退出*選擇<11>,退出:曷等叔學局分為平均分為二恥.333M據(jù)結(jié)構(gòu)總分為:跖2平均分為噌L心及上學英語總分為平均分為死入3加3生網(wǎng)及反降學號號口Z用Asst心除?>.3期朝朗位於孟S花息息序J=星5<z>F的息分和平均分x請選擇出F上出ssojiykey七口cant-iimuie
28、牛5、總結(jié)課程設(shè)計終于結(jié)束了感覺有很多的收獲,通過課程設(shè)計我又一次穩(wěn)固了所學的知識,對學習到的理論知識進行了穩(wěn)固,真正的理解及體會了.平時有很多知識都是似懂非懂,通過平時上機操作,自己也了解了一些,但在這次的課設(shè)上,之前的困惑也通過這次的課設(shè)解決了一些,雖然還是不能夠全面的理解,但是有進步就很有成就感.在課程設(shè)計中遇到不少困難,通過查閱資料,詢問同學,在應用課本的前提下,拓展課外知識,完成了此次課程設(shè)計,雖然還有許多缺乏之處,但是從中我學到了許多東西.我懂得了我們不能拘泥于所學知識,應對其靈活運用.通過此次課程的設(shè)計使我熟悉到對知識的掌握不全面,而且感覺我們在學習專業(yè)知識的同時還需要再增強其他
29、方面知識的學習,由于編程有時候涉及到其他方面的知識,只有了解了其他方面的知識才能收集資料,然后編程.在編程的過程中,又重新復習了課本,從中學到了許多以前未學到的知識,感覺非常有成就感,特別當自己把程序一點點完善時,讓我對自己更加有信心,讓我對數(shù)據(jù)結(jié)構(gòu)這門課程也更感興趣了,以前我一直感覺枯燥難學的數(shù)據(jù)結(jié)構(gòu),在編程的過程中我也愿意去認真研究學習了.這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計中,多虧了同學的耐心幫助.如果沒有同學的指導改錯,我會花更多的時間去找錯誤.在以后的學習過程中,我一定會認真負責地對待課本中的每一個知識點,進一步充實自己,提升自己.爭取在不斷的練習中提升自己的層次.也希望可以在以后的專業(yè)課當中多增加
30、一些實踐的容,只有多動手,我們才能不斷提升.6、附錄:源程序清單#include<iostream.h>#include<stdlib.h>#include<iomanip.h>件.#include<conio.h>#include<stdio.h>主要是對cin,cout之類的一些操縱運算,是I/O流限制頭文/文件和標準限制臺的輸入輸出/數(shù)組、結(jié)構(gòu)體structStudent/結(jié)構(gòu)體intterm;/學期intnum;/學號charname12;/姓名floatmark1;/成績1floatmark2;/成績2floatmark3;
31、/成績3floatsum;/總分floataverage;/平均分;intnum=0;voidinput(Student*r);/輸入voidoutput(Student*r);/輸出voidsearchnum(Student*r);/按學號及學期查找voidsearchname(Student*r);/按姓名及學期查找voidchange(Student*r);按學號及學期修改信息/聲明/插入信息Student*insert(Student*r);voidshanchu(Student*r);按學號及學期voidmaopao(Student*r);voidxuanze(Student*r);
32、voidtongji(Student*r);/統(tǒng)計各科總分和平均分信息按數(shù)據(jù)結(jié)構(gòu)降序冒泡排序/按總分降序選擇排序voidmain()cout<<"輸入學生的個數(shù):";cin>>num;/全局變量Student*p=(Student*)newStudentnum;/定義指針數(shù)組,存放學生個數(shù)intm;docout<<endl;cout<<endl;cout<<"t*>菜單欄<*n"<<endl;cout<<"t*<1>輸入學生信息并保存到文
33、件<2>讀取文件并輸出學生信息*"<<endl;cout<<"t*<3>按學號及學期查詢<4>按姓名及學期查詢*"<<endl;cout<<"t*<5>按學號及學期修改信息<6>插入信息*"<<endl;cout<<"t*<7>按學號及學期刪除信息<8>按數(shù)據(jù)結(jié)構(gòu)降序冒泡排序*"<<endl;cout<<"t*<9>按總分降序
34、選擇排序<10>統(tǒng)計各科成績的總分和平均分*"<<endl;cout<<"t*<11>退出*"<<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:cha
35、nge(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);/輸入信息voidinput(Student*r)FILE*fp;intn=0;inti;intt=0;/t為標志位,1為找到,0為未找到cout<<endl<<">請輸入學生信息<"<<endl;for(
36、i=0;i<num;i+)cout<<"請輸入學期:"cin>>ri.term;cout<<"請輸入第"<<i+1<<"個人的學號cin>>ri.num;if(i>=1)for(n=0;n<i;n+)(if(rn.num=ri.num)(cout<<"該學號已存在!"<<endl;t=1;if(t=1)/表示有重復(i-;t=0;continue;cout<<"請輸入姓名:";ci
37、n>>;cout<<"請輸入高等數(shù)學成績:";cin>>ri.mark1;cout<<"請輸入數(shù)據(jù)結(jié)構(gòu)成績:";cin>>ri.mark2;cout<<"請輸入大學英語成績:";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+&
38、quot;);if(!fp)(cout<<"文件不能翻開"<<endl;exit(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;/輸出信息voidoutput(
39、Student*r)(intm;system("cls");/清屏if(num>0)(FILE*fp;if(fp=fopen("student.txt","r")=NULL)/r只讀(cout<<"文件不能翻開"<<endl;exit(0);for(intn=0;n<num;n+)(fscanf(fp,"%d%s%f%f%f%d%f%f",&rn.num,,&rn.mark1,&rn.mark2,&rn.mark3
40、,&rn.term,&rn.sum,&rn.average);fclose(fp);/關(guān)閉文件cout<<"文件已經(jīng)讀入"<<endl;1下數(shù)據(jù)結(jié)構(gòu)平均分cout<<">學生信息<"<<endl;cout<<"學號"<<setw(6)<<"姓名"<<setw(10)<<"高等數(shù)學"<<setw(10)<<""&
41、lt;<setw(10)/setw(6)設(shè)置輸出寬度<<"大學英語"<<setw(6)<<"學期"<<setw(6)<<"總分"<<setw(8)<<""<<endl;cout<<""<<endl;for(m=0;m<num;m+)(cout<<rm.num<<setw(6)<<<<setw(7)<
42、<rm.mark1<<setw(10)<<rm.mark2<<setw(10)<<rm.mark3<<setw(8)<<rm.term<<setw(6)<<rm.sum<<setw(6)<<rm.average<<endl;cout<<"00"<<endl;elsecout<<"未輸入任何信息!"<<endl;/按學號及學期查找voidsearchnum(Student*
43、r)intn,k;system("cls");if(num>0)(cout<<"請輸入要查找學生的學號:"cin>>n;cout<<"請輸入學期號:"cin>>k;for(intm=0;m<num;m+)(if(rm.num=n&&rm.term=k)(cout<<endl;cout<<">/清屏/如果找到了輸出并跳出循環(huán)要查找的信息如下<"<<endl;cout<<"學
44、號"<<setw(6)<<"姓名"<<setw(10)<<"高等數(shù)學"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(10)<<"大學英語"<<setw(6)<<"學期"<<setw(6)<<"總分"<<setw(8)<<"平均分"<<endl;cout<<
45、;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;break;if(rm.num!=n&&rm.term!=k)/假設(shè)沒找到提示不存在cout<<&
46、quot;該學號不存在,或沒有這個學期的成績!"<<endl;elsecout<<"未輸入任何信息!"<<endl;/按姓名及學期查找voidsearchname(Student*r)(charn12;intk;system("cls");/清屏if(num>0)/如果沒輸入就查找提示cout<<"請輸入要查找學生的姓名:"cin>>n;cout<<"請輸入學期號:"cin>>k;for(intm=0;m<nu
47、m;m+)(if(0=n0)&&(rm.term=k)/如果找到了輸出并跳出循環(huán)(cout<<endl;cout<<">要查找的信息如下<"<<endl;cout<<"學號"<<setw(6)<<"姓名"<<setw(10)<<"高等數(shù)學"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(10)<<"大
48、學英語"<<setw(6)<<"學期"<<setw(6)<<"總分"<<setw(8)<<"平均分"<<endl;cout<<rm.num<<setw(6)<<<<setw(7)<<rm.mark1<<setw(10)<<rm.mark2<<setw(10)<<rm.mark3<<setw(8)<<
49、rm.term<<setw(6)<<rm.sum<<setw(8)<<rm.average<<endl;break;if(0!=n0&&rm.term!=k)/假設(shè)沒找到提示不存在cout<<"該姓名不存在,或沒有這個學期的成績!"<<endl;elsecout<<"未輸入任何信息!"<<endl;/按學號及學期修改信息voidchange(Student*r)(FILE*fp;intn=0;charchiose=
50、39;Y'if(num>0)(intn,k;intt=0;system("cls");/清屏cout<<"輸入要修改成績的學生學號:";cin>>n;cout<<"所需修改的學期cin>>k;for(intm=0;m<num;m+)(if(rm.num=n&&rm.term=k)(intj;cout<<endl;cout<<">修改前的信息如下<"<<endl;cout<<"
51、;學號"<<setw(6)<<"姓名"<<setw(10)<<"高等數(shù)學"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(10)<<"大學英語"<<setw(6)<<"學期"<<setw(6)<<"總分"<<setw(8)<<"平均分"<<endl;cout<&
52、lt;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')
53、(cout<<"ttt>可以修改的工程如下<n"<<endl;cout<<"ttt1.修改學生的高等數(shù)學成績記錄n"<<endl;cout<<"ttt2.修改學生的數(shù)據(jù)結(jié)構(gòu)成績記錄n"<<endl;cout<<"ttt3.修改學生的大學英語成績記錄n"<<endl;cout<<"請選擇:"cin>>j;switch(j)(case 1:cout<<&qu
54、ot;輸入新的高等數(shù)學成績:";cin>>rm.mark1;break;case 2:cout<<"輸入新的數(shù)據(jù)結(jié)構(gòu)成績:";cin>>rm.mark2;break;case 3:cout<<"輸入新的大學英語成績:";cin>>rm.mark3;break;)t=1;cout<<"是否要繼續(xù)修改此學生的其他成績記錄(Y/N)"fflush(stdin);/清空輸入緩沖區(qū),通常是為了保證不影響后面的數(shù)據(jù)讀取cin>>chiose;)elsec
55、out<<"未輸入任何信息!"<<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.sum,rn.average);fprintf(f
56、p,"n");)fclose(fp);cout<<"文件已修改并寫入"<<endl;)/插入Student*insert(Student*r)FILE*fp;intm;charn;doif(fp=fopen("student.txt","r")=NULL)cout<<"文件不能翻開"<<endl;exit(0);)for(into=0;o<num;o+)fscanf(fp,"%d%s%f%f%f%d%f%f",&r
57、o.num,,&ro.mark1,&ro.mark2,&ro.mark3,&ro.term,&ro.sum,&ro.average);)Student*y=(Student*)newStudentnum+1;/定義另一個數(shù)組,用于存放新添加的記錄for(m=0;m<num;m+)(ym=rm;)r=y;cout<<"請輸入學期:";cin>>rnum.term;cout<<"請輸入學號:";cin>>rnum.num;cout<<
58、;"請輸入姓名:";cin>>;cout<<"請輸入高等數(shù)學成績:";cin>>rnum.mark1;cout<<"請輸入數(shù)據(jù)結(jié)構(gòu)成績:";cin>>rnum.mark2;cout<<"請輸入大學英語成績:";cin>>rnum.mark3;rnum.sum=rnum.mark1+rnum.mark2+rnum.mark3;/計算總分rnum.average=(rnum.mark1+rnum.mark2+rnum.
59、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,,
60、rn.mark1,rn.mark2,rn.mark3,rn.term,rn.sum,rn.average);fprintf(fp,"n");fclose(fp);cout<<"文件已經(jīng)寫入"<<endl;returnr;)/按學號及學期刪除信息voidshanchu(Student*r)(FILE*fp;if(num>0)(if(fp=fopen("student.txt","r")=NULL)(cout<<"文件不能翻開"<<endl;ex
61、it(0);)for(into=0;o<num;o+)(fscanf(fp,"%d%s%f%f%f%d%f%f",&ro.num,,&ro.mark1,&ro.mark2,&ro.mark3,&ro.term,&ro.sum,&ro.average);)intn,k,t=0;cout<<"請輸入要刪除學生的學號cin>>n;cout<<"請輸入要刪除成績的學期cin>>k;for(intm=0;m<num;m+)if(rm.num=n&&rm.term=k)(for(intk=m;k<num;k+)(rk=rk+1;)num-;t=1;)/循環(huán)把后一位的信息提前一位/整體數(shù)量減一/標志變量1為找到0為未找到if(fp=fopen("student.txt","w+")=NULL)(cout<<"
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)業(yè)產(chǎn)業(yè)園可行性分析報告
- 建筑給排水設(shè)計規(guī)范gb50015
- 商業(yè)街區(qū)商業(yè)規(guī)劃手冊
- 智能生產(chǎn)線設(shè)備維護指南
- 三農(nóng)文化傳播策略方案
- 重慶高新技術(shù)產(chǎn)業(yè)
- 開題可行性分析報告模板
- 醫(yī)療設(shè)備操作與使用說明手冊
- 農(nóng)業(yè)產(chǎn)業(yè)鏈協(xié)同發(fā)展方案
- 衛(wèi)星導航定位系統(tǒng)技術(shù)應用文檔
- GB 2758-2012食品安全國家標準發(fā)酵酒及其配制酒
- 基因工程 (genetic engineering)課件
- 屠宰宰豬場輕工行業(yè)雙控體系建設(shè)文件風險分級管控體系
- 《色彩基礎(chǔ)知識》PPT課件(完整版)
- 專利管理制度管理辦法
- 拖拉機和聯(lián)合收割機駕駛?cè)松眢w條件證明
- 機電控制與可編程序控制器課程設(shè)計
- 基于ADAMS的懸置剛度仿真指南
- 彎矩二次分配法EXCEL計算
- 童話故事《老鼠搬雞蛋》.ppt
- 偏差管理和CAPA_王麗麗
評論
0/150
提交評論