學(xué)生成績管理系統(tǒng)-課程設(shè)計(jì)報(bào)告_第1頁
學(xué)生成績管理系統(tǒng)-課程設(shè)計(jì)報(bào)告_第2頁
學(xué)生成績管理系統(tǒng)-課程設(shè)計(jì)報(bào)告_第3頁
學(xué)生成績管理系統(tǒng)-課程設(shè)計(jì)報(bào)告_第4頁
學(xué)生成績管理系統(tǒng)-課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告課題名稱學(xué)生成績管理系統(tǒng)姓名學(xué)院系科班級指導(dǎo)老師日期2023年1月17日目錄目錄一、問題描述………………3二、根本要求………………3三、設(shè)計(jì)目的…………………4四、概念設(shè)計(jì)…………………4五、詳細(xì)設(shè)計(jì)…………………51主要數(shù)據(jù)結(jié)構(gòu)…………52模塊功能………………53調(diào)用關(guān)系………………5六、源程序……………………5七、測試結(jié)果…………………12八、心得體會…………………15九、參考文獻(xiàn)…………………16學(xué)生成績管理系統(tǒng)問題描述現(xiàn)有學(xué)生成績信息文件1〔1.txt〕,內(nèi)容如下姓名

學(xué)號

語文

數(shù)學(xué)

英語

張明明

01

67

78

82李成友

02

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….

..

..

..

