![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-學(xué)生成績管理系統(tǒng)_第1頁](http://file4.renrendoc.com/view3/M02/18/3F/wKhkFmapFqmAGLElAAFHnER9FBw388.jpg)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-學(xué)生成績管理系統(tǒng)_第2頁](http://file4.renrendoc.com/view3/M02/18/3F/wKhkFmapFqmAGLElAAFHnER9FBw3882.jpg)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-學(xué)生成績管理系統(tǒng)_第3頁](http://file4.renrendoc.com/view3/M02/18/3F/wKhkFmapFqmAGLElAAFHnER9FBw3883.jpg)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-學(xué)生成績管理系統(tǒng)_第4頁](http://file4.renrendoc.com/view3/M02/18/3F/wKhkFmapFqmAGLElAAFHnER9FBw3884.jpg)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-學(xué)生成績管理系統(tǒng)_第5頁](http://file4.renrendoc.com/view3/M02/18/3F/wKhkFmapFqmAGLElAAFHnER9FBw3885.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
課程設(shè)計(論文)任務(wù)書軟件學(xué)院學(xué)院專業(yè)班一、課程設(shè)計(論文)學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn)二、課程設(shè)計(論文)工作自2014年12月22日起至2012年12月27日止三、課程設(shè)計(論文)地點:創(chuàng)新大樓機房四、課程設(shè)計(論文)容要求:1.本課程設(shè)計的目的⑴訓(xùn)練學(xué)生靈活應(yīng)用所學(xué)數(shù)據(jù)結(jié)構(gòu)知識,獨立完成問題分析,結(jié)合數(shù)據(jù)結(jié)構(gòu)理論知識,編寫程序求解指定問題;⑵初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;⑶提高綜合運用所學(xué)的理論知識和方法獨立分析和解決問題的能力,鞏固、深化學(xué)生的理論知識,提升編程水平。2.課程設(shè)計的任務(wù)及要求1)基本要求:⑴要求從分析題目的需求入手,按設(shè)計抽象數(shù)據(jù)類型、構(gòu)思算法、通過設(shè)計實現(xiàn)抽象數(shù)據(jù)類型、編寫上機程序和上機調(diào)試等若干步驟完成題目,最終寫出完整的報告;⑵在程序設(shè)計階段應(yīng)盡量利用已有的標準函數(shù),加大代碼的重用率;⑶程序設(shè)計語言推薦使用C/C++,程序書寫規(guī),源程序需必要的注釋;⑷每位同學(xué)需提交可獨立運行的程序和規(guī)的課程設(shè)計報告。2)課程設(shè)計論文編寫要求⑴理論設(shè)計部分以課程設(shè)計論文的形式提交,格式必須按照課程設(shè)計論文標準格式進行書寫和裝訂;⑵課程設(shè)計報告(論文)包括中文目錄、設(shè)計任務(wù)、需求分析、概要設(shè)計、詳細設(shè)計、編碼實現(xiàn)、調(diào)試分析、總結(jié)、謝辭、參考文獻、附錄等;⑶設(shè)計部分應(yīng)包含系統(tǒng)功能模塊圖,調(diào)試分析應(yīng)包括運行截圖等。3)課程設(shè)計評分標準:⑴學(xué)習(xí)態(tài)度:10分;⑵系統(tǒng)設(shè)計:20分;⑶編程調(diào)試:20分;⑷回答問題:20分;⑸論文撰寫:30分。4)參考文獻:⑴嚴蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].清華大學(xué)出版社.2010.3⑵嚴蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)題集(C語言版)[M].清華大學(xué)出版社.1999.2⑶何欽銘,馮燕等.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計[M].大學(xué)出版社.2007.85)課程設(shè)計進度安排⑴準備階段(4學(xué)時):選擇設(shè)計題目、了解目的要求、查閱相關(guān)資料;⑵程序模塊設(shè)計分析階段(4學(xué)時):程序概要設(shè)計、詳細設(shè)計;⑶代碼編寫調(diào)試階段(8學(xué)時):程序模塊代碼編寫、調(diào)試、測試;⑷撰寫論文階段(4學(xué)時):總結(jié)設(shè)計任務(wù)和設(shè)計容,撰寫設(shè)計論文。學(xué)生簽名:年月日6)課程設(shè)計題目具體要求:能夠?qū)崿F(xiàn)對學(xué)生成績的常用管理功能。⑴采用一定的存儲結(jié)構(gòu)對學(xué)生成績進行管理;⑵可以進行成績的錄入、查詢、修改、刪除等操作;⑶可以查詢某門課程的平均分,學(xué)生的排名,不同分數(shù)段的學(xué)生人數(shù)及學(xué)生信息等;⑷可以查詢某學(xué)生的各課程分數(shù),總分及學(xué)生的班級排名等;⑸可以按學(xué)號排序輸出全部學(xué)生的成績信息、總分及班級排名等。課程設(shè)計(論文)評審意見(1)學(xué)習(xí)態(tài)度(10分):優(yōu)()、良()、中()、一般()、差();(2)系統(tǒng)設(shè)計(20分):優(yōu)()、良()、中()、一般()、差();(3)編程調(diào)試(20分):優(yōu)()、良()、中()、一般()、差();(4)回答問題(20分):優(yōu)()、良()、中()、一般()、差();(5)論文撰寫(30分):優(yōu)()、良()、中()、一般()、差();(6)格式規(guī)性及考勤是否降等級:是()、否()評閱人:周娟職稱:講師2014年12月28日目錄第1章設(shè)計任務(wù)分析 2第2章功能實現(xiàn)詳細設(shè)計 2第3章功能測試 2第4章調(diào)試與改進 2第5章小結(jié) 2第6章源代碼 2第1章設(shè)計任務(wù)分析需求與功能分析需求分析學(xué)生成績管理系統(tǒng)是一個教育單位不可缺少的部分它的容對于學(xué)校的決策者和管理者來說都至關(guān)重要所以學(xué)生成績管理系統(tǒng)應(yīng)該能夠為用戶提供充足的信息和快捷的查詢手段。以前各個學(xué)校的學(xué)生成績管理基本上都是靠手工進行,但隨著各個學(xué)校的規(guī)模增大,有關(guān)學(xué)生成績管理工作所涉及的數(shù)據(jù)量也越來越大,有的學(xué)校不得不靠增加人力、物力來進行學(xué)生成績管理。這種管理方式存在著許多缺點,如:效率低、保密性差等,另外其所用時間長,產(chǎn)生大量的文件和數(shù)據(jù),這對于查找、更新和維護都帶來了不少的困難。如今學(xué)校的學(xué)生越來越多,成績管理的工作量越來越大,手工管理成績的弊端也越來越明顯。作為計算機應(yīng)用的一部分,使用計算機對學(xué)生檔案信息進行管理具有手工管理所無法比擬的優(yōu)點,如檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等,能夠極大地提高學(xué)生檔案管理的效率。所以我想借本次課程設(shè)計之際,設(shè)計一個簡易的學(xué)生成績管理系統(tǒng)。功能分析輸入輸出的形式和輸入值的圍首先輸入學(xué)生個數(shù)按回車鍵,然后按照提示選擇輸入學(xué)生信息并將學(xué)生信息保存在文本文檔中,具體對學(xué)生信息進行插入刪除查詢操作時,將保存在文本文檔中的學(xué)生信息提取出來保存在自己定義的數(shù)據(jù)結(jié)構(gòu)中,然后再對該數(shù)據(jù)結(jié)構(gòu)進行操作,所有操作完成后或者在相應(yīng)的命令后再將學(xué)生信息保存到文本文檔中。輸入數(shù)據(jù)類型主要是char、int、float等數(shù)據(jù)類型,輸入容包括學(xué)號、姓名、基礎(chǔ)會計成績、大學(xué)英語成績、數(shù)據(jù)結(jié)構(gòu)成績、總分、平均分等數(shù)據(jù)。輸出的形式為學(xué)號、姓名、基礎(chǔ)會計成績、大學(xué)英語成績、數(shù)據(jù)結(jié)構(gòu)成績、總分、平均分等數(shù)據(jù)。程序所達到的功能數(shù)據(jù)輸入功能,輸入的數(shù)據(jù)能最終保存在文件中;數(shù)據(jù)刪除功能,能最終從文件中刪除;多種排序功能,根據(jù)自己設(shè)計的數(shù)據(jù)結(jié)構(gòu),設(shè)計排序算法;多種查詢功能(如按學(xué)號查詢、按姓名查詢等)及輸出功能;學(xué)生信息的修改(比如修改學(xué)生姓名,修改學(xué)生某門課程的成績等);其他功能(如各種統(tǒng)計,統(tǒng)計每個學(xué)生所有課程的平均分,統(tǒng)計某門課程的所有學(xué)生的平均分等等)
第2章功能實現(xiàn)詳細設(shè)計庫函數(shù)先編入系統(tǒng)所需的庫函數(shù),使程序可運行。#include<stdio.h>#include<iostream>#include<stdlib.h>#include<iomanip>//主要是對cin,cout之類的一些操縱運算,是I/O流控制頭文件#include<conio.h>//文件和標準控制臺的輸入輸出菜單界面的設(shè)計主菜單的設(shè)計在主界面中包括“<1>輸入學(xué)生信息并保存到文件<2>讀取文件并輸出學(xué)生信息<3>按學(xué)號查詢<4>按姓名查詢<5>按學(xué)號修改信息<6>插入學(xué)生信息<7>按學(xué)號刪除信息<8>各科成績排序<9>按總分降序排序<10>各科成績統(tǒng)計<11>分數(shù)段查找<12>按學(xué)號排序<13>退出”等功能。每個函數(shù)體如下:voidinput(Stu*r);//輸入voidoutput(Stu*r);//輸出voidsearchnum(Stu*r);//按學(xué)號查找voidsearchname(Stu*r);//按姓名查找voidmodify(Stu*r);//修改學(xué)生信息Stu*insert(Stu*r);//插入信息voiderase(Stu*r);//按學(xué)號刪除信息voidsortmenu();//排序菜單voidsortsum(Stu*r);//按總分降序排序voidstat(Stu*r);//統(tǒng)計各科總分和平均分信息voidintmenu();//分數(shù)段查找菜單圖2.2.1主菜單界面圖2.2.1主菜單界面在此界面中用戶可以選擇要操作的選項,回車之后即進行相關(guān)操作或進入相關(guān)二級菜單排序菜單的設(shè)計在排序菜單中包括“<1>按基礎(chǔ)會計成績排序<2>按大學(xué)英語成績排序<3>按數(shù)據(jù)結(jié)構(gòu)成績排序<4>返回上級菜單”等功能。每個函數(shù)體如下:voidsort_BA(Stu*r);//基礎(chǔ)會計成績排序voidsort_UE(Stu*r);//大學(xué)英語成績排序圖2.2.2排序菜單界面圖2.2.2排序菜單界面分數(shù)段查找菜單的設(shè)計在分數(shù)段查找菜單中包括“<1>基礎(chǔ)會計分數(shù)段查找<2>大學(xué)英語分數(shù)段查找<3>數(shù)據(jù)結(jié)構(gòu)分數(shù)段查找<4>返回上級菜單”等功能。每個函數(shù)體如下:voidint_BA(Stu*r);//基礎(chǔ)會計分數(shù)段查找voidint_UE(Stu*r);//大學(xué)英語分數(shù)段查找圖2.2.3分數(shù)段查找菜單界面圖2.2.3分數(shù)段查找菜單界面詳細設(shè)計系統(tǒng)流程圖輸入學(xué)生人數(shù)輸入學(xué)生人數(shù)主菜單界面輸入學(xué)生成績輸出學(xué)生成績按學(xué)號查詢成績按姓名查詢成績修改學(xué)生信息各科成績排序按學(xué)號刪除信息插入學(xué)生信息按總分降序排序各科成績統(tǒng)計分數(shù)段查找按學(xué)號排序退出退出各功能模塊的設(shè)計主函數(shù)模塊用函數(shù)intmain()來實現(xiàn),主要功能是顯示菜單,讓用戶根據(jù)提示選擇操作,首先定義一個指針數(shù)組(全局使用)Stu*p=(Stu*)newStu[num];此處num指學(xué)生個數(shù),并不是學(xué)號,這里應(yīng)用了do-while和switch-case語句來進行循環(huán)選擇,最后若用戶選擇“13”則保存記錄并退出循環(huán)。學(xué)生記錄輸入模塊用函數(shù)voidinput(Stu*r)來實現(xiàn),在主菜單選擇“1”進入輸入模塊之后用戶需要輸入所需學(xué)生個數(shù)的學(xué)生信息,包括學(xué)號、姓名、各科成績等,輸入完成之后會返回主菜單。本函數(shù)根據(jù)設(shè)計的條件判斷循環(huán)來判斷是否有重復(fù)學(xué)號輸入。本函數(shù)還將算出學(xué)生的總分與平均分并按學(xué)號的默認順序?qū)⑵渑c輸入的原始學(xué)生記錄保存的文件中去。學(xué)生記錄輸入模塊用函數(shù)voidoutput(Stu*r)來實現(xiàn),在系統(tǒng)已經(jīng)錄入了學(xué)生資料的前提下,調(diào)用本函數(shù)可以輸出學(xué)生資料。其中setw()控制域?qū)挘ㄌ柪镎蛿?shù)據(jù)的數(shù)值代表域?qū)挼淖址麛?shù)。按學(xué)號查找學(xué)生記錄模塊用函數(shù)voidsearchnum(Stu*r)來實現(xiàn),首先提示用戶輸入要查找的學(xué)生學(xué)號,再用for循環(huán)語句和if判斷語句進行循環(huán)判斷來進行查找,if(r[m].num==n)表示找到學(xué)生記錄,然后顯示學(xué)生記錄并跳出循環(huán),if(r[m].num!=n)表示未找到學(xué)生記錄并輸出提示“該學(xué)號不存在!”。按姓名查找學(xué)生記錄模塊用函數(shù)voidsearchname(Stu*r)來實現(xiàn),首先提示用戶輸入要查找的學(xué)生姓名,再用for循環(huán)語句和if判斷語句進行循環(huán)判斷來進行查找,if(r[m].name[0]==n[0])表示找到學(xué)生記錄,然后顯示學(xué)生記錄并跳出循環(huán),if(r[m].name[0]!=n[0])表示未找到學(xué)生記錄并輸出提示“該姓名不存在!”。按學(xué)號修改學(xué)生信息模塊用函數(shù)voidmodify(Stu*r)來實現(xiàn),首先提示用戶輸入要修改信息的學(xué)生序號,再通過if條件語句進行判斷輸入的學(xué)號是否存在,if(r[m].num!=n)表示輸入的學(xué)生學(xué)號不存在,輸出提示“該學(xué)號不存在”,再利用begin標記和goto語句重新開始循環(huán)并提示用戶重新輸入要修改的學(xué)生學(xué)號。if(r[m].num==n)若輸入的學(xué)生學(xué)號存在,則先輸出修改前的學(xué)生信息,此處有一個while循環(huán)語句和switch-case選擇語句,用來選擇修改學(xué)生的某一科成績,并讓用戶選擇是否繼續(xù)進行修改。最后將修改過后的記錄寫入文件中,并輸出提示“文件已修改并寫入”。插入學(xué)生信息模塊用函數(shù)Stu*insert(Stu*r)來實現(xiàn),主要功能是添加學(xué)生資料。在此模塊中定義了另一個指針數(shù)組:Stu*y=(Stu*)newStu(num+1);用來存放新添加的學(xué)生記錄。再利用for循環(huán)語句進行輸入新學(xué)生記錄,最后輸出一個提示語句讓用戶判斷是否繼續(xù)輸入,若用戶輸入“Y”或“y”則繼續(xù)輸入,否則將返回主菜單。刪除學(xué)生記錄模塊用函數(shù)voiderase(Stu*r)來實現(xiàn),首先對文件進行讀取,之后的if判斷語句根據(jù)用戶輸入的學(xué)號來顯示刪除前的信息記錄,然后用for循環(huán)語句循環(huán)把后一位的信息提前一位,整體數(shù)量建議,來進行全局變量的修改,之后再把修改過后的信息記錄保存到文件中去。各科成績降序與學(xué)號(冒泡)排序模塊用函數(shù)voidsort_BA(Stu*r),voidsort_UE(Stu*r),voidsort_DS(Stu*r)三個函數(shù)來實現(xiàn),主要功能是利用用戶保存在文件的學(xué)生記錄按單科成績進行降序排序。首先對文件進行讀取,然后進行冒泡排序。冒泡排序有兩個優(yōu)點,一是代碼比較容易,二是具有穩(wěn)定性。這里的穩(wěn)定性是指原序列中相同兩元素的相對順序仍然保持到排序后的序列。冒泡排序時進過n-1趟子排序完成的,第i趟子排序從第1個數(shù)至第n+1個數(shù),若第i個數(shù)比后一個數(shù)大則交換兩數(shù)。排序之后,將排序之后的結(jié)果寫入文件,再讀取文件的時候,輸出的就是按單科成績排序后的結(jié)果??偡纸敌蚺判蚰K用函數(shù)voidsortsum(Stu*r)來實現(xiàn),主要功能是利用保存在文件的學(xué)生總分進行排序。首先對文件進行讀取,然后進行選擇排序。其基本思想是:n個記錄的文件的直接選擇排序可經(jīng)過n-1趟直接選擇排序得到有序結(jié)果:①初始狀態(tài):無序區(qū)為R[1..n],有序區(qū)為空。②第1趟排序:在無序區(qū)R[1..n]中選出關(guān)鍵字最小的記錄R[k],將它與無序區(qū)的第1個記錄R[1]交換,使R[1..1]和R[2..n]分別變?yōu)橛涗泜€數(shù)增加1個的新有序區(qū)和記錄個數(shù)減少1個的新無序區(qū)?!鄣趇趟排序第i趟排序開始時,當(dāng)前有序區(qū)和無序區(qū)分別為R[1..i-1]和R(i..n)。該趟排序從當(dāng)前無序區(qū)中選出關(guān)鍵字最小的記錄R[k],將它與無序區(qū)的第1個記錄R交換,使R[1..i]和R分別變?yōu)橛涗泜€數(shù)增加1個的新有序區(qū)和記錄個數(shù)減少1個的新無序區(qū)。各科成績統(tǒng)計模塊用函數(shù)voidstat(Stu*r)來實現(xiàn),主要功能是計算各科總分和各科平均分。各科分數(shù)段查找模塊用函數(shù)voidint_BA(Stu*r),voidint_UE(Stu*r),voidint_DS(Stu*r),voidintsum(Stu*r);四個函數(shù)實現(xiàn),首先提示用戶輸入要查找的單科成績或總分的上限與下限,然后通過for循環(huán)語句遍歷學(xué)生記錄找到符合條件的學(xué)生并輸入相應(yīng)學(xué)生記錄。
第3章功能測試圖3-1在主菜單選擇1圖3-1在主菜單選擇1開始輸入學(xué)生信息圖3-2圖3-2輸入學(xué)生信息完成后的界面Student.txt:1JBJ91.092.093.0276.092.02RS87.088.089.0264.088.03TT93.094.095.0282.094.04DB84.085.086.0255.085.05AJS92.093.094.0279.093.0圖3-3輸出文件內(nèi)的學(xué)生信息返回主菜單后選擇圖3-3輸出文件內(nèi)的學(xué)生信息圖3-4按學(xué)號查找學(xué)生信息返回主菜單后選擇圖3-4按學(xué)號查找學(xué)生信息
圖3-5按學(xué)生姓名查找返回主菜單后選擇圖3-5按學(xué)生姓名查找圖3-6按學(xué)號修改學(xué)生信息返回主菜單后選擇圖3-6按學(xué)號修改學(xué)生信息
圖3-7圖3-7修改完成后的界面Student.txt:1JBJ91.092.093.0276.092.02RS87.088.089.0264.088.03TT93.094.095.0282.094.04DB84.085.086.0255.085.05AJS92.093.094.0279.093.0圖3-8插入學(xué)生信息返回主菜單后選擇圖3-8插入學(xué)生信息Student.txt:1JBJ91.092.093.0276.092.02RS87.088.089.0264.088.03TT93.094.095.0282.094.04DB84.085.086.0255.085.05AJS92.093.094.0279.093.06HM99.098.097.0294.098.0圖3-9按學(xué)號刪除學(xué)生記錄返回主菜單后選擇圖3-9按學(xué)號刪除學(xué)生記錄student.txt:1JBJ91.092.093.0276.092.02RS87.088.089.0264.088.03TT93.094.095.0282.094.04DB84.085.086.0255.085.05AJS92.093.094.0279.093.0圖3-10排序菜單返回主菜單后選擇8進入排序菜單,通過選擇圖3-10排序菜單圖3-11排序完成的提示以選擇圖3-11排序完成的提示圖3-12圖3-12按基礎(chǔ)會計學(xué)成績降序?qū)W(xué)生記錄進行排序的排序結(jié)果Student.txt:3TT93.094.095.0282.094.05AJS92.093.094.0279.093.01JBJ91.092.093.0276.092.02RS87.088.089.0264.088.04DB84.085.086.0255.085.0圖3-13按總分降序排序返回菜單后選擇9按總分降序?qū)W(xué)生記錄進行排序。圖3-13按總分降序排序圖3-14圖3-14按總分降序排序?qū)W(xué)生記錄排序的結(jié)果Student.txt3TT93.094.095.0282.094.05AJS92.093.094.0279.093.01JBJ91.092.093.0276.092.02RS87.088.089.0264.088.04DB84.085.086.0255.085.0圖3-15各科總分和平均分的統(tǒng)計返回主菜單后選擇圖3-15各科總分和平均分的統(tǒng)計圖3-16分數(shù)段查找菜單返回主菜單后選擇圖3-16分數(shù)段查找菜單圖3-17圖3-17數(shù)據(jù)結(jié)構(gòu)分數(shù)段查找結(jié)果圖3-18提示用戶對學(xué)生記錄已完成按學(xué)號排序返回主菜單之后選擇圖3-18提示用戶對學(xué)生記錄已完成按學(xué)號排序圖3-19圖3-19按學(xué)生學(xué)號對學(xué)生記錄進行排序的排序結(jié)果student.txt:1JBJ91.092.093.0276.092.02RS87.088.089.0264.088.03TT93.094.095.0282.094.04DB84.085.086.0255.085.05AJS92.093.094.0279.093.0
第4章調(diào)試與改進程序編譯連接通過后在調(diào)試過程中以及本報告的編寫過程中遇到了不少的問題,經(jīng)過幾天的調(diào)試與修改大部分問題已經(jīng)成功解決。遇到并以解決的部分問題如下:在多處需要用戶輸入數(shù)字時沒有設(shè)置數(shù)字圍或者沒有限定用戶只能輸入數(shù)字,導(dǎo)致用戶在輸入錯誤時出現(xiàn)越界問題或者程序崩潰。以用戶在主菜單輸入數(shù)字選擇操作時為例,解決方法為利用while循環(huán)語句進行循環(huán)判斷,在用戶輸入越界的數(shù)字或者輸入非數(shù)字時輸出錯誤語句并利用cin.clear();與cin.sync();語句清除錯誤狀態(tài)與輸入流再提示用戶重新輸入。插入學(xué)生記錄時沒有進行新插入的學(xué)生學(xué)號是否重復(fù)的檢查,利用for循環(huán)語句與if判斷語句進行循環(huán)判斷,在用戶輸入重復(fù)的學(xué)生學(xué)號時輸出提示該學(xué)號已存在并利用cin.clear();與cin.sync();語句清除錯誤狀態(tài)與輸入流再提示用戶重新輸入。修改學(xué)生記錄函數(shù)voidmodify(Stu*r)沒有判斷用戶輸入的學(xué)號是否存在,初次采用修改方式是增加一個if判斷語句if(r[m].serial!=n)并將此這個判斷過程放在了for(m=0;m<num;m++)的大循環(huán),思考后發(fā)現(xiàn)在m遍歷了一次num之后再進行此判斷必定輸出錯誤提示,并跳到定義的begin標記處,陷入了死循環(huán)。思考過后定義一個新變量l,在每次滿足if(r[m].serial!=n)時自增1,在循環(huán)結(jié)束以后若l的值等于num則輸出錯誤提示并提示用戶重新輸入。修改過后發(fā)現(xiàn)在執(zhí)行完了修改成績之后仍會輸出錯誤提示。最后定義了end標記,在用戶輸入了一個存在的學(xué)號之后執(zhí)行修改成績完畢后直接利用goto語句跳到end標記處。
第5章小結(jié)通過本次課程設(shè)計,我鞏固了部分本學(xué)期以及上學(xué)期所學(xué)的理論知識,有了一些新的理解與體會。對于一些平時似懂非懂的知識,在這次課程設(shè)計中也解決了一些困惑,雖然還是不能夠全面的理解,但是已經(jīng)有了進步。在課程設(shè)計中遇到不少困難,包括上一章提及的幾個問題與已經(jīng)解決的一些小問題,通過查閱資料、與同學(xué)討論,在應(yīng)用課本的前提下。拓展課外知識,基本完成了本次課程設(shè)計,雖然其中還有許多不足之處,但是從中我學(xué)到了許多東西,懂得了不能拘泥于課本上的知識形式,應(yīng)該對其靈活運用。本次課程設(shè)計使我認識到自己對知識的掌握不夠全面,而且感覺到我們在學(xué)習(xí)專業(yè)知識的同時還需要加強對自己邏輯性思維的培養(yǎng)以及對其他方面知識的學(xué)習(xí),邏輯性思維對于能不能寫出一個好的算法以及排除代碼錯誤方面至關(guān)重要。在編程的過程中我又重新復(fù)習(xí)了本學(xué)期的數(shù)據(jù)結(jié)構(gòu)以及上學(xué)期的C++程序設(shè)計的課本,對一些以前學(xué)過的知識有了更深的理解,對一些以前沒學(xué)過的知識有了初步的認識,當(dāng)自己把程序一點點完善時讓我對學(xué)好數(shù)據(jù)結(jié)構(gòu)這門課程更有信心了,以前一直感覺枯燥難學(xué)的數(shù)據(jù)結(jié)構(gòu),在編程的過程中好像顯得不那么高深了。在以后的學(xué)習(xí)過程中,我一定會認真負責(zé)地對待課本中的知識點,進一步充實、提高自己。爭取在不斷的練習(xí)中提高自己的層次。
第6章源代碼#include<stdio.h>#include<iostream>#include<iomanip>#include<stdlib.h>#include<conio.h>usingnamespacestd;structStu{ intserial; charname[50]; floatBA_score;//基礎(chǔ)會計成績 floatUE_score;//大學(xué)英語成績 floatDS_score;//數(shù)據(jù)結(jié)構(gòu)成績 floatsum;//總分 floataverage;};//平均分intnum=0;intch,choice;voidinput(Stu*r);//輸入voidoutput(Stu*r);//輸出voidmenu();//菜單界面voidsortmenu();//排序菜單voidintmenu();//分數(shù)段查找菜單voidsearchnum(Stu*r);//按學(xué)號查找voidsearchname(Stu*r);//按姓名查找voidmodify(Stu*r);//修改學(xué)生信息voiderase(Stu*r);//按學(xué)號刪除信息voidsort_BA(Stu*r);//基礎(chǔ)會計成績排序voidsort_UE(Stu*r);//大學(xué)英語成績排序voidsort_DS(Stu*r);//數(shù)據(jù)結(jié)構(gòu)成績排序voidsortnum(Stu*r);//按學(xué)號排序voidsortsum(Stu*r);//按總分降序排序voidstat(Stu*r);//統(tǒng)計各科總分和平均分信息Stu*insert(Stu*r);//插入信息voidint_BA(Stu*r);//基礎(chǔ)會計分數(shù)段查找voidint_UE(Stu*r);//大學(xué)英語分數(shù)段查找voidint_DS(Stu*r);//數(shù)據(jù)結(jié)構(gòu)分數(shù)段查找voidintsum(Stu*r);//總分分數(shù)段查找intmain(){ cout<<"輸入學(xué)生的人數(shù):"; cin>>num;while(!cin) {cout<<"輸入錯誤!";cin.clear(); cin.sync(); cout<<"請重新輸入學(xué)生的人數(shù):"; cin>>num;} Stu*p=(Stu*)newStu[num]; intm; menu(); do{cin>>m;while(!cin||m<1||m>13) {cout<<"輸入錯誤!";cin.clear(); cin.sync(); cout<<"請重新輸入:"; cin>>m;}begin: switch(m) {case1: input(p); menu(); break; case2: output(p); menu(); break; case3: searchnum(p); menu(); break; case4: searchname(p); menu(); break; case5: modify(p); menu(); break; case6: p=insert(p); menu(); break; case7: erase(p); menu(); break; case8: sortmenu(); do{ cin>>ch; while(!cin||ch<1||ch>4) {cout<<"輸入錯誤!";cin.clear(); cin.sync(); cout<<"請重新輸入:"; cin>>ch;} switch(ch) {case1: system("cls"); sortmenu(); sort_BA(p); output(p); sortmenu(); break; case2: system("cls"); sortmenu(); sort_UE(p); output(p); sortmenu(); break; case3: system("cls"); sortmenu(); sort_DS(p); output(p); sortmenu(); break;}}while(ch!=4); system("cls"); menu(); break; case9: sortsum(p); output(p); menu(); break; case10: stat(p); menu(); break; case11: intmenu(); do{ cin>>choice; while(!cin||choice<1||choice>6) {cout<<"輸入錯誤!";cin.clear(); cin.sync(); cout<<"請重新輸入:"; cin>>choice;} switch(choice) {case1: system("cls"); intmenu(); int_BA(p); intmenu(); break; case2: system("cls"); intmenu(); int_UE(p); intmenu(); break; case3: system("cls"); intmenu(); int_DS(p); intmenu(); break; case4: system("cls"); intmenu(); intsum(p); intmenu(); break;}}while(choice!=5); system("cls"); menu(); break; case12: system("cls"); sortnum(p); output(p); menu(); break; case13: exit(0); default: while(m<0||m>12||!cin) {cout<<"輸入有誤!請重新輸入"<<endl; cin.clear(); cin.sync(); cin>>m; gotobegin;}}}while(1);}voidmenu(){ cout<<endl;cout<<endl;cout<<"*>菜單欄<*\n"<<endl;cout<<"*<1>輸入學(xué)生信息并保存到文件<2>讀取文件并輸出學(xué)生信息*"<<endl;cout<<"*<3>按學(xué)號查詢<4>按姓名查詢*"<<endl;cout<<"*<5>修改學(xué)生信息<6>插入學(xué)生信息*"<<endl;cout<<"*<7>按學(xué)號刪除信息<8>各科成績排序*"<<endl;cout<<"*<9>按總分降序排序<10>各科成績統(tǒng)計*"<<endl;cout<<"*<11>分數(shù)段查找<12>按學(xué)號排序*"<<endl;cout<<"*<13>退出*"<<endl;cout<<"**\n"<<endl;cout<<"請選擇:"<<endl;}voidsortmenu(){ cout<<endl;cout<<endl;cout<<"*>排序菜單<*\n"<<endl;cout<<"*各科成績排序*"<<endl;cout<<"*<1>基礎(chǔ)會計<2>大學(xué)英語*"<<endl;cout<<"*<3>數(shù)據(jù)結(jié)構(gòu)<4>返回上級*"<<endl;cout<<"**\n"<<endl;cout<<"請選擇:"<<endl;}voidintmenu(){ cout<<endl;cout<<endl;cout<<"*>分數(shù)段查找菜單<*\n"<<endl;cout<<"*各科及總分分數(shù)段查找*"<<endl;cout<<"*<1>基礎(chǔ)會計<2>大學(xué)英語*"<<endl;cout<<"*<3>數(shù)據(jù)結(jié)構(gòu)<4>總分查找*"<<endl; cout<<"*<5>返回上級*"<<endl;cout<<"**\n"<<endl;cout<<"請選擇:"<<endl;}voidinput(Stu*r){ FILE*fp; intn=0; inti; intt=0; cout<<endl<<">請輸入學(xué)生信息<"<<endl; for(i=0;i<num;i++) { cout<<"請輸入第"<<i+1<<"個人的學(xué)號:"; cin>>r[i].serial; while(!cin||r[i].serial<0) {cout<<"輸入錯誤或序號不合理!";cin.clear(); cin.sync(); cout<<"請重新輸入第"<<i+1<<"個人的學(xué)號:"; cin>>r[i].serial;} if(i>=1) {for(n=0;n<i;n++) { if(r[n].serial==r[i].serial) { cout<<"該學(xué)號已存在!"<<endl; t=1;}}} if(t==1) { i--; t=0; continue;} cout<<"請輸入姓名:"; cin>>r[i].name; cout<<"請輸入基礎(chǔ)會計成績:"; cin>>r[i].BA_score; while(!cin||r[i].BA_score>100||r[i].BA_score<0) {cout<<"輸入錯誤或成績不合理!";cin.clear(); cin.sync(); cout<<"請重新輸入基礎(chǔ)會計成績:"; cin>>r[i].BA_score;} cout<<"請輸入大學(xué)英語成績:"; cin>>r[i].UE_score; while(!cin||r[i].UE_score>100||r[i].UE_score<0) {cout<<"輸入錯誤或成績不合理!";cin.clear(); cin.sync(); cout<<"請重新輸入大學(xué)英語成績:"; cin>>r[i].UE_score;} cout<<"請輸入數(shù)據(jù)結(jié)構(gòu)成績:"; cin>>r[i].DS_score; while(!cin||r[i].DS_score>100||r[i].DS_score<0) {cout<<"輸入錯誤或成績不合理!";cin.clear(); cin.sync(); cout<<"請重新輸入數(shù)據(jù)結(jié)構(gòu)成績:"; cin>>r[i].DS_score;} r[i].sum=r[i].BA_score+r[i].UE_score+r[i].DS_score; r[i].average=(r[i].BA_score+r[i].UE_score+r[i].DS_score)/3;}fp=fopen("student.txt","w+");if(!fp){cout<<"文件不能打開"<<endl; exit(0);}for(n=0;n<i;n++){ fprintf(fp,"%d%s%.1f%.1f%.1f%.1f%.1f",r[n].serial,r[n].name,r[n].BA_score,r[n].UE_score,r[n].DS_score,r[n].sum,r[n].average);fprintf(fp,"\n");}fclose(fp);cout<<"文件已經(jīng)寫入!"<<endl;cout<<"按任意鍵以返回主菜單"<<endl; getch(); system("cls");}voidoutput(Stu*r){ intm; system("cls"); if(num>0) { FILE*fp; if((fp=fopen("student.txt","r"))==NULL) {cout<<"文件不能打開"<<endl; exit(0);} for(intn=0;n<num;n++) { fscanf(fp,"%d%s%f%f%f%f%f",&r[n].serial,&r[n].name,&r[n].BA_score,&r[n].UE_score,&r[n].DS_score,&r[n].sum,&r[n].average);} fclose(fp); cout<<"文件已經(jīng)讀入"<<endl; cout<<">學(xué)生信息如下<"<<endl;cout<<"學(xué)號"<<setw(6)<<"姓名"<<setw(10)<<"基礎(chǔ)會計"<<setw(10)<<"大學(xué)英語"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(6)<<"總分"<<setw(10)<<"平均分"<<endl;cout<<""<<endl;for(m=0;m<num;m++){ cout<<r[m].serial<<setw(8)<<r[m].name<<setw(10)<<r[m].BA_score<<setw(10)<<r[m].UE_score<<setw(10)<<r[m].DS_score<<setw(7)<<r[m].sum<<setw(9)<<r[m].average<<endl;}cout<<"\0\0"<<endl;}elsecout<<"未輸入任何信息!"<<endl; cout<<"按任意鍵以返回"<<endl; getch(); system("cls");}voidsearchnum(Stu*r){ intn; system("cls"); if(num>0) { FILE*fp; if((fp=fopen("student.txt","r"))==NULL) {cout<<"文件不能打開"<<endl; exit(0);} cout<<"請輸入要查找學(xué)生的學(xué)號:"; cin>>n; intm; for(m=0;m<num;m++) { if(r[m].serial==n) { cout<<endl; cout<<">要查找的信息如下<"<<endl;cout<<"學(xué)號"<<setw(6)<<"姓名"<<setw(10)<<"基礎(chǔ)會計"<<setw(10)<<"大學(xué)英語"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(6)<<"總分"<<setw(10)<<"平均分"<<endl;cout<<r[m].serial<<setw(8)<<r[m].name<<setw(10)<<r[m].BA_score<<setw(10)<<r[m].UE_score<<setw(10)<<r[m].DS_score<<setw(7)<<r[m].sum<<setw(9)<<r[m].average<<endl;break;}} if(r[m].serial!=n) cout<<"該學(xué)號不存在!"<<endl;} else cout<<"未輸入任何信息!"<<endl; cout<<"按任意鍵以返回主菜單"<<endl; getch(); system("cls");}voidsearchname(Stu*r){ charn[50]; system("cls"); if(num>0) { intm; FILE*fp; if((fp=fopen("student.txt","r"))==NULL) { cout<<"文件不能打開"<<endl; exit(0);} cout<<"請輸入要查找學(xué)生的姓名:"; cin>>n; for(m=0;m<num;m++) { if(r[m].name[0]==n[0]) {cout<<endl; cout<<">要查找的信息如下<"<<endl;cout<<"學(xué)號"<<setw(6)<<"姓名"<<setw(10)<<"基礎(chǔ)會計"<<setw(10)<<"大學(xué)英語"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(6)<<"總分"<<setw(10)<<"平均分"<<endl;cout<<r[m].serial<<setw(8)<<r[m].name<<setw(10)<<r[m].BA_score<<setw(10)<<r[m].UE_score<<setw(10)<<r[m].DS_score<<setw(7)<<r[m].sum<<setw(9)<<r[m].average<<endl;break;}} if(r[m].name[0]!=n[0]) cout<<"該姓名不存在!"<<endl;} else cout<<"未輸入任何信息!"<<endl; cout<<"按任意鍵以返回主菜單"<<endl; getch(); system("cls");}voidmodify(Stu*r){ FILE*fp; intm=0,n=0; charchoice='Y'; begin: if(num>0) { intn; system("cls"); cout<<"輸入要修改成績的學(xué)生學(xué)號:"; cin>>n; for(m=0;m<num;m++) { if(n==r[m].serial) { intj; cout<<endl; cout<<">修改前的信息如下<"<<endl;cout<<"學(xué)號"<<setw(6)<<"姓名"<<setw(10)<<"基礎(chǔ)會計"<<setw(10)<<"大學(xué)英語"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(6)<<"總分"<<setw(10)<<"平均分"<<endl;cout<<r[m].serial<<setw(8)<<r[m].name<<setw(10)<<r[m].BA_score<<setw(10)<<r[m].UE_score<<setw(10)<<r[m].DS_score<<setw(7)<<r[m].sum<<setw(9)<<r[m].average<<endl;cout<<endl;while(choice=='Y'||choice=='y'){ cout<<"\t\t\t>可以修改的項目如下<\n"<<endl; cout<<"\t\t\t1.修改學(xué)生的基礎(chǔ)會計成績記錄\n"<<endl; cout<<"\t\t\t2.修改學(xué)生的大學(xué)英語成績記錄\n"<<endl; cout<<"\t\t\t3.修改學(xué)生的數(shù)據(jù)結(jié)構(gòu)成績記錄\n"<<endl; cout<<"請選擇:"; cin>>j; while(!cin||j<1||j>3) {cout<<"輸入錯誤!";cin.clear(); cin.sync(); cout<<"請重新輸入:"; cin>>j;} switch(j) {case1: cout<<"輸入新的基礎(chǔ)會計成績:"; cin>>r[m].BA_score; break; case2: cout<<"輸入新的大學(xué)英語成績:"; cin>>r[m].UE_score; break; case3: cout<<"輸入新的數(shù)據(jù)結(jié)構(gòu)成績:"; cin>>r[m].DS_score; break;} cout<<"是否要繼續(xù)修改此學(xué)生的其他成績記錄?(Y/N)"; fflush(stdin); cin>>choice;}r[m].sum=r[m].BA_score+r[m].UE_score+r[m].DS_score; r[m].average=(r[m].BA_score+r[m].UE_score+r[m].DS_score)/3; gotoend;}} if(r[m].serial!=n) { cout<<"該學(xué)號不存在!"<<endl; cin.clear(); cin.sync(); cout<<"按任意鍵開始重新輸入"; getch(); gotobegin;}} else cout<<"未輸入任何信息!"<<endl; if((fp=fopen("student.txt","w"))==NULL) { cout<<"文件不能打開"<<endl; exit(0);} end: for(n=0;n<num;n++) {fprintf(fp,"%d%s%.1f%.1f%.1f%.1f%.1f",r[n].serial,r[n].name,r[n].BA_score,r[n].UE_score,r[n].DS_score,r[n].sum,r[n].average);fprintf(fp,"\n");}fclose(fp);cout<<"文件已修改并寫入!"<<endl; cout<<"按任意鍵以返回主菜單"<<endl; getch(); system("cls");}Stu*insert(Stu*r){ FILE*fp; intm; charn; do{ if((fp=fopen("student.txt","r"))==NULL) { cout<<"文件不能打開"<<endl; exit(0);} for(into=0;o<num;o++) { fscanf(fp,"%d%s%f%f%f%f%f",&r[o].serial,&r[o].name,&r[o].BA_score,&r[o].UE_score,&r[o].DS_score,&r[o].sum,&r[o].average);} Stu*y=(Stu*)newStu[num+1]; for(m=0;m<num;m++) { y[m]=r[m];} r=y; cout<<"請輸入學(xué)號:"; cin>>r[num].serial; for(intk=0;k<num;k++) {if(r[k].serial==r[m].serial) {cout<<"該學(xué)號已存在!"<<endl; cin.clear(); cin.sync(); cout<<"請重新輸入:"<<endl; cin>>r[num].serial;}} cout<<"請輸入姓名:"; cin>>r[num].name; cout<<"請輸入基礎(chǔ)會計成績:"; cin>>r[num].BA_score; cout<<"請輸入大學(xué)英語成績:"; cin>>r[num].UE_score; cout<<"請輸入數(shù)據(jù)結(jié)構(gòu)成績:"; cin>>r[num].DS_score; r[num].sum=r[num].BA_score+r[num].UE_score+r[num].DS_score; r[num].average=(r[num].BA_score+r[num].UE_score+r[num].DS_score)/3; num++; cout<<"是否繼續(xù)輸入?(Y/N)"<<endl; fflush(stdin); cin>>n;}while(n=='Y'||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%.1f%.1f",r[n].serial,r[n].name,r[n].BA_score,r[n].UE_score,r[n].DS_score,r[n].sum,r[n].average);fprintf(fp,"\n");} fclose(fp); cout<<"文件已經(jīng)寫入"<<endl; cout<<"按任意鍵以返回主菜單"<<endl; getch(); system("cls"); returnr;}voiderase(Stu*r){ FILE*fp; if(num>0) { if((fp=fopen("student.txt","r"))==NULL) {cout<<"文件不能打開"<<endl; exit(0);} for(into=0;o<num;o++) { fscanf(fp,"%d%s%f%f%f%f%f",&r[o].serial,&r[o].name,&r[o].BA_score,&r[o].UE_score,&r[o].DS_score,&r[o].sum,&r[o].average);} intn,t=0; cout<<"請輸入要刪除學(xué)生的學(xué)號:"; cin>>n; for(intm=0;m<num;m++) if(r[m].serial==n) { charj; cout<<endl; cout<<">要刪除學(xué)生的信息如下<"<<endl;cout<<"學(xué)號"<<setw(6)<<"姓名"<<setw(10)<<"基礎(chǔ)會計"<<setw(10)<<"大學(xué)英語"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(6)<<"總分"<<setw(8)<<"平均分"<<endl;cout<<r[m].serial<<setw(6)<<r[m].name<<setw(7)<<r[m].BA_score<<setw(10)<<r[m].UE_score<<setw(10)<<r[m].DS_score<<setw(8)<<r[m].sum<<setw(6)<<r[m].average<<endl;cout<<endl;cout<<"確定刪除?(Y/N)"<<endl;cin>>j; if(j=='Y'||j=='y') { for(intl=m;l<num;l++) { r[l]=r[l+1];} num--; t=1;} else { cout<<"學(xué)生記錄未刪除!"<<endl; gotoend;}} if((fp=fopen("student.txt","w+"))==NULL) { cout<<"文件不能打開!"<<endl; exit(0);} for(n=0;n<num;n++) { fprintf(fp,"%d%s%.1f%.1f%.1f%.1f%.1f",r[n].serial,r[n].name,r[n].BA_score,r[n].UE_score,r[n].DS_score,r[n].sum,r[n].average);fprintf(fp,"\n");} fclose(fp); cout<<"文件已經(jīng)寫入"<<endl; if(t==0) cout<<"該學(xué)號不存在!"<<endl;} else cout<<"未輸入任何信息!"<<endl; end: cout<<"按任意鍵以返回主菜單"<<endl; getch(); system("cls");}voidsort_BA(Stu*r){ FILE*fp; if(num>0) {if((fp=fopen("student.txt","r"))==NULL) { cout<<"文件不能打開!"<<endl; exit(0);} for(intn=0;n<num;n++) { fscanf(fp,"%d%s%f%f%f%f%f",&r[n].serial,&r[n].name,&r[n].BA_score,&r[n].UE_score,&r[n].DS_score,&r[n].sum,&r[n].average);} for(intk=0;k<num-1;k++) { for(intm=0;m<num-k;m++) {Stumax; if(r[m].BA_score<r[m+1].BA_score) { max=r[m+1]; r[m+1]=r[m]; r[m]=max;}}} cout<<"排序完畢"<<endl; if((fp=fopen("student.txt","w"))==NULL) {cout<<"文件不能打開!"<<endl; exit(0);} for(intl=0;l<num;l++) { fprintf(fp,"%d%s%.1f%.1f%.1f%.1f%.1f",r[l].serial,r[l].name,r[l].BA_score,r[l].UE_score,r[l].DS_score,r[l].sum,r[l].average);fprintf(fp,"\n");} fclose(fp); cout<<"文件已經(jīng)寫入"<<endl;} else cout<<"未輸入任何信息!"<<endl; cout<<"按任意鍵以顯示排序結(jié)果"<<endl; getch(); system("cls");}voidsort_UE(Stu*r){ FILE*fp; if(num>0) { if((fp=fopen("student.txt","r"))==NULL) { cout<<"文件不能打開!"<<endl; exit(0);} for(intn=0;n<num;n++) { fscanf(fp,"%d%s%f%f%f%f%f",&r[n].serial,&r[n].name,&r[n].BA_score,&r[n].UE_score,&r[n].DS_score,&r[n].sum,&r[n].average);} for(intk=0;k<num-1;k++) { for(intm=0;m<num-k;m++) { Stumax; if(r[m].UE_score<r[m+1].UE_score) { max=r[m+1]; r[m+1]=r[m]; r[m]=max;}}} cout<<"排序完畢"<<endl; if((fp=fopen("student.txt","w"))==NULL) { cout<<"文件不能打開!"<<endl; exit(0);} for(intl=0;l<num;l++) { fprintf(fp,"%d%s%.1f%.1f%.1f%.1f%.1f",r[l].serial,r[l].name,r[l].BA_score,r[l].UE_score,r[l].DS_score,r[l].sum,r[l].average);fprintf(fp,"\n");} fclose(fp); cout<<"文件已經(jīng)寫入"<<endl;} else cout<<"未輸入任何信息!"<<endl; cout<<"按任意鍵以顯示排序結(jié)果"<<endl; getch(); system("cls");}voidsort_DS(Stu*r){ FILE*fp; if(num>0) { if((fp=fopen("student.txt","r"))==NULL) { cout<<"文件不能打開!"<<endl; exit(0);} for(intn=0;n<num;n++) { fscanf(fp,"%d%s%f%f%f%f%f",&r[n].serial,&r[n].name,&r[n].BA_score,&r[n].UE_score,&r[n].DS_score,&r[n].sum,&r[n].average);} for(intk=0;k<num-1;k++) { for(intm=0;m<num-k;m++) { Stumax; if(r[m].DS_score<r[m+1].DS_score) { max=r[m+1]; r[m+1]=r[m]; r[m]=max;}}} cout<<"排序完畢"<<endl; if((fp=fopen("student.txt","w"))==NULL) { cout<<"文件不能打開!"<<endl; exit(0);} for(intl=0;l<num;l++) { fprintf(fp,"%d%s%.1f%.1f%.1f%.1f%.1f",r[l].serial,r[l].name,r[l].BA_score,r[l].UE_score,r[l].DS_score,r[l].sum,r[l].average);fprintf(fp,"\n");} fclose(fp); cout<<"文件已經(jīng)寫入"<<endl;} else cout<<"未輸入任何信息!"<<endl; cout<<"按任意鍵以顯示排序結(jié)果"<<endl; getch(); system("cls");}voidsortnum(Stu*r){FILE*fp; if(num>0) { if((fp=fopen("student.txt","r"))==NULL) { cout<<"文件不能打開!"<<endl; exit(0);} for(intn=0;n<num;n++) { fscanf(fp,"%d%s%f%f%f%f%f",&r[n].serial,&r[n].name,&r[n].BA_score,&r[n].UE_score,&r[n].DS_score,&r[n].sum,&r[n].average);} for(intk=0;k<num-1;k++) { for(intm=0;m<num-k;m++) { Stumax; if(r[m].serial>r[m+1].serial) { max=r[m+1]; r[m+1]=r[m]; r[m]=max;}}} cout<<"排序完畢"<<endl; if((fp=fopen("student.txt","w"))==NULL) {cout<<"文件不能打開!"<<endl; exit(0);} for(intl=0;l<num;l++) { fprintf(fp,"%d%s%.1f%.1f%.1f%.1f%.1f",r[l].serial,r[l].name,r[l].BA_score,r[l].UE_score,r[l].DS_score,r[l].sum,r[l].average);fprintf(fp,"\n");} fclose(fp); cout<<"文件已經(jīng)寫入"<<endl;} else cout<<"未輸入任何信息!"<<endl; cout<<"按任意鍵以顯示排序結(jié)果"<<endl; getch(); system("cls");}voidsortsum(Stu*r){FILE*fp; if(num>0) {if((fp=fopen("student.txt","r"))==NULL) { cout<<"文件不能打開"<<endl; exit(0);} for(intn=0;n<num;n++) { fscanf(fp,"%d%s%f%f%f%f%f",&r[n].serial,&r[n].name,&r[n].BA_score,&r[n].UE_score,&r[n].DS_score,&r[n].sum,&r[n].average);} for(inti=0;i<num;i++) { intmax=i; for(intj=i+1;j<num;j++) { if(r[max].sum<r[
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024秋七年級數(shù)學(xué)上冊 第二章 有理數(shù)2.2數(shù)軸 2在數(shù)軸上比較數(shù)的大小說課稿(新版)華東師大版
- 2023九年級數(shù)學(xué)下冊 第二十八章 銳角三角函數(shù)28.2 解直角三角形及其應(yīng)用28.2.2 應(yīng)用舉例第2課時 方向角和坡角問題說課稿 (新版)新人教版
- Module 7 Unit 2 There are twelve boys on the bike(說課稿)-2024-2025學(xué)年外研版(三起)英語 四年級上冊
- 16赤壁賦說課稿
- 4《說說我們的學(xué)?!罚ㄕf課稿)- 2004-2025學(xué)年統(tǒng)編版道德與法治三年級上冊001
- 2025銷售居間合同勞動合同
- Unit4《Bobbys House》lesson6(說課稿)-2024-2025學(xué)年北師大版(三起)英語四年級上冊
- 10在牛肚子里旅行 說課稿-2024-2025學(xué)年三年級上冊語文統(tǒng)編版
- 16新年的禮物 (說課稿)統(tǒng)編版道德與法治一年級上冊
- 2024年九年級語文上冊 第五單元 第9課《劉姥姥進賈府》說課稿 北師大版
- 卓有成效的管理者讀后感3000字
- 七年級下冊-備戰(zhàn)2024年中考歷史總復(fù)習(xí)核心考點與重難點練習(xí)(統(tǒng)部編版)
- 北師大版小學(xué)六年級數(shù)學(xué)下冊同步教案 (表格式全冊)
- 巖土工程勘察服務(wù)投標方案(技術(shù)方案)
- 實驗室儀器設(shè)備驗收單
- 新修訂藥品GMP中藥飲片附錄解讀課件
- 蒙特利爾認知評估量表北京版
- 領(lǐng)導(dǎo)干部個人有關(guān)事項報告表(模板)
- 危險化學(xué)品目錄2023
- GB/T 7631.18-2017潤滑劑、工業(yè)用油和有關(guān)產(chǎn)品(L類)的分類第18部分:Y組(其他應(yīng)用)
- GB/T 14258-2003信息技術(shù)自動識別與數(shù)據(jù)采集技術(shù)條碼符號印制質(zhì)量的檢驗
評論
0/150
提交評論