C語言課程設(shè)計報告成績有序管理_第1頁
C語言課程設(shè)計報告成績有序管理_第2頁
C語言課程設(shè)計報告成績有序管理_第3頁
C語言課程設(shè)計報告成績有序管理_第4頁
C語言課程設(shè)計報告成績有序管理_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、xx 航 空 工 業(yè) 學 院 課程設(shè)計學 號 _班 級 _ 姓 名 _指導教師 _年 月 日沈 陽 航 院 設(shè) 計 用 紙 沈陽航空工業(yè)學院課程設(shè)計任務書機械與汽車學院 機械設(shè)計制造及其自動化 專業(yè) 5406108 班 學號 200504061271一、課程設(shè)計題目:成績有序管理二、課程設(shè)計工作自2007年7月9日起至2007年7月14日止三、課程設(shè)計內(nèi)容:運用所學的c語言知識,編制和調(diào)試程序,具有如下功能:(1) 輸入十個學生的記錄信息,學生數(shù)據(jù)包括:學號、姓名、班級、成績,其中成績包括:英語、高數(shù)、計算機三門課程。(2) 采用直接插入排序算法將學生記錄按照學號進行降序排序,并將學生記錄順序

2、輸出。求出每個學生的平均分,對其進行升序排序并輸出。注:算法請參考任意一本c語言版數(shù)據(jù)結(jié)構(gòu)教材。四、課程設(shè)計要求:程序質(zhì)量:l 貫徹結(jié)構(gòu)化程序設(shè)計思想。l 用戶界面友好,功能明確,操作方便;可以加以其它功能或修飾。l 用戶界面中的菜單至少應包括“輸入數(shù)據(jù)”、“查詢”、“排序”、“退出”4項。l 代碼應適當縮進,并給出必要的注釋,以增強程序的可讀性。課程設(shè)計說明書:課程結(jié)束后,上交課程設(shè)計說明書(打印稿和電子稿),其內(nèi)容如下:l 封面l 課程設(shè)計任務書l 目錄l 需求分析(分析題目的要求)l 程序流程圖(總體流程圖和主要功能模塊流程圖)l 核心技術(shù)的實現(xiàn)說明及相應程序段l 個人總結(jié)l 參考資料l

3、 源程序及適當?shù)淖⑨屩笇Ы處煟篲學生簽名:_ 目錄一、程序設(shè)計題目1二、需求分析1三、程序流程圖2四、核心技術(shù)的實現(xiàn)方法、程序段及注釋5五、個人總結(jié).8六、參考文獻93一、程序設(shè)計題目學生成績有序管理,具體要求如下:1、輸入學生數(shù)據(jù)2、采用直接插入排序算法將學生記錄按照學號進行降序排序,并將學生記錄順序輸出。3、求出每個學生的平均分,對其進行升序排序并輸出。二、需求分析經(jīng)過對程序設(shè)計題目的分析可知,整個程序的設(shè)計實現(xiàn)大致分為三個模塊,其中每一個模塊對應一個函數(shù),他們的功能分別是:輸入學生數(shù)據(jù)函數(shù)(input),用插入法按學號排序函數(shù)(sort_num),求平均分并排序函數(shù)(sort_class

4、)。在這些函數(shù)當中,函數(shù)的實現(xiàn)嚴格按照題目的要求。1、輸入學生數(shù)據(jù)函數(shù) 主要實現(xiàn)程序最初運行時學生數(shù)據(jù)的錄入;2、用插入法按學號排序函數(shù) 實現(xiàn)的功能是按照學號對學生的數(shù)據(jù)記錄排序。3、求平均分并排序函數(shù) 按照題目的具體要求實現(xiàn)的是平均分的遞減排序并輸出;注:每個學生數(shù)據(jù)至少應該包括學號、姓名、三門成績,學生數(shù)據(jù)要保存在myfile.dat文件中。每一個學生記錄都包含學號、姓名,以及英語、計算機和數(shù)學三門成績,在程序當中,將學生記錄類型定義為結(jié)構(gòu)體類型,添加以及追加的學生信息直接寫入e盤的myfile.dat文件中,可以對學生數(shù)據(jù)進行永久保存。三、程序流程圖1、程序總體結(jié)構(gòu)圖圖1. 程序總體結(jié)構(gòu)

5、圖 2、具體功能框圖(1)添加學生數(shù)據(jù)函數(shù)input()圖2. 添加學生數(shù)據(jù)函數(shù)input() (2)用插入法按學號排序函數(shù)圖3. 用插入法按學號排序函數(shù)(3)按平均分排序函數(shù)sort 圖4. 按平均分排序函數(shù)sort四、核心技術(shù)的實現(xiàn)方法、程序段及注釋本程序主要由三個自定義函數(shù)和一個主函數(shù)組成,其中主函數(shù)以菜單的形式調(diào)用其他函數(shù)來實現(xiàn)要求的所有功能。在這些函數(shù)當中,輸入學生數(shù)據(jù)函數(shù)(input),用插入法按學號排序函數(shù)(sort_number),求平均分并排序函數(shù)(sort_class)是程序中為核心的部分,下面分別進行說明。1、輸入學生數(shù)據(jù)函數(shù)(input) 輸入數(shù)據(jù)為,首先由程序創(chuàng)建一個

