版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù) 據(jù) 結(jié) 構(gòu)課 程 設(shè) 計 報 告課題名稱學生成績管理系統(tǒng) 姓名 學院 系科班級 指導老師 日期2013年1月17日 目錄一、問題描述 3二、基本要求 3三、設(shè)計目的4四、概念設(shè)計4五、詳細設(shè)計 5n 1主要數(shù)據(jù)結(jié)構(gòu) 5n 2模塊功能 5n 3調(diào)用關(guān)系 5六、源程序5七、測試結(jié)果12八、心得體會15九、參考文獻16學生成績管理系統(tǒng)一、 問題描述現(xiàn)有學生成績信息文件1(1.txt),內(nèi)容如下姓名 學號 語文 數(shù)學 英語 張明明 01
2、0; 67 78 82李成友 02 78 91 88張輝燦 03 68 82 56王露 04
3、160; 56 45 77陳東明 05 67 38 47. . . . 學生成績信息文件2(2.txt),內(nèi)
4、容如下:姓名 學號 語文 數(shù)學 英語 陳果 31 57 68 82李華明 32 88 90 68張明東 33
5、 48 42 56李明國 34 50 45 87陳道亮 35 47 58 77. .
6、 . . 二、 基本要求試編寫一管理系統(tǒng),要求如下:1) 實現(xiàn)對兩個文件數(shù)據(jù)進行合并,生成新文件3.txt2) 抽取出三科成績中有補考的學生并保存在一個新文件4.txt3) 對合并后的文件3.txt中的數(shù)據(jù)按總分降序排序(至少采用兩種排序方法實現(xiàn))4) 輸入一個學生姓名后,能查找到此學生的信息并輸出結(jié)果(至少采用兩種查找方法實現(xiàn))5) 要求使用結(jié)構(gòu)體和數(shù)組實現(xiàn)上述要求.三、 設(shè)計目的1)培養(yǎng)學生綜合程序設(shè)計的能力,訓練學生靈活應(yīng)用所學數(shù)據(jù)結(jié)
7、構(gòu)知識,獨立完成問題分析、總體設(shè)計、詳細設(shè)計和編程實現(xiàn)等軟件開發(fā)全過程的綜合實踐能力。2)鞏固、深化學生的理論知識,提高編程水平,培養(yǎng)嚴謹?shù)目茖W態(tài)度和良好的學習作風。為今后學習其他計算機課程打下基礎(chǔ)。3)將書本上的理論知識和工作、生產(chǎn)實際有機地結(jié)合起來,從而鍛煉學生分析問題、解決實際問題的能力,提高編程序能力和創(chuàng)新意識。四、 概要設(shè)計學生成績管理系統(tǒng)讀取文件1讀取文件2合并兩文件放在文件3把補考的放在文件4退出查找文件中的人信息五、 詳細設(shè)計1)主要數(shù)據(jù)結(jié)構(gòu):struct student char name6;int num;long int chi;long int math;long in
8、t eng;long int sum;2)模塊功能:合并模板、提取模板、排序模板、查詢模板、模塊功能1、生成文件3:實現(xiàn)對兩個文件數(shù)據(jù)進行合并,生成新文件3.txt;2、查看文件3:顯示文件3里的所有信息;3、生成文件補考文件4:抽取出三科成績中有補考的學生并保存在一個新文件4.txt; 4、查看文件4:顯示文件4里的所有信息;5、排序后的文件3:對合并后的文件3.txt中的數(shù)據(jù)按總分降序排序(冒泡、插入); 6、查找學生信息:按姓名查找學生的信息并輸出結(jié)果(順序、折半);3)調(diào)用關(guān)系主函數(shù)可調(diào)用其它函數(shù)六、 源程序#include<stdio.h>#include<stdl
9、ib.h>struct student char name6;int num;long int chi;long int math;long int eng;long int sum;struct student stu1100,stu2100,stu3100,stu4100,t,tmp;FILE *fp;int i,j;void creat1() /對1.txt的成績進行讀取 int i; for(i=1;i<=5;i+) fscanf(fp,"%s %d %ld %ld %ld",,&stu1i.num,&stu1i.ch
10、i,&stu1i.math,&stu1i.eng); printf("n1.txt中學生的成績?nèi)缦?n");printf("姓名 學號 語文 數(shù)學 英語n");for(i=1;i<=5;i+) printf("%s %d %ld %ld %ldn",,stu1i.num,stu1i.chi,stu1i.math,stu1i.eng);void creat2() /對2.txt的成績進行讀取 int i; for(j=1;j<=5;j+) fscanf(fp,"%s %d %ld
11、 %ld %ld",,&stu2j.num,&stu2j.chi,&stu2j.math,&stu2j.eng); printf("n2.txt中學生的成績?nèi)缦?n"); printf("姓名 學號 語文 數(shù)學 英語n"); for(j=1;j<=5;j+) printf("%s %d %ld %ld %ldn",,stu2j.num,stu2j.chi,stu2j.math,stu2j.eng);void hb() /把合并后的成績賦值到新的結(jié)構(gòu)
12、體數(shù)組stu3a中 int i;for(i=1;i<=5;i+) stu3i=stu1i;for(i=6;i<=6+j;i+) stu3i=stu2i-5; printf("n3.txt中所有學生的成績名單:n");printf("姓名 學號 語文 數(shù)學 英語 總分n"); for(i=1;i<=10;i+) stu3i.sum=stu3i.math+stu3i.eng+stu3i.chi; printf("%s %d %ld %ld %ld %ldn",,stu3i.num,stu3i.chi,
13、stu3i.math,stu3i.eng,stu3i.sum); fprintf(fp,"%s %d %ld %ld %ld %ldn",,stu3i.num,stu3i.chi,stu3i.math,stu3i.eng,stu3i.sum); int extract() /把成績中需要補考的學生成績保存在數(shù)組stu4j中 int j; j=1;for(i=1;i<=10;i+)if(stu3i.math<60|stu3i.eng<60|stu3i.chi<60)stu4j=stu3i;j+;printf("n補考學生成
14、績名單如下:n");printf("姓名 學號 語文 數(shù)學 英語n"); for(i=1;i<j;i+) fprintf(fp,"%5s %3d %4d %4d %4n",,stu4i.num,stu4i.chi,stu4i.math,stu4i.eng); printf("%5s %3d %4d %4d %4dn",,stu4i.num,stu4i.chi,stu4i.math,stu4i.eng);void sort1() /冒泡排序 for(i=1;i<=10;i+)
15、for(j=i+1;j<=10;j+) if(stu3j.sum>stu3i.sum) t=stu3j; stu3j=stu3i; stu3i=t; printf("n按總分由高到低排序(冒泡)后的成績?nèi)缦?n"); printf("姓名 學號 語文 數(shù)學 英語 總分n"); for(i=1;i<=10;i+)printf("%s %d %ld %ld %ld %ldn",,stu3i.num,stu3i.chi,stu3i.math,stu3i.eng,stu3i.sum);void sort2
16、() /插入排序 for(i=2;i<=10;i+) if(stu3i.sum>stu3i-1.sum)tmp=stu3i;stu3i=stu3i-1;for(j=i-1;j>0&&tmp.sum>stu3j.sum;j-)stu3j+1=stu3j;stu3j+1=tmp;printf("n按總分由高到低排序(插入)后的成績?nèi)缦?n"); printf("姓名 學號 語文 數(shù)學 英語 總分n"); for(i=1;i<=10;i+)printf("%s %d %ld %ld %ld %ldn&qu
17、ot;,,stu3i.num,stu3i.chi,stu3i.math,stu3i.eng,stu3i.sum);void search1() /名字查找方式(順序查找) char fname6; printf("n請輸入要查找學生的姓名:"); scanf("%s",&fname); for(i=1;i<=10;i+) if(!strcmp(,fname) printf("n你所查找(名字順序)的學生成績?nèi)缦?n"); printf("姓名 學號 語文 數(shù)學 英語 總分
18、n"); printf("%s %d %ld %ld %ld %ldn",,stu3i.num,stu3i.chi,stu3i.math,stu3i.eng,stu3i.sum); void search2() / 名字查找方式(折半查找) char fname6; int mid,low=1; int high=10; printf("n請輸入要查找的學生的姓名:"); scanf("%s",&fname); while(low<=high) mid=(low+high)/2; if(st
19、rcmp(,fname)=0) break; else if(strcmp(fname,)>0) high=mid; else low=mid; printf("n你所查找(名字折半)的學生成績?nèi)缦?n"); printf("姓名 學號 語文 數(shù)學 英語 總分n"); printf("%s %d %ld %ld %ld %ldn",,stu3mid.num,stu3mid.chi,stu3mid.math,stu3mid.eng,stu3mid.sum);v
20、oid main() char digit;printf("*系統(tǒng)功能菜單* n");printf(" - - n");printf(" * n");printf(" *1. 讀取3.txt的成績(合并) * *2. 讀取4.txt的成績(補考) * n");printf(" * n"); printf(" *3. 按總分排序(冒泡) * *4. 按總分排序(插入) * n");printf(" * n");printf(" *5. 按名字查找
21、(順序) * *6. 按名字查找(折半) * n");printf(" * n");printf(" *7. 退出系統(tǒng) * n");printf(" * n");printf(" - - n");printf("請選擇菜單編號:");scanf("%c",&digit);switch(digit) case '1': fp=fopen("d:1.txt","r+"); creat1(); fclose(
22、fp); fp=fopen("d:2.txt","r+"); creat2(); fclose(fp); fp=fopen("d:3.txt","w"); hb(); fclose(fp); break;case '2': fp=fopen("d:1.txt","r+"); creat1(); fclose(fp); fp=fopen("d:2.txt","r+"); creat2(); fclose(fp); fp=f
23、open("d:3.txt","w"); hb(); fclose(fp); fp=fopen("d:4.txt","w"); extract(); fclose(fp); break;case '3': fp=fopen("d:1.txt","r+"); creat1(); fclose(fp); fp=fopen("d:2.txt","r+"); creat2(); fclose(fp); fp=fopen(&quo
24、t;d:3.txt","w"); hb(); fclose(fp); sort1(); break;case '4': fp=fopen("d:1.txt","r+"); creat1(); fclose(fp); fp=fopen("d:2.txt","r+"); creat2(); fclose(fp); fp=fopen("d:3.txt","w"); hb(); fclose(fp); sort2(); break;case '5': fp=fopen("d:1.txt","r+"); creat1(); fclose(fp); fp=fopen("d:2.txt","r+"); creat2(); fclose(fp); fp=fopen("d:3.txt&qu
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安徽省淮北市部分學校2024-2025學年八年級上學期1月期末考試物理試卷(含答案)
- 2025年長租公寓項目建議書
- 期貨投資服務(wù)侵權(quán)賠償
- 賽車場有線電視布線合同
- 電纜鋪設(shè)工程爬架租賃合同
- 紅棗包裝工聘用協(xié)議書
- 隧道項目商品混凝土投標樣本
- 食品研發(fā)中心廚師長招聘簡章
- 礦產(chǎn)資源開發(fā)電子招投標規(guī)定
- 珠海市二手房拆遷補償合同模板
- 重慶市2023-2024學年高一上學期期末聯(lián)合檢測物理試卷(含答案解析)
- 糖尿病性視網(wǎng)膜病變匯報演示課件
- GB/T 43575-2023區(qū)塊鏈和分布式記賬技術(shù)系統(tǒng)測試規(guī)范
- 小兒肺炎的病例討論
- 校園教職工思想動態(tài)和現(xiàn)實表現(xiàn)動態(tài)評估
- 《氣體滅火系統(tǒng)》課件
- 黑龍江省雞西市2023-2024學年八年級上學期第二次質(zhì)量監(jiān)測道德與法治試題
- 2022年高考天津語文高考試題及答案
- 2022-2023學年下學期人教版八年級英語Unit8 現(xiàn)在完成時導學案(word版)
- JCT908-2013 人造石的標準
- 禮品申請領(lǐng)用表
評論
0/150
提交評論