學(xué)生成績管理系統(tǒng),數(shù)據(jù)結(jié)構(gòu)課程設(shè)計_第1頁
學(xué)生成績管理系統(tǒng),數(shù)據(jù)結(jié)構(gòu)課程設(shè)計_第2頁
學(xué)生成績管理系統(tǒng),數(shù)據(jù)結(jié)構(gòu)課程設(shè)計_第3頁
學(xué)生成績管理系統(tǒng),數(shù)據(jù)結(jié)構(gòu)課程設(shè)計_第4頁
學(xué)生成績管理系統(tǒng),數(shù)據(jù)結(jié)構(gòu)課程設(shè)計_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

課程設(shè)計務(wù)書學(xué)姓:指教:

專班:工單:題

目:學(xué)成管系已技參和計求現(xiàn)有學(xué)生成績信息文件1(容如下姓名學(xué)語文數(shù)英語張明明01677882李成友02789188張輝燦03688256王露04564577陳東明05673847…......…學(xué)生成績信息文件2(cj2.txt,內(nèi)容如:姓名學(xué)語文數(shù)英語陳果31576882李華明32889068張明東33484256李明國34504587陳道亮35475877…......…試編寫一管理系,其本能求實現(xiàn)對兩個文件數(shù)據(jù)進行合并,成新文件cj3.txt抽取出三科成績中有補考的學(xué)生并保存在一個新文件cj4.txt對合并后的文件3.txt中數(shù)據(jù)按總分降序排至少采用兩種排序方法實)輸入一個學(xué)生姓名后能查找到此學(xué)生的信息并輸出結(jié)(少采用兩種查找方法實現(xiàn))要求使用結(jié)構(gòu)體,鏈或數(shù)組等實上述要.采用多種方法且算法正確,可當加.要完的要務(wù):一需分

(包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)數(shù)據(jù)結(jié)構(gòu)程設(shè)計說明

、問題描述現(xiàn)如今,學(xué)校人數(shù)的暴漲,對學(xué)生基本信息的錄入,保存量越來越大,為了簡化對工作人員的作,故設(shè)計一個程序來完成對學(xué)生基本信息的錄入,保存,編輯等簡單操作。、基本任務(wù)()對生信息表cj1和cj2進行合并;()把并的信息生成cj3;()把cj3中補考的學(xué)生息生成cj4;()對并后的文件3.txt中的數(shù)據(jù)按總分降序排序;()輸一個學(xué)生姓名后能找到此學(xué)生的信息并輸出結(jié)果。二概設(shè)為了完成需求分析的基本任務(wù),主要從以下3個面進行設(shè)計:1主界面設(shè)為了實現(xiàn)學(xué)生成績管理系統(tǒng)的各項功能,設(shè)計了一個含有多個菜單項的主控菜單模塊以鏈接系的各項功能,以方便用戶使用系統(tǒng)。系統(tǒng)主控菜單運行界面如圖1所:圖1學(xué)成績管理系統(tǒng)主菜單2數(shù)結(jié)設(shè)系統(tǒng)采用鏈表的順序存儲結(jié)構(gòu)個符數(shù)組存儲學(xué)生姓名個型數(shù)存儲學(xué)生學(xué)號﹑語文成績﹑數(shù)學(xué)成績﹑英語成績。和一個結(jié)構(gòu)體數(shù)組。3系功設(shè)(從c盤讀取cj1.txt和cj2.txt中學(xué)生成績信息序會給出提示為如果在c盤下存在這兩個文件那么程序?qū)⒉荒芾^續(xù)會自動退出。(程給出選擇是否將從c盤讀取的學(xué)生信息保存到盤下cj3.txt中如您選擇是那程序?qū)?zhí)行如在c盤在一個為cj3.txt的文件那程序?qū)⒂米x取的信息將其覆蓋果存在,

則系統(tǒng)會自動生成一個名為cj3.txt的文將數(shù)據(jù)放入其中。(會出選擇是否將中有補考的學(xué)生信息生成一個cj4.txt的件您擇是。那么程序?qū)?zhí)行。對于在c盤否有名為cj4.txt的件的處理和上面一樣。()序會給出按總分大小排序的選項。程序設(shè)計了兩種排序方法—直接插入法排序和冒泡排。(5)最后程序設(shè)計了一個循環(huán),現(xiàn)根據(jù)學(xué)生姓名查找學(xué)生成績信息。如果你所輸入的學(xué)生姓名不存在,程序?qū)敵觥安闊o此人”的提示符并提示是否繼續(xù)查找。你可根據(jù)需要選擇。如果選否,程序退出。三模設(shè)【主程序模塊voidmain(){fp=fopen(,"rt");從文本文件cj1.txt中讀取數(shù)據(jù)傳向cj3.txtfp=fopen(,"rt"http://從文本文件cj2.txt中讀取數(shù)據(jù)接到cj3.txt的后面fp=fopen(,"rt"http://從合成后的cj3.txt讀取數(shù)據(jù),生成鏈表fp=fopen(,"wt"http://把三科成績中有補考的學(xué)生信息放入for{}//接插入法排序for{}//泡法排序do{}while}【功能模塊調(diào)用關(guān)系圖】主程序模塊讀取學(xué)生信息排序查找

【模板詳細設(shè)計】成績管理系統(tǒng)讀取數(shù)據(jù)從cj1.txt中從cj2.txt中

合并數(shù)據(jù)生成cj3.txt生成cj4.txt

成績排序直接插入法打亂

姓名查找輸入姓名

退出本系統(tǒng)冒泡法typedefstructLNode{charname[6];intno;intyw;intsx;intyy;structLNode*next;}LinkList;structNameNo{intno;intyw;intsx;inttotal;charname[6];}st[10];四詳設(shè)(c盤根目錄下打開c用FILE指針fp指向cj1.txt,fp=fopen("c:\\cj1.txt","rt")再用一個ILE型指針*fp1打開cj3.txt。使fp1=fopen("c:\\cj3.txt","wt")對j3.txt只寫。后循環(huán)使用c和putc(ch,fp1)cj1.txt信息復(fù)制cj3.txt中if((fp=fopen("c:\\cj1.txt","rt"))==NULL)//文本文件cj1.txt中讀取數(shù)據(jù)傳向

cj3.txt{printf("無cj1.txt文本文件,程序結(jié)束。無cj1.txt程序?qū)o法進行。return;//程序退出}fp1=fopen("c:\\cj3.txt","wt");//打開cj3.txt寫ch=fgetc(fp);//從cj1.txt中讀取一個字符存入h中while(ch!=EOF)//循環(huán){fputc(ch,fp1);//把ch中的字符寫入cj3.txtch=fgetc(fp);}fclose(fp1);fclose(fp);2fp=fopen("c:\\cj2.txt","rt")。*fp1打開cj3.txt追加。因cj2.txt中一行是提示,cj1.txt已經(jīng)存在,所以它是多余的,循fgetc(fp)三十六次把指針移動到下一行。ch=fgetc(fp)fputc(ch,fp1)把j2.txt的信息追加到cj3.txt中部。3中p=(LinkList*)malloc(sizeof(LinkList));p->next=NULL;fp=fopen("c:\\cj3.txt","rt");//從合成后的j3.txt讀取數(shù)據(jù),生成鏈表for(i=0;i<36;i++)fgetc(fp);ch=fgetc(fp);while(ch!=EOF){s=(LinkList*)malloc(sizeof(LinkList));fgets(s->name,7,fp);for(i=0;i<5;i++)fgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->no=x;for(i=0;i<5;i++)

fgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->yw=x;for(i=0;i<5;i++)fgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->sx=x;for(i=0;i<5;i++)fgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->yy=x;s->next=p->next;p->next=s;ch=fgetc(fp);}fclose(fp);4fputs("姓名學(xué)號語文fclose(fp);fp=fopen("c:\\cj4.txt","a");s=p->next;while(s!=NULL){

數(shù)學(xué)

英語",fp);if(s->yw<60||s->sx<60||s->yy<60){ch='\n';fputc(ch,fp);fputs(s->name,fp);for(i=0;i<5;i++){ch='';fputc(ch,fp);}ch=s->no/10+48;fputc(ch,fp);ch=s->no-(s->no/10)*10+48;fputc(ch,fp);

for(i=0;i<5;i++){ch='';fputc(ch,fp);}ch=s->yw/10+48;fputc(ch,fp);ch=s->yw-(s->yw/10)*10+48;fputc(ch,fp);for(i=0;i<5;i++){ch='';fputc(ch,fp);}ch=s->sx/10+48;fputc(ch,fp);ch=s->sx-(s->sx/10)*10+48;fputc(ch,fp);for(i=0;i<5;i++){ch='';fputc(ch,fp);}ch=s->yy/10+48;fputc(ch,fp);ch=s->yy-(s->yy/10)*10+48;fputc(ch,fp);s=s->next;}elses=s->next;}fclose(fp);56

五調(diào)分(1)編譯,調(diào)過后,行程序。(2)輸入選擇進行兩的合成和生cj4.txt

(3)合成成功,選擇總分進行直插入法序。(4)打亂排序再用冒法排序。

(5)入姓名行查找六用手1本序的特點是我們不在需要從鍵盤上輸入數(shù)據(jù)是接從已有文件中讀取數(shù)據(jù)在據(jù)很大時或者需要反復(fù)使用同一個數(shù)據(jù)時有很大的優(yōu)勢。2、要程序運行的關(guān)鍵是在c盤存在cj1.txt和cj2.txt兩文,用戶在使用是需得注意。3、本人在寫程序時重心主要放對數(shù)據(jù)的處理上,所以在界面設(shè)計方面還做得不好,請多多包涵。4、程序操作很簡單,只要按提操作即可完成要求的內(nèi)容。

七參文1據(jù)結(jié)構(gòu)教程(第三版李葆尹民編著C言程序設(shè)計(第三版何銘顏暉主據(jù)結(jié)構(gòu)教程機實驗指導(dǎo)》李春葆編八程設(shè)總

清華大學(xué)出版社高等教育出版社清華大學(xué)出版社通過兩個星期的折騰,總算把課程設(shè)計給完成了,這是一個堅苦而又漫長的過程。是啊,讀了么多年的書,課程設(shè)計可是第一次??粗鴦趧映晒?,很欣慰!雖然這不是我一個人做的,是大家共同努力得來的?!耙苍S完成不了!”兩個星期前我們這樣說,“完成他沒問題!”一個星期前我們這樣說,現(xiàn)我們可以說:“哈哈,完成啦”!剛開始,可以說是沒有頭緒,于是就去圖書館找資料,找到了一些關(guān)于畫圖方面的,可是這點進展遠遠不夠,這只是一個小小的開始。下一步是上網(wǎng)查,找到了些與我們題目相似的,那時我每個人都很高興,可是那還不是我們要的,于是又上網(wǎng)查到了些有關(guān)的函數(shù)等等,終于在我們大家的力下,完成了這個程序。雖然對著電腦做程序,有點累有點熱,可是當看到勞動成果時,真是別有一番滋味在心頭??!上無難事,只怕有心人,的確如此。做完這個程序最大的收獲就是感受到了集體的力量,當然個的智慧也是很重要的哦!做完這個課程設(shè)計,我們的自信一下子提高了,我們也會寫程序了;盡管對于有些人這種程序很簡單可對我們C語初學(xué)者來說經(jīng)很不容易了次體驗為以后的學(xué)習(xí)計算機的我們增強了心。享受勞動成果的滋味實在很美妙??!九程源碼錄#include<stdio.h>#include<stdlib.h>voidmain(){typedefstructLNode{charname[6];intno;intyw;intsx;intyy;structLNode*next;}LinkList;structNameNo{intno;

intyw;intsx;inttotal;charname[6];}st[10];FILE*fp,*fp1;charch,sname[6];intx,i,j;NameNotmp;LinkList*p,*s;printf();printf();printf("學(xué)生成績管理系統(tǒng)");printf(printf();printf("在您的盤根目錄下是否有j1.txtcj2.txt件?如果有請輸入,);printf("否則輸入;如果沒有,那么程序?qū)⒔K止!?"scanf(,&i);ifreturnprintf();printf("對j1.txtcj2.txt進行合成請按‘’");scanf(,&i);ifreturnprintf("正在把j1.txtcj2.txt的數(shù)據(jù)進行合并\n");printf();if"rt"從文本文件j1.txt讀取數(shù)據(jù)傳向cj3.txt{printf("無j1.txt本文件,程序結(jié)束。);return}fp1=fopen(,"wt"ch=fgetc(fp);while{fputc(ch,fp1);ch=fgetc(fp);}fclose(fp1);fclose(fp);if"rt"從文本文件j2.txt讀取數(shù)據(jù)接到cj3.txt后面{printf("無本文件,程序結(jié)束。);return}

fp1=fopen(,"a");forfgetc(fp);ch=fgetc(fp);while{fputc(ch,fp1);ch=fgetc(fp);}fclose(fp1);fclose(fp);printf("合并成功!現(xiàn)在你可以在盤根目錄下看到一個cj3.txt件\n"printf();p=(LinkList*)malloc((LinkList));p->next=NULL;fp=fopen(,"rt");//從合成后的j3.txt取數(shù)據(jù),生成鏈表forfgetc(fp);ch=fgetc(fp);while{s=(LinkList*)malloc((LinkList));fgets(s->name,7,fp);forfgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->no=x;forfgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->yw=x;forfgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->sx=x;forfgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->yy=x;s->next=p->next;

p->next=s;ch=fgetc(fp);}fclose(fp);printf("對j3.txt有不及格的學(xué)生信息生成j4.txt按‘’);scanf(,&i);ifreturnprintf("正在生成j4.txt\n");printf();iffp=fopen(,"wt");//把三科成績中有補考的學(xué)生信息放入j4.txtfputs(姓

學(xué)號語文

數(shù)學(xué)

英語"fclose(fp);fp=fopen(,"a"s=p->next;while{if{ch=;fputc(ch,fp);fputs(s->name,fp);for{ch='fputc(ch,fp);}ch=s->no/10+48;fputc(ch,fp);ch=s->no-(s->no/10)*10+48;fputc(ch,fp);for{ch='fputc(ch,fp);}ch=s->yw/10+48;fputc(ch,fp);ch=s->yw-(s->yw/10)*10+48;fputc(ch,fp);for{ch='fputc(ch,fp);

}ch=s->sx/10+48;fputc(ch,fp);ch=s->sx-(s->sx/10)*10+48;fputc(ch,fp);for{ch='fputc(ch,fp);}ch=s->yy/10+48;fputc(ch,fp);ch=s->yy-(s->yy/10)*10+48;fputc(ch,fp);s=s->next;}elses=s->next;}fclose(fp);printf("生成成功!現(xiàn)在你可以在盤根目錄下看到一個cj4.txt件"printf();s=p->next;//將學(xué)生信息從鏈表復(fù)制到數(shù)組中for{st[i].no=s->no;st[i].yw=s->yw;st[i].sx=s->sx;st[i].total=s->yw+s->sx+s->yy;forst[i].name[j]=s->name[j];s=s->next;}printf("用直接插入法排序請按‘’:);scanf(,&i);printf();if{for//直接插入法排序{tmp=st[i];j=i-1;while{

st[j+1]=st[j];j--;}st[j+1]=tmp;}printf(printf();

直接插入法排序后總分從大到小排序為);printf("姓名

學(xué)號

語文

數(shù)學(xué)

英語

總分);for{if{printf("printf(printf("printf("printf("printf("printf(,st[i].total);printf(}else{printf("printf("printf("printf("printf("printf(,st[i].total);printf();}}}printf("將排好序的數(shù)組打亂n"printf();s=p->next;//將排好序的數(shù)組打亂,從新用冒泡法排序for{st[i].no=s->no;st[i].yw=s->yw;st[i].sx=s->sx;st[i].total=s->yw+s->sx+s->yy;forst[i].name[j]=s->name[j];

s=s->next;}printf("用冒泡法排序請按‘’:);scanf(,&i);printf();if{for//冒泡法排序{forif{tmp=st[j];st[j]=st[j-1];st[j-1]=tmp;}}printf(printf();

冒泡法排序后總分從大到小排序為n"printf

溫馨提示

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

評論

0/150

提交評論