6、新文件,并將錄入的學生信息寫入該文件當中;具體的程序段如下 void input()/*輸入學生數(shù)據(jù)函數(shù)(input)*/int i,j;file *fp; fp=fopen(e:myfile.dat,w+);/*創(chuàng)建一個新文件*/printf( enter no name class scoren);for(i=0;in;i+) /*輸入n名學生數(shù)據(jù)*/printf(non);scanf(%s,stui.no);printf(namen);scanf(%s,);printf(classn);scanf(%s,stui.class);printf(score englishn

7、);scanf(%d,&stui.e);printf(score computern) ;scanf(%d,&stui.c);printf(score mathn);scanf(%d,&stui.m);fprintf(fp,%-20s%-20s%-10sn,stui.no,,stui.class); /*將錄入的學生信息寫入該文件*/ fclose(fp);/*關(guān)閉文件*/printf(n*save to success*n);2、用插入法按學號排序函數(shù)(sort_number) 對于學號的排序采用的排序算法是插入法排序,整個排序過程在結(jié)構(gòu)體數(shù)組stu中實現(xiàn),由于排序算法涉及

8、到兩個數(shù)組元素的信息交換,因此還需要定義一個中間變量來協(xié)助,并用(output1)函數(shù)輸出。具體的程序段如下:sort_number()/*用插入法按學號排序函數(shù)*/ int i,j; struct student temp; for(i=1;i=0&strcmp(stuj.no,stuj+1.no)0) stuj+1=stuj;j-; stuj+1=temp; output1(); 3、求平均分并排序函數(shù)(sort_class)對于平均分的排序采用的排序算法是冒泡法排序,其中平均分的求得是在排序的過程中實現(xiàn)的,整個排序過程在結(jié)構(gòu)體數(shù)組stu中實現(xiàn),由于排序算法涉及到兩個數(shù)組元素的信息交換,因

9、此還需要定義一個中間變量來協(xié)助,并用(output2)函數(shù)輸出。具體的程序段如下:sort_class()/*求平均分并排序函數(shù)*/ struct student temp; int i,j; for(i=0;in-1;i+) /*采用冒泡法對平均分進行排序*/ for(j=0;j(stuj+1.e+stuj+1.c+stuj+1.m)/3.0) temp=stuj+1; stuj+1=stuj; stuj=temp; output2();五、個人總結(jié)在課程設(shè)計過程中的收獲和體會很多,通過本次課設(shè)使我對語言程有了更深的了解,而且使我認識到必須有認真的態(tài)度才能找出程序中的錯誤。本次課設(shè)程序基本完

10、成,達到了題目要求。六、參考文獻1 譚浩強c程序設(shè)計北京:清華大學出版社,20052 劉成等c語言程序設(shè)計實驗指導與習題集北京:中國鐵道出版社,2006七、附錄原程序:#include#include#include#includeint mulu();void input();void openfile();void sort_no();sort_class();void output1();void output2();#define n 10struct student char no30; char name30; char class30; int e; int c; int m;

11、stun; void main() int i; clrscr(); for(;) switch(mulu() case 1:input();break; case 2:sort_number();break; case 3:sort_class();break; case 4:exit(0); int mulu() int a; puts(*menu*); puts(*1.new*); puts(*2.no pai xu*); puts(*3.score pai xu*); puts(*4.exit*); printf(make choice:); puts(); do scanf(%d,&

12、a); while(a4); return(a); void input() int i,j;file *fp; fp=fopen(c:myfile.dat,w);printf( enter no name class scoren);for(i=0;in;i+)printf(non);scanf(%s,stui.no);printf(namen);scanf(%s,);printf(classn);scanf(%s,stui.class);printf(score englishn);scanf(%d,&stui.e);printf(score computern) ;sc

13、anf(%d,&stui.c);printf(score mathn);scanf(%d,&stui.m);fprintf(fp,%-20s%-20s%-10sn,stui.no,,stui.class);fclose(fp);printf(n*save to success*n);void openfile()int i; file *fp; if(fp=fopen(c:myfile.dat,w)=null) printf(sorry!can not open the file.n); exit(0); printf(nsaving filen);fprintf(fp,nu

14、mber name class n);for(i=0;in;i+) fprintf(fp,%-20s%-20s%-10sn,stui.no,,stui.class);fclose(fp); sort_number() int i,j; struct student temp; for(i=1;i=0&strcmp(stuj.no,stuj+1.no)0) stuj+1=stuj;j-; stuj+1=temp; output1(); sort_class() struct student temp; int i,j; for(i=0;in-1;i+) /*采用冒泡法對平均分進行排序*/ for(j=0;j(stuj+1.e+stuj+1.c+stuj+1.m)/3.0) temp=stuj+1; stuj+1=stuj; stuj=temp; output2();void output1() int i; for(i=0;in;i+) printf(%

溫馨提示

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

評論

0/150

提交評論