…根本要求試編寫一管理系統(tǒng),要求如下:1)實(shí)現(xiàn)對兩個(gè)文件數(shù)據(jù)進(jìn)行合并,生成新文件3.txt2)抽取出三科成績中有補(bǔ)考的學(xué)生并保存在一個(gè)新文件4.txt3)對合并后的文件3.txt中的數(shù)據(jù)按總分降序排序(至少采用兩種排序方法實(shí)現(xiàn))4)輸入一個(gè)學(xué)生姓名后,能查找到此學(xué)生的信息并輸出結(jié)果(至少采用兩種查找方法實(shí)現(xiàn))5)要求使用結(jié)構(gòu)體和數(shù)組實(shí)現(xiàn)上述要求.設(shè)計(jì)目的1〕培養(yǎng)學(xué)生綜合程序設(shè)計(jì)的能力,訓(xùn)練學(xué)生靈活應(yīng)用所學(xué)數(shù)據(jù)結(jié)構(gòu)知識,獨(dú)立完成問題分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)和編程實(shí)現(xiàn)等軟件開發(fā)全過程的綜合實(shí)踐能力。2〕穩(wěn)固、深化學(xué)生的理論知識,提高編程水平,培養(yǎng)嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和良好的學(xué)習(xí)作風(fēng)。為今后學(xué)習(xí)其他計(jì)算機(jī)課程打下根底。3〕將書本上的理論知識和工作、生產(chǎn)實(shí)際有機(jī)地結(jié)合起來,從而鍛煉學(xué)生分析問題、解決實(shí)際問題的能力,提高編程序能力和創(chuàng)新意識。概要設(shè)計(jì)學(xué)生成績管理學(xué)生成績管理系統(tǒng)讀取文件1讀取文件2合并兩文件放在文件3把補(bǔ)考的放在文件4退出查找文件中的人信息詳細(xì)設(shè)計(jì)1〕主要數(shù)據(jù)結(jié)構(gòu):structstudent{ charname[6]; intnum; longintchi; longintmath; longinteng; longintsum;};2〕模塊功能:合并模板、提取模板、排序模板、查詢模板、模塊功能1、生成文件3:實(shí)現(xiàn)對兩個(gè)文件數(shù)據(jù)進(jìn)行合并,生成新文件3.txt;2、查看文件3:顯示文件3里的所有信息;3、生成文件補(bǔ)考文件4:抽取出三科成績中有補(bǔ)考的學(xué)生并保存在一個(gè)新文件4.txt;4、查看文件4:顯示文件4里的所有信息;5、排序后的文件3:對合并后的文件3.txt中的數(shù)據(jù)按總分降序排序〔冒泡、插入〕;6、查找學(xué)生信息:按姓名查找學(xué)生的信息并輸出結(jié)果〔順序、折半〕;3〕調(diào)用關(guān)系主函數(shù)可調(diào)用其它函數(shù)源程序#include<stdio.h>#include<stdlib.h>structstudent{ charname[6]; intnum; longintchi; longintmath; longinteng; longintsum;};structstudentstu1[100],stu2[100],stu3[100],stu4[100],t,tmp;FILE*fp;inti,j;voidcreat1()//對1.txt的成績進(jìn)行讀取{inti;for(i=1;i<=5;i++) fscanf(fp,"%s%d%ld%ld%ld",stu1[i].name,&stu1[i].num,&stu1[i].chi,&stu1[i].math,&stu1[i].eng);printf("\n1.txt中學(xué)生的成績?nèi)缦?\n"); printf("姓名學(xué)號語文數(shù)學(xué)英語\n"); for(i=1;i<=5;i++) printf("%s%d%ld%ld%ld\n",stu1[i].name,stu1[i].num,stu1[i].chi,stu1[i].math,stu1[i].eng);}voidcreat2()//對2.txt的成績進(jìn)行讀取{inti;for(j=1;j<=5;j++) fscanf(fp,"%s%d%ld%ld%ld",stu2[j].name,&stu2[j].num,&stu2[j].chi,&stu2[j].math,&stu2[j].eng);printf("\n2.txt中學(xué)生的成績?nèi)缦?\n");printf("姓名學(xué)號語文數(shù)學(xué)英語\n"); for(j=1;j<=5;j++) printf("%s%d%ld%ld%ld\n",stu2[j].name,stu2[j].num,stu2[j].chi,stu2[j].math,stu2[j].eng);}voidhb()//把合并后的成績賦值到新的結(jié)構(gòu)體數(shù)組stu3[a]中{ inti; for(i=1;i<=5;i++) { stu3[i]=stu1[i]; } for(i=6;i<=6+j;i++) { stu3[i]=stu2[i-5]; }printf("\n3.txt中所有學(xué)生的成績名單:\n"); printf("姓名學(xué)號語文數(shù)學(xué)英語總分\n"); for(i=1;i<=10;i++) {stu3[i].sum=stu3[i].math+stu3[i].eng+stu3[i].chi; printf("%s%d%ld%ld%ld%ld\n",stu3[i].name,stu3[i].num,stu3[i].chi,stu3[i].math,stu3[i].eng,stu3[i].sum);fprintf(fp,"%s%d%ld%ld%ld%ld\n",stu3[i].name,stu3[i].num,stu3[i].chi,stu3[i].math,stu3[i].eng,stu3[i].sum); }}intextract()//把成績中需要補(bǔ)考的學(xué)生成績保存在數(shù)組stu4[j]中{intj;j=1; for(i=1;i<=10;i++) { if(stu3[i].math<60||stu3[i].eng<60||stu3[i].chi<60) { stu4[j]=stu3[i]; j++; } } printf("\n補(bǔ)考學(xué)生成績名單如下:\n"); printf("姓名學(xué)號語文數(shù)學(xué)英語\n");for(i=1;i<j;i++) { fprintf(fp,"%5s%3d%4d%4d%4\n",stu4[i].name,stu4[i].num,stu4[i].chi,stu4[i].math,stu4[i].eng); printf("%5s%3d%4d%4d%4d\n",stu4[i].name,stu4[i].num,stu4[i].chi,stu4[i].math,stu4[i].eng); }}voidsort1()//冒泡排序{ for(i=1;i<=10;i++) { for(j=i+1;j<=10;j++) { if(stu3[j].sum>stu3[i].sum) {t=stu3[j]; stu3[j]=stu3[i]; stu3[i]=t; } } } printf("\n按總分由高到低排序(冒泡)后的成績?nèi)缦?\n");printf("姓名學(xué)號語文數(shù)學(xué)英語總分\n");for(i=1;i<=10;i++) printf("%s%d%ld%ld%ld%ld\n",stu3[i].name,stu3[i].num,stu3[i].chi,stu3[i].math,stu3[i].eng,stu3[i].sum);}voidsort2()//插入排序{ for(i=2;i<=10;i++) { if(stu3[i].sum>stu3[i-1].sum) { tmp=stu3[i]; stu3[i]=stu3[i-1]; for(j=i-1;j>0&&tmp.sum>stu3[j].sum;j--) stu3[j+1]=stu3[j]; stu3[j+1]=tmp; } } printf("\n按總分由高到低排序(插入)后的成績?nèi)缦?\n");printf("姓名學(xué)號語文數(shù)學(xué)英語總分\n");for(i=1;i<=10;i++) printf("%s%d%ld%ld%ld%ld\n",stu3[i].name,stu3[i].num,stu3[i].chi,stu3[i].math,stu3[i].eng,stu3[i].sum);}voidsearch1()//名字查找方式〔順序查找〕{charfname[6]; printf("\n請輸入要查找學(xué)生的姓名:"); scanf("%s",&fname); for(i=1;i<=10;i++) { if(!strcmp(stu3[i].name,fname)) {printf("\n你所查找(名字順序)的學(xué)生成績?nèi)缦?\n"); printf("姓名學(xué)號語文數(shù)學(xué)英語總分\n"); printf("%s%d%ld%ld%ld%ld\n",stu3[i].name,stu3[i].num,stu3[i].chi,stu3[i].math,stu3[i].eng,stu3[i].sum); } }}voidsearch2()//名字查找方式〔折半查找〕{charfname[6]; intmid,low=1; inthigh=10; printf("\n請輸入要查找的學(xué)生的姓名:"); scanf("%s",&fname); while(low<=high) { mid=(low+high)/2; { if(strcmp(stu3[mid].name,fname)==0) break;elseif(strcmp(fname,stu3[mid].name)>0)high=mid; elselow=mid; } }printf("\n你所查找(名字折半)的學(xué)生成績?nèi)缦?\n");printf("姓名學(xué)號語文數(shù)學(xué)英語總分\n"); printf("%s%d%ld%ld%ld%ld\n",stu3[mid].name,stu3[mid].num,stu3[mid].chi,stu3[mid].math,stu3[mid].eng,stu3[mid].sum);}voidmain(){chardigit;printf("***************************系統(tǒng)功能菜單*******************************\n");printf("---------------------------------------------------------\n");printf("************************************************************\n");printf("*1.讀取3.txt的成績(合并)**2.讀取4.txt的成績(補(bǔ)考)*\n");printf("************************************************************\n");printf("*3.按總分排序(冒泡)**4.按總分排序(插入)*\n");printf("************************************************************\n");printf("*5.按名字查找(順序)**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(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=fopen("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("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","w");

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論