源程序閱讀與調(diào)試課程設(shè)計報告---學(xué)生管理系統(tǒng)_第1頁
源程序閱讀與調(diào)試課程設(shè)計報告---學(xué)生管理系統(tǒng)_第2頁
源程序閱讀與調(diào)試課程設(shè)計報告---學(xué)生管理系統(tǒng)_第3頁
源程序閱讀與調(diào)試課程設(shè)計報告---學(xué)生管理系統(tǒng)_第4頁
源程序閱讀與調(diào)試課程設(shè)計報告---學(xué)生管理系統(tǒng)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、源程序閱讀與調(diào)試課程設(shè)計報告UNIVERSITY題 目:學(xué)生成績管理系統(tǒng)班 級:統(tǒng)專軟件1001班小組成員:常永恒 孫東升吳春亮 李強完成時間:2011年12月13日目錄1 需求分析12 概要設(shè)計23詳細(xì)設(shè)計31.1 文件合并31.2 自動檢索31.3 數(shù)據(jù)排序31.4 信息查詢34代碼設(shè)計55 系統(tǒng)測試11512-X;測二二二二二46 總結(jié)151 (1.txt ),內(nèi)容如下1需求分析姓名學(xué)號語文數(shù)學(xué)英語張明明01677882李成友02789188張輝燦03688256王露04564577陳東明05673847現(xiàn)有學(xué)生成績信息文件學(xué)生成績信息文件2 (2.txt ),內(nèi)容如下:姓名學(xué)號語文數(shù)學(xué)

2、英語陳果31576882李華明32889068張明東33484256李明國34504587陳道亮35475877試編寫一管理系統(tǒng),要求如下:1)實現(xiàn)對兩個文件數(shù)據(jù)進行合并,生成新文件3.txt2)抽取出三科成績中有補考的學(xué)生并保存在一個新文件4.txt3)對合并后的文件3.txt中的數(shù)據(jù)按總分降序排序4)輸入一個學(xué)生姓名后,能查找到此學(xué)生的信息并輸出結(jié)果5)要求使用結(jié)構(gòu)體,鏈或數(shù)組等實現(xiàn)上述要求.6)采用多種方法且算法正確者,可適當(dāng)加分.2概要設(shè)計3詳細(xì)設(shè)計3.1文件合并已知:文件 1.txt 、文件 2.txt 、 id、 name Chinese > math english 。求:

3、調(diào)用函數(shù)來實現(xiàn)1.txt和2.txt合并為新生成文件3.txt算法:1.函數(shù)以讀的方式打開1.txt文件和2.txt文件,以寫的方式打開3.txt文件;2 .從1.txt讀入一個數(shù)據(jù)并寫入3.txt文件,直到遇到1.txt文件結(jié)束;3 .用上述方式把數(shù)據(jù)寫入3.txt直到遇到2.txt文件結(jié)束;4 .關(guān)閉1.txt , 2.txt , 3.txt文件,實現(xiàn)對于文件的合并。3.2 自動檢索已知:文件 3.txt 、 id、 name Chinese > math、 english 。求:Chinese、math、english中小于60的成績,并顯示名字、學(xué)號。算法:1.讀取3.txt ;

4、2 .創(chuàng)建 4.txt ;3 .讀取3.txt里面的成績,應(yīng)用studd.chinese<60|stud.english<60|stud.math<60找出不及格的成績;4 .將不及格成績寫入4.txt ;5 .關(guān)閉 3.txt ; 4.txt 。3.3數(shù)據(jù)排序已知:文件 3txt 、id、name Chinese > math、english。求:各個學(xué)生的總分并按照降序排序算法:1.讀取3.txt ;2 .求出文件3.txt各個學(xué)生的總分;3 .用選擇排序的方法將學(xué)生的總分進行排序;4 .關(guān)閉文件3.txt 。3.4信息查詢已知:文件 3.txt 、 id、 nam

5、e Chinese > math、 english 。求:輸入一個學(xué)生姓名后,能查找到此學(xué)生的信息并輸出結(jié)果 算法:1.讀取3.txt ;2 .從表的一端開始至尾端,順序掃描線性表;3 .依次將線性表中的信息和輸入的信息(姓名)進行比較;4 .若相等則查找成功,并輸出該元素。4代碼設(shè)計#include<iostream>using namespace std;#define SIZE 100typedef structchar name10;int id;int chinese;int math;int english;int sum;Student;Student stud

6、SIZE;int i;int sign=0,sign1=0,sign2=0,sign3=0; void Unitedfile()FILE *fp,*p;Student studd;fp=fopen("1.txt","r");p=fopen("3.txt","w");fscanf(fp,"%*Fn%*c");/*存放學(xué)生數(shù)據(jù)的結(jié)構(gòu)體*/* 合并 1.txt 和 2.txt 為 3.txt*/*以讀的方式打開1.txt*/*以寫的方式打開 3.txt*/*跳過一行字符串*/fprintf(p,&qu

7、ot; 姓名 學(xué)號 語文數(shù)學(xué)英語 n");while(fscanf(fp,"%s%d%d%d%d",,&studd.id,&studd.chinese,&studd.math,&studd.english)!=EOF) fprintf(p,"%-6s%2d,studd.chinese,studd.math,studd.english寫入3.txt ,繼續(xù)讀取直結(jié)束*/ fclose(fp);fp=fopen("2.txt","r");fscanf(fp,"

8、;%*Fn%*c");%d%d %dn",,studd.id);/*讀取1.txt的數(shù)據(jù) 進入結(jié)構(gòu)體中,/*關(guān)閉文件1.txt*/*以寫的方式打開2.txt*/*跳過一行字符串*/while(fscanf(fp,"%s%d%d%d%d",,&studd.id,&studd.chinese,&studd.math,&studd.english )!=EOF) fprintf(p,"%-6s%2d%d%d %dn",,studd.id,studd.

9、chinese,studd.math,studd.english);/*讀取2.txt的數(shù)據(jù)進入結(jié)構(gòu)體中,第5頁共17頁寫入3.txt ,繼續(xù)讀取直結(jié)束*/fclose(fp);/*關(guān)閉文件2.txt*/fclose(p);/*關(guān)閉文件3.txt*/)void findout()存在一個新文件4.txt*/*抽取出三科成績中有補考的學(xué)生并保FILE *fp,*p;Student studd;fp=fopen("3.txt","r");/*以讀的方式打開3.txt*/p=fopen("4.txt","w");/*以寫

10、的方式 打開4.txt*/fscanf(fp,"%*An%*c");/*跳過一行字符串*/fprintf(p," 姓名學(xué)號 語文數(shù)學(xué)英語n");while(fscanf(fp,"%s%d%d%d%d",,&studd.id,&studd.chinese,&studd.math,&s tudd.english )!=EOF)if(studd.chinese<60|studd.english<60|studd.math<60)fprintf(p,"%-6s%2

11、d%d%d%dn",,studd.id,studd.chinese,studd.math,studd.english);)/* 從 3.txt中讀入學(xué)生數(shù)據(jù)進結(jié)構(gòu)體,判斷是否有不及格的 課程,如果有,則寫入文件4.txt 中*/fclose(fp);/*關(guān)閉文件3.txt*/fclose(p);/*關(guān)閉文件4.txt*/)void Selectsort()分降序排序*/*對合并后的文件3.txt中的數(shù)據(jù)按總int j,k,max1,sum1,sum2,q;i=0;Student temp;FILE *fp;fp=fopen("3.txt",&q

12、uot;r");/*以讀的方式打開3.txt*/*跳過一行字符串*/i=0;fscanf(fp,"%*An%*c");while(fscanf(fp,"%s%d%d%d%d",,&studi.id,&studi.chinese,&studi.math,&studi.english)!=EOF)(i+;/*從3.txt中讀入數(shù)據(jù)進結(jié)構(gòu)體數(shù)組stud 中 */fclose(fp);for(j=0;j<i;j+)/*對結(jié)構(gòu)體數(shù)組中的數(shù)據(jù)進行選擇排序*/*每趟是選出一個最值確定其在結(jié)果序列中的位

13、置,確定元 素的位置是從前往后,而每趟最多進行一次交換,其余元素的相對位置不變??蛇M行降序排序*/max1=j;sum1=studj.math+studj.english+studj.chinese;for(k=j+1;k<i+1;k+) sum2=studk.math+studk.english+studk.chinese; if(sum1<sum2)max1=k;sum1=sum2;if(max1!=j)temp=studmax1;studmax1=studj;studj=temp;studj.sum=sum1;fp=fopen("3.txt","

14、w");/* 將排序后的數(shù)據(jù)寫入 3.txt 中*/fprintf(fp," 姓名 學(xué)號 語文數(shù)學(xué)英語總分n");for(q=0;q<i;q+) fprintf(fp,"%-6s%2d%d%d%d %dn",,studq.id,studq.chinese,studq.math,studq.english,studq.sum );/*關(guān)閉文件3.txt*/fclose(fp);第7頁共17頁/*輸入一個學(xué)生姓名,查找到此學(xué)生的信/*以讀的方式打 開3.txt*/if(flag=0)cout<<"無此

15、學(xué)生相關(guān)信息 "<<endl;息"*/fclose(fp);/*主程序*/int main()system("color 79");int choice;while(1)/*主菜單*/if(sign3=0)printf("/*如無法找到,則顯示"無此學(xué)生相關(guān)信/*關(guān)閉文件3.txt*/*背景為白色,字體為淡藍(lán)色*/學(xué)生成績管理系統(tǒng)void derectfindoutstudent()息并輸出結(jié)果*/(char NAME30;int flag=0;FILE *fp;fp=fopen("3.txt",&qu

16、ot;r");cin>>NAME;while(fscanf(fp,"%s%d%d%d%d%d",,&stud1.id,&stud1.chinese,&stud1.math,&stud1.english,&stud1.sum)!=EOF)(if(strcmp(,NAME)=0)/* 如果輸入的姓名達(dá)到要求 */*輸出顯示其相應(yīng)的信息 */flag=1;cout<<"姓名學(xué)號語文數(shù)學(xué)英語總分"<<endl;cout<<&q

17、uot; "<<<<""<<stud1.id<<""cout<<stud1.chinese<<""<<stud1.math<<""<<stud1.english<<""<<stud1.sum<<endl;break;n");printf("1.合并 1.txt 和 2.txt 為 3.txtn"

18、);printf("2.抽取出三科成績中有補考的學(xué)生并保存在一個新文件4.txtn");printf("3.對合并后的文件3.txt中的數(shù)據(jù)按總分降序排序 n");printf("4.輸入一個學(xué)生姓名,查找到此學(xué)生的信息并輸出結(jié)果 n");printf("5.退出 n");printf("請選擇(1-5):");) sign3=1; scanf("%d",&choice);/*輸入功能數(shù)字,顏色按照定義顏色*/switch(choice) case 1: United

19、file(); sign=1; cout<<"操彳1 成功! "<<endl; break;/*輸入1,使用 Unitedfile 函數(shù)。并顯示"操彳1成功!"*/ case 2: if(sign=0) cout<<"請執(zhí)行操作1后再執(zhí)行此項操作! "<<endl; break; ) cout<<"操彳2 成功! "<<endl; findout(); break;/*輸入2,如果sign=0輸出"請執(zhí)行操作1后再執(zhí)行此項操作!&qu

20、ot;。否則輸出”操彳2成功! "*/ case 3: if(sign=0) cout<<"請執(zhí)行操作1后再執(zhí)行此項操作! "<<endl; break; ) Selectsort(); cout<<"操彳3 成功! "<<endl; sign1=1; break;/*輸入3,如果sign=0輸出"請執(zhí)行操作1后再執(zhí)行此項操作!"。否則輸出”操彳3成功! "*/case 4:while(1)char c;cout<<"按姓名查找:"&l

21、t;<endl;derectfindoutstudent();cout<<"繼續(xù)查找請輸入 Y:"<<endl;cout<<"返回主菜單請輸入N:"<<endl;cin>>c;/* 輸入 4,啟用 derectfindoutstudent函數(shù)*/*清屏*/if(c='N'|c='n')break;/N=n=csystem("cls");sign3=0;break;case 5:break;exit(0);/*輸入5,關(guān)閉程序*/retur

22、n 0;5系統(tǒng)測試5.1 黑盒測試一一功能測試曾1-記事本文件出編相梢式通章看GD就助出)E口¥2 86 7 7英GQ 85 7 4學(xué)S3 12 5 8為7 98 4 3文五口7 88 6 7記 6 7 6 5 6號P12345 一弓。oo o O SHeig 明東圖1 源文件1.txt2 -記事本則顆8268568777M妾梢式(。)蜚5788485047號,12395 司3 33 3 3圖2源文件2.txt支陽日 HCBMO0 整Ml77 6 7 762 22 6 AJS 4 2 0 0 8 8 7 5 0- 22'2'20JI II 息i-n8822 6 77776 C訐 g 6985877 4 5英88778076787865654564號學(xué)22113454533 3 3 3 3用中青除紫-T-陳王陳而圖3生成文件3.txt語567747825687苻英2 5 8 3 2 5 0000 4 3 6 4 4 5文田7 7 s O 7田06 6 6 5 4 5 4燦明東國亮 東果明陰道 姓張王售雪陳圖4生成文件4.txt'CA" CMn gDe s kt 白, L&g

溫馨提示

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

評論

0/150

提交評論