![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----學(xué)生成績管理系統(tǒng)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/23/12b3f343-9cfb-4476-9649-cf35f56886ea/12b3f343-9cfb-4476-9649-cf35f56886ea1.gif)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----學(xué)生成績管理系統(tǒng)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/23/12b3f343-9cfb-4476-9649-cf35f56886ea/12b3f343-9cfb-4476-9649-cf35f56886ea2.gif)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----學(xué)生成績管理系統(tǒng)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/23/12b3f343-9cfb-4476-9649-cf35f56886ea/12b3f343-9cfb-4476-9649-cf35f56886ea3.gif)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----學(xué)生成績管理系統(tǒng)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/23/12b3f343-9cfb-4476-9649-cf35f56886ea/12b3f343-9cfb-4476-9649-cf35f56886ea4.gif)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----學(xué)生成績管理系統(tǒng)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/23/12b3f343-9cfb-4476-9649-cf35f56886ea/12b3f343-9cfb-4476-9649-cf35f56886ea5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)課課 程程 設(shè)設(shè) 計計 報報 告告 學(xué)生成績管理系統(tǒng)學(xué)生成績管理系統(tǒng)學(xué)學(xué) 院:院: 信信 息息 與與 工工 程程 學(xué)學(xué) 院院 專專 業(yè):業(yè): 計算機(jī)科學(xué)與技術(shù)計算機(jī)科學(xué)與技術(shù) 目 錄第一章 需求分析1.1 課程設(shè)計題目及要求1.2 課程設(shè)計思想及開發(fā)環(huán)境第二章 概要設(shè)計2.1 總體方案 2.2 模板功能分析及其外部設(shè)計2.3 主要數(shù)據(jù)結(jié)構(gòu)第三章 詳細(xì)設(shè)計第四章 調(diào)試與操作說明 4.1 主要模板調(diào)試 4.2 系統(tǒng)缺陷及原因第五章 課程設(shè)計總結(jié)與體會第六章 參考文獻(xiàn) 第一章 需求分析1.1 課程設(shè)計題目及要求題目:學(xué)生成績管理系統(tǒng)題目:學(xué)生成績管理系統(tǒng)學(xué)生成績表:學(xué)生成績表:要求如
2、下:1) 實現(xiàn)對兩個文件數(shù)據(jù)進(jìn)行合并,生成新文件 3.txt2) 抽取出三科成績中有補(bǔ)考的學(xué)生并保存在一個新文件 4.txt3) 對合并后的文件 3.txt 中的數(shù)據(jù)按總分降序排序(至少采用兩種排序方法實現(xiàn))4) 輸入一個學(xué)生姓名后,能查找到此學(xué)生的信息并輸出結(jié)果(至少采用兩種查找方法實現(xiàn))5) 要求使用結(jié)構(gòu)體,鏈或數(shù)組等實現(xiàn)上述要求.1.2 課程設(shè)計思想及開發(fā)環(huán)境設(shè)計思想:本課題的實質(zhì)是完成對學(xué)生成績表的合并、提取、排序、查詢等功能,可以首先定義項目的數(shù)據(jù)結(jié)構(gòu),然后將每個功學(xué)生成績信息文件 1(1.txt) ,內(nèi)容如下姓名 學(xué)號 語文 數(shù)學(xué) 英語 張明明 01 67 78 82李成友 02
3、78 91 88張輝燦 03 68 82 56王露 04 56 45 77陳東明 05 67 38 47. . . . 學(xué)生成績信息文件 2(2.txt),內(nèi)容如下:姓名 學(xué)號 語文 數(shù)學(xué) 英語 陳果 31 57 68 82李華明 32 88 90 68張明東 33 48 42 56李明國 34 50 45 87陳道亮 35 47 58 77. . . . 能寫成一個函數(shù)來完成對數(shù)據(jù)的操作,最后完成主函數(shù)以驗證各個函數(shù)功能并得出運行結(jié)果。可將此系統(tǒng)分為如下模塊,合并兩個信息表、從表中提取信息、降序排序模塊、按條件進(jìn)行查詢、退出系統(tǒng)。編寫語言: C 語言開發(fā)工具: Visual C+ 6.0VC
4、+是微軟公司開發(fā)的一個 IDE(集成開發(fā)環(huán)境)。學(xué)習(xí) VC 要了解很多 Windows 平臺的特性并且還要掌握 MFC、ATL、COM 等的知識, VC 基于 C,C+語言,主要由是 MFC 組成,是與系統(tǒng)聯(lián)系非常緊密的編程工具,它兼有高級,和低級語言的雙重性,功能強(qiáng)大,靈活,執(zhí)行效率高,幾乎可說 VC 在 Windows 平臺無所不能。 最大缺點是開發(fā)效率不高。 第二章概要設(shè)計2.1 總體方案2.2 模板功能分析及其外部設(shè)計 合并兩個信息主要是將兩個成績表中的成績信息先讀取,然后寫進(jìn)新的文本中,從而建立一個新的成績表;提取信息主要是在合并信息之后所得文本中,按要求提取出所需信息,并寫進(jìn)新的文
5、本中;降序排序主要用兩種方法進(jìn)行降序排序,分別為冒泡排序和快速排序; 系統(tǒng)菜單 退出系統(tǒng)合并兩個信息表 提取信息降序排序查詢信息降序排序查詢信息在結(jié)構(gòu)體中查詢在合并后的表中查詢冒泡排序二分插入排序查詢信息主要是按條件輸入信息,根據(jù)信息在文本中查詢所對應(yīng)的信息并輸出結(jié)果。 程序的外部設(shè)計主要是通過寫一個功能菜單來實現(xiàn)每個功能模板的調(diào)用,從而更好的協(xié)調(diào)各個功能之間的關(guān)系和使用。 2.3 主要數(shù)據(jù)結(jié)構(gòu)學(xué)生數(shù)據(jù)是用鏈表存放的,因為學(xué)生的人數(shù)是不定的,若用一個數(shù)組存放數(shù)據(jù)時,有固定長度限制,若太大則可能導(dǎo)致內(nèi)存浪費,太小就不夠用。而鏈表可動態(tài)分配內(nèi)存,根據(jù)需要而開辟內(nèi)存單元,這是本程序的鏈表數(shù)據(jù)結(jié)構(gòu),相
6、關(guān)學(xué)生需要儲存的信息也如下; typedef struct char name8; char id2; int chinese; int math; int english; int sum; ;student 第三章 詳細(xì)設(shè)計本程序分為合并模板、提取模板、排序模板、查詢模板。在合并兩個信息表是,采用 Unitedfile()來實現(xiàn),調(diào)用該函數(shù)打開文件1.txt 并讀取,再打開 3.txt 將從 1.txt 中讀取的信息寫入,完成后關(guān)閉 1.txt;然后打開 2.txt 讀取,并寫入 3.txt,完成后輸出并關(guān)閉兩個文本。void Unitedfile()/合并 1.txt 和 2.txt 為
7、 3.txt FILE *fp,*p; Student studd; fp=fopen(1.txt,r); /*以讀的方式打開 1.txt*/p=fopen(3.txt,w); /*以寫的方式打開 3.txt*/while( fscanf(fp,%s%s%d%d%d,,studd.id,&studd.chinese,&studd.math,&studd.english )!=EOF)fprintf(p,%-6s %-6s %-6d %-6d %-6dn,,studd.id,studd.chinese,studd.math,stud
8、d.english );printf(%-6s %-6s %-6d %-6d %-6dn,,studd.id,studd.chinese,studd.math,studd.english ); /*讀取 1.txt 的數(shù)據(jù)寫入3.txt,繼續(xù)讀取直結(jié)束*/fclose(fp); /*關(guān)閉文件 1.txt*/fp=fopen(2.txt,r); /*以寫的方式打開 2.txt*/while( fscanf(fp,%s%s%d%d%d,,studd.id,&studd.chinese,&studd.math,&studd.englis
9、h )!=EOF)fprintf(p,%-6s %-6s %-6d %-6d %-6dn,,studd.id,studd.chinese,studd.math,studd.english ); printf(%-6s %-6s %-6d %-6d %-6dn,,studd.id,studd.chinese,studd.math,studd.english ); /*輸出文本 3.txt 中的信息*/fclose(fp); /*關(guān)閉文件 2.txt*/fclose(p); /*關(guān)閉文件 3.txt*/在提取信息模板中,主要是從合成后的 3.txt 文本中提
10、取,先打開 3.txt 文本并讀取,再開打 4.txt 文本并寫入,通過 if 語句都讀取的信息進(jìn)行判斷,是否符合,符合的就寫入 4.txt 文本中,不符合的就跳過,繼續(xù)讀取下一個信息,一次進(jìn)行,知道文本結(jié)束,輸出文本 4.txt 的信息,并關(guān)閉兩個文本。void findout() /*提取有補(bǔ)考學(xué)生的信息寫入 4.txt 中*/FILE *fp,*p;Student studd; fp=fopen(3.txt,r);p=fopen(4.txt,w);while( fscanf(fp,%s%s%d%d%d,,studd.id,&studd.chinese,&
11、;studd.math,&studd.english )!=EOF)if(studd.chinese60|studd.math60|studd.english60)fprintf(p,%-6s %-6s %-6d %-6d %-6dn,,studd.id,studd.chinese,studd.math,studd.english );printf(%-6s %-6s %-6d %-6d %-6dn,,studd.id,studd.chinese,studd.math,studd.english ); /*輸出文本 4.txt 中的信息*/fcl
12、ose(fp);fclose(p);在降序排序模塊中,有兩種排序方法;一種是冒泡排序,一種是快速排序;兩種排序方法都是采用先定義函數(shù)排序方法,然后再后面調(diào)用該函數(shù)進(jìn)行排順序,在此之前都會將成績信息總分計算出來,然后按總分進(jìn)行降序排序,然后將排序后的信息寫入到 3.txt中,并輸出,最后關(guān)閉文本。冒泡排序:void Bsort(int R,int n) int t, flag=1; /*當(dāng) flag 為 0 時則停止排序*/for(int j=1;j=j;k-) if(RkRk-1) t=Rk; Rk=Rk-1; Rk-1=t;flag=1;if(flag=0)return; void maop
13、ao() int i,n; FILE *fp;fp=fopen(3.txt,r);i=0;while(fscanf(fp,%s%s%d%d%d,,studi.id,&studi.chinese,&studi.math,&studi.english )!=EOF)studi.sum=studi.english+studi.chinese+studi.math;i+; fclose(fp); n=i-1; Bsort(stud,n); /*冒泡排序*/ fp=fopen(3.txt,w); /*將信息寫入 3.txt 中*/ for(int m=0;mi
14、;m+)fprintf(fp,%-8s %-8s %-8d %-8d %-8d %-8dn,,studm.id,studm.chinese,studm.math,studm.english,studm.sum );fclose(fp);快速排序:int Partition(int low,int high) int pivotkey;Student temp;temp=studlow;pivotkey=studlow.sum;while(lowhigh) while(lowhigh&studhigh.sum=pivotkey)-high;studlow=studhi
15、gh;while(low=pivotkey)+low;studhigh=studlow; studlow=temp; return low; void QSort(int low,int high) /*快速排序*/ int privotloc; if(lowhigh) privotloc=Partition(low,high);QSort(low,privotloc-1);QSort(privotloc+1,high); void kuaisu() /*讀取文件排序后將結(jié)果寫入 3.txt*/ int i,low,high; FILE *fp; fp=fopen(3.txt,r); i=0;
16、while(fscanf(fp,%s%s%d%d%d,,studi.id,&studi.chinese,&studi.math,&studi.english )!=EOF) studi.sum=studi.english+studi.chinese+studi.math;i+; fclose(fp);low=0; high=i-1;QSort(low,high); /*快速排序*/fp=fopen(3.txt,w); /*將排序后的數(shù)據(jù)寫入 3.txt 中*/for(int j=0;jName;for(k=1;k=n;k+)if(strcmp(stu
17、,Name)=0)flag=1;cout-姓名-學(xué)號-語文-數(shù)學(xué)-英語-總分-endl;cout studk.id ;coutstudk.chinese studk.math studk.english studk.sumendl;break; if(flag=0)cout無此學(xué)生相關(guān)信息endl; 要實現(xiàn)各個功能之間的調(diào)用,在主函數(shù)中使用while、if、case 等語句進(jìn)行調(diào)用是各個功能之間串聯(lián)起來,把各個功能看成單個的事件,利用 case 語句來對各個事件進(jìn)行選擇;利用 printf 輸出語句來形成主菜單界面。 int main() int choic
18、e; while(1) /*主菜單*/if(sign3=0)printf(*n);printf(* 學(xué)生成績管理系統(tǒng) *n);printf(* 1. 合并 1 和 2 得 3 *n); printf(* 2. 把 3 中有成績不及格的放入新文件 4 中 *n); printf(* 3. 把 3 中成績總分按降序排列 *n); printf(* 4. 輸入姓名,查找該成績信息并輸出結(jié)果 *n);printf(* 5. 退出系統(tǒng) *n);printf(*n);printf(請輸入(1-5)選擇要使用的功能:); sign3=1;scanf(%d,&choice);switch(choice
19、) case 1: Unitedfile();sign=1;cout1 和 2 合并成功!endl;cout請選擇下一步操作:endl;break; case 2: if(sign=0)cout請執(zhí)行操作 1 后再執(zhí)行此項操作!endl;cout請選擇下一步操作:endl;break;cout4.txt 生成成功!endl; findout();cout請選擇下一步操作:endl;break; case 3:if(sign=0)cout請執(zhí)行操作 1 后再執(zhí)行此項操作!endl;cout請選擇下一步操作:endl;break;sortfile();cout降序排列成功!endl;cout請選擇
20、下一步操作:endl;sign1=1;break; case 4:while(1)char c;findoutstudent();cout繼續(xù)查找或返回主菜單請輸入 Y/N:c;if(c=N|c=n)break; system(cls);sign3=0;break;case 5:exit(0);break; return 0; 第四章 調(diào)試與操作說明 4.1 主要模板調(diào)式菜單顯示圖:合并兩個成績表,選擇菜單 1,調(diào)試結(jié)果:提取有成績不及格學(xué)生的信息,選擇功能 2,調(diào)試結(jié)果:降序排序,將 3.txt 中學(xué)生成績總分計算出,選擇功能 1 和功能2,調(diào)試結(jié)果一樣:選擇 1 時:選擇 2 時:排序后,進(jìn)行查詢功能,都是輸入姓名查找,選擇功能 1 和功能2,調(diào)試完成后,如果還要繼續(xù)查詢選擇 Y,不查詢選擇 N 退到主菜單:選擇 1:選擇 2 時:選擇 Y 繼續(xù)查詢時:不查詢退到主菜單。退出系統(tǒng),選擇 5,調(diào)試之后按任意鍵關(guān)閉界面: 4.2 系統(tǒng)缺陷及原因缺陷:該系統(tǒng)功能存在一些缺陷,在第一步到第二步過程中,沒有
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新人教版七年級數(shù)學(xué)上冊 3.3 《解一元一次方程》聽評課記錄1
- 人教版歷史七年級上冊第14課《溝通中外文明的“絲綢之路”》聽課評課記錄
- 現(xiàn)場電力服務(wù)合同(2篇)
- 生活設(shè)施租賃協(xié)議書(2篇)
- 新版湘教版秋八年級數(shù)學(xué)上冊第二章三角形課題已知邊角作三角形聽評課記錄
- 新版華東師大版八年級數(shù)學(xué)下冊《18.2平行四邊形的判定》聽評課記錄
- 湘教版數(shù)學(xué)八年級下冊4.3《一次函數(shù)的圖象》聽評課記錄1
- 魯人版道德與法治七年級下冊13.3《正視壓力 輕松前行》聽課評課記錄
- 2022年新課標(biāo)八年級上冊歷史第3課太平天國運動聽課評課記錄
- 人教版九年級數(shù)學(xué)上冊22.2.1《二次函數(shù)與一元二次方程》聽評課記錄
- 裝修工程延期協(xié)議
- 《梅大高速茶陽路段“5·1”塌方災(zāi)害調(diào)查評估報告》專題警示學(xué)習(xí)
- 2024年09月北京中信銀行北京分行社會招考(917)筆試歷年參考題庫附帶答案詳解
- 《大健康解讀》課件
- 2025年度交通運輸規(guī)劃外聘專家咨詢協(xié)議3篇
- 2024年04月北京中信銀行北京分行社會招考(429)筆試歷年參考題庫附帶答案詳解
- 專項債券培訓(xùn)課件
- 《會務(wù)的組織和管理》課件
- 2024年公司領(lǐng)導(dǎo)在新年動員會上的講話樣本(3篇)
- 《倒虹吸管安全評價導(dǎo)則》
- 2025年中國濕度傳感器行業(yè)深度分析、投資前景、趨勢預(yù)測報告(智研咨詢)
評論
0/150
提交評論