




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
課程設計務書學姓:指教:
專班:工單:題
目:學成管系已技參和計求現有學生成績信息文件1(容如下姓名學語文數英語張明明01677882李成友02789188張輝燦03688256王露04564577陳東明05673847…......…學生成績信息文件2(cj2.txt,內容如:姓名學語文數英語陳果31576882李華明32889068張明東33484256李明國34504587陳道亮35475877…......…試編寫一管理系,其本能求實現對兩個文件數據進行合并,成新文件cj3.txt抽取出三科成績中有補考的學生并保存在一個新文件cj4.txt對合并后的文件3.txt中數據按總分降序排至少采用兩種排序方法實)輸入一個學生姓名后能查找到此學生的信息并輸出結(少采用兩種查找方法實現)要求使用結構體,鏈或數組等實上述要.采用多種方法且算法正確,可當加.要完的要務:一需分
(包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求)數據結構程設計說明
、問題描述現如今,學校人數的暴漲,對學生基本信息的錄入,保存量越來越大,為了簡化對工作人員的作,故設計一個程序來完成對學生基本信息的錄入,保存,編輯等簡單操作。、基本任務()對生信息表cj1和cj2進行合并;()把并的信息生成cj3;()把cj3中補考的學生息生成cj4;()對并后的文件3.txt中的數據按總分降序排序;()輸一個學生姓名后能找到此學生的信息并輸出結果。二概設為了完成需求分析的基本任務,主要從以下3個面進行設計:1主界面設為了實現學生成績管理系統的各項功能,設計了一個含有多個菜單項的主控菜單模塊以鏈接系的各項功能,以方便用戶使用系統。系統主控菜單運行界面如圖1所:圖1學成績管理系統主菜單2數結設系統采用鏈表的順序存儲結構個符數組存儲學生姓名個型數存儲學生學號﹑語文成績﹑數學成績﹑英語成績。和一個結構體數組。3系功設(從c盤讀取cj1.txt和cj2.txt中學生成績信息序會給出提示為如果在c盤下存在這兩個文件那么程序將不能繼續會自動退出。(程給出選擇是否將從c盤讀取的學生信息保存到盤下cj3.txt中如您選擇是那程序將執行如在c盤在一個為cj3.txt的文件那程序將用讀取的信息將其覆蓋果存在,
則系統會自動生成一個名為cj3.txt的文將數據放入其中。(會出選擇是否將中有補考的學生信息生成一個cj4.txt的件您擇是。那么程序將會執行。對于在c盤否有名為cj4.txt的件的處理和上面一樣。()序會給出按總分大小排序的選項。程序設計了兩種排序方法—直接插入法排序和冒泡排。(5)最后程序設計了一個循環,現根據學生姓名查找學生成績信息。如果你所輸入的學生姓名不存在,程序將會輸出“查無此人”的提示符并提示是否繼續查找。你可根據需要選擇。如果選否,程序退出。三模設【主程序模塊voidmain(){fp=fopen(,"rt");從文本文件cj1.txt中讀取數據傳向cj3.txtfp=fopen(,"rt"http://從文本文件cj2.txt中讀取數據接到cj3.txt的后面fp=fopen(,"rt"http://從合成后的cj3.txt讀取數據,生成鏈表fp=fopen(,"wt"http://把三科成績中有補考的學生信息放入for{}//接插入法排序for{}//泡法排序do{}while}【功能模塊調用關系圖】主程序模塊讀取學生信息排序查找
【模板詳細設計】成績管理系統讀取數據從cj1.txt中從cj2.txt中
合并數據生成cj3.txt生成cj4.txt
成績排序直接插入法打亂
姓名查找輸入姓名
退出本系統冒泡法typedefstructLNode{charname[6];intno;intyw;intsx;intyy;structLNode*next;}LinkList;structNameNo{intno;intyw;intsx;inttotal;charname[6];}st[10];四詳設(c盤根目錄下打開c用FILE指針fp指向cj1.txt,fp=fopen("c:\\cj1.txt","rt")再用一個ILE型指針*fp1打開cj3.txt。使fp1=fopen("c:\\cj3.txt","wt")對j3.txt只寫。后循環使用c和putc(ch,fp1)cj1.txt信息復制cj3.txt中if((fp=fopen("c:\\cj1.txt","rt"))==NULL)//文本文件cj1.txt中讀取數據傳向
cj3.txt{printf("無cj1.txt文本文件,程序結束。無cj1.txt程序將無法進行。return;//程序退出}fp1=fopen("c:\\cj3.txt","wt");//打開cj3.txt寫ch=fgetc(fp);//從cj1.txt中讀取一個字符存入h中while(ch!=EOF)//循環{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已經存在,所以它是多余的,循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讀取數據,生成鏈表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("姓名學號語文fclose(fp);fp=fopen("c:\\cj4.txt","a");s=p->next;while(s!=NULL){
數學
英語",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
五調分(1)編譯,調過后,行程序。(2)輸入選擇進行兩的合成和生cj4.txt
(3)合成成功,選擇總分進行直插入法序。(4)打亂排序再用冒法排序。
(5)入姓名行查找六用手1本序的特點是我們不在需要從鍵盤上輸入數據是接從已有文件中讀取數據在據很大時或者需要反復使用同一個數據時有很大的優勢。2、要程序運行的關鍵是在c盤存在cj1.txt和cj2.txt兩文,用戶在使用是需得注意。3、本人在寫程序時重心主要放對數據的處理上,所以在界面設計方面還做得不好,請多多包涵。4、程序操作很簡單,只要按提操作即可完成要求的內容。
七參文1據結構教程(第三版李葆尹民編著C言程序設計(第三版何銘顏暉主據結構教程機實驗指導》李春葆編八程設總
清華大學出版社高等教育出版社清華大學出版社通過兩個星期的折騰,總算把課程設計給完成了,這是一個堅苦而又漫長的過程。是啊,讀了么多年的書,課程設計可是第一次。看著勞動成果,很欣慰!雖然這不是我一個人做的,是大家共同努力得來的。“也許完成不了!”兩個星期前我們這樣說,“完成他沒問題!”一個星期前我們這樣說,現我們可以說:“哈哈,完成啦”!剛開始,可以說是沒有頭緒,于是就去圖書館找資料,找到了一些關于畫圖方面的,可是這點進展遠遠不夠,這只是一個小小的開始。下一步是上網查,找到了些與我們題目相似的,那時我每個人都很高興,可是那還不是我們要的,于是又上網查到了些有關的函數等等,終于在我們大家的力下,完成了這個程序。雖然對著電腦做程序,有點累有點熱,可是當看到勞動成果時,真是別有一番滋味在心頭啊!上無難事,只怕有心人,的確如此。做完這個程序最大的收獲就是感受到了集體的力量,當然個的智慧也是很重要的哦!做完這個課程設計,我們的自信一下子提高了,我們也會寫程序了;盡管對于有些人這種程序很簡單可對我們C語初學者來說經很不容易了次體驗為以后的學習計算機的我們增強了心。享受勞動成果的滋味實在很美妙啊!九程源碼錄#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("學生成績管理系統");printf(printf();printf("在您的盤根目錄下是否有j1.txtcj2.txt件?如果有請輸入,);printf("否則輸入;如果沒有,那么程序將終止!?"scanf(,&i);ifreturnprintf();printf("對j1.txtcj2.txt進行合成請按‘’");scanf(,&i);ifreturnprintf("正在把j1.txtcj2.txt的數據進行合并\n");printf();if"rt"從文本文件j1.txt讀取數據傳向cj3.txt{printf("無j1.txt本文件,程序結束。);return}fp1=fopen(,"wt"ch=fgetc(fp);while{fputc(ch,fp1);ch=fgetc(fp);}fclose(fp1);fclose(fp);if"rt"從文本文件j2.txt讀取數據接到cj3.txt后面{printf("無本文件,程序結束。);return}
fp1=fopen(,"a");forfgetc(fp);ch=fgetc(fp);while{fputc(ch,fp1);ch=fgetc(fp);}fclose(fp1);fclose(fp);printf("合并成功!現在你可以在盤根目錄下看到一個cj3.txt件\n"printf();p=(LinkList*)malloc((LinkList));p->next=NULL;fp=fopen(,"rt");//從合成后的j3.txt取數據,生成鏈表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有不及格的學生信息生成j4.txt按‘’);scanf(,&i);ifreturnprintf("正在生成j4.txt\n");printf();iffp=fopen(,"wt");//把三科成績中有補考的學生信息放入j4.txtfputs(姓
學號語文
數學
英語"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("生成成功!現在你可以在盤根目錄下看到一個cj4.txt件"printf();s=p->next;//將學生信息從鏈表復制到數組中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("姓名
學號
語文
數學
英語
總分);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("將排好序的數組打亂n"printf();s=p->next;//將排好序的數組打亂,從新用冒泡法排序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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出國勞務合同樣本樣本
- 內部股東股權轉讓合同樣本
- 軍訓服合同樣本
- 公司在蓋房合同樣本
- 交易所網簽合同樣本
- 五金合作合同標準文本
- 年度工作計劃的調整與反饋
- 200字雇傭合同樣本
- 出售合同樣本寫
- 第14講 人體生命活動的調節與人類活動對生物圈的影響 2025年會考生物學專題練習(含答案)
- JJF 1271-2010公路運輸模擬試驗臺校準規范
- GB/T 22795-2008混凝土用膨脹型錨栓型式與尺寸
- GB/T 19851.15-2007中小學體育器材和場地第15部分:足球門
- GB/T 10095.1-2001漸開線圓柱齒輪精度第1部分:輪齒同側齒面偏差的定義和允許值
- 全國戒毒醫療機構名單
- ICU 呼吸機相關性肺炎預防措施執行核查表
- 汽車吊檢測保養記錄
- 市政工程安全臺賬表
- 航天模型的設計、制作與比賽課件
- 公路工程施工現場安全檢查手冊
- 高考倒計時60天課件
評論
0/150
提交評論