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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1. 系統(tǒng)菜單的主要功能(1) 輸入若干條記錄(2) 顯示全部記錄(3) 按學號排序(4) 插入一條記錄(5) 按姓名查找,刪除一條記錄(6) 查找并顯示一條記錄(7) 輸出統(tǒng)計信息 (新增)(8) 從正文中添加數(shù)據(jù)到結構體數(shù)組中(9) 將全部數(shù)據(jù)寫入文件中(0)退出程序2. 題目分析該題主要考察同學對結構體,指針,文件的操作,以及c 語言算法的把握,所以完成此道題目要求較強的設計力量,尤其是要有一種大局觀的意識。如何調程序也格外重要,通過這個程序可以學習到以前調試短程序沒有的的閱歷。菜單中的每一個選項都對應一個子程序,子程序的算法幾乎囊獲了全部 c 語言學過的技巧,下面就各個子程序中的功能進

2、行說明:功能 1 和 4 的算法相像,輸入一條記錄到結構體中去,其中有一部很關鍵,就是通過 gets 將全部的多余的字符,回車讀去,否則就會出錯。功能 2 是顯示全部的記錄,通過循環(huán)輸出,格式也比較重要。功能 3 為按學號排序,由于學號定義成了字符數(shù)組的形式,因此在運用冒泡法進行排序的時候,要用到 strcmp,strcpy 等函數(shù)。功能 5 為按姓名刪除記錄,先輸入姓名,再一一比較,假如沒有則返回失敗信息,假如找到就將此記錄都向前移一位,返回 n-1。16功能 6 的算法在 5 中就已經體現(xiàn)了,輸入姓名,一一比較。功能 7 為新增的功能,由于考慮到原來給出的函數(shù)中竟然沒有對同學成果的統(tǒng)計功能

3、,因此新增此功能,可以得出全部的記錄個數(shù),最高、最低、平均分,并輸出相關的同學信息等。功能 8 和 9 是對文件的操作,提前預備好數(shù)據(jù)。3. 感受學了將近一個學期的 c 語言了,說實話,挺疲乏的,特別是最終的課設,調得好煩。但現(xiàn)在想想收獲也不小,以前高中學 vb 的時候,始終覺得計算機語言挺簡潔的,現(xiàn)在看來當時根本沒有接觸到計算機語言的精髓。看到了自己做出的這個小程序,挺驕傲的,以前始終以為做出一個軟件一樣的程序是遙不行及的事情。我選擇的是其次個程序,由于自我覺得它涉及面更廣,把以前學過的算法幾乎都過了一遍。以后在遇到像等級考試這樣的事情我就再也不怕了。感謝藏洌老師的熱忱指導。恭維的話就不多說

4、了,感受或許就這么多吧。4. 程序正文部分#include<stdio.h>/*引用庫函數(shù)*/ #include<stdlib.h>#include<ctype.h> #include<string.h>typedef struct/*定義結構體數(shù)組*/char num10;/*學號*/char name20;/*姓名*/ int score;/*成果*/student;student stu80;/*結構體數(shù)組變量*/int menu_select()/*菜單函數(shù)*/char c; dosystem(“cls“);/*運行前清屏*/printf

5、(“tt*students” grade management system*n“);/*菜單選擇*/printf(“tt| 1. input records|n“);printf(“tt| 2. display all records|n“);printf(“tt| 3. sort|n“);printf(“tt| 4. insert a record|n“); printf(“tt| 5. delete a record|n“); printf(“tt| 6. query|n“);printf(“tt| 7. statistic|n“); printf(“tt| 8. add records

6、 from a text file|n“);printf(“tt| 9. write to a text file|n“);printf(“tt| 0. quit|n“);printf(“tt*n“); printf(“tttgive your choice(0-9):“);c=getchar();/*讀入選擇*/while(c<”0”|c>”9”);return(c-”0”);/*返回選擇*/int input(student stud,int n)/*輸入若干條記錄*/int i=0;char sign,x10;/*x10為清除多余的數(shù)據(jù)所用*/ while(sign!=”n”

7、&&sign!=”n”)/*推斷*/printf(“tttstudent”s num:“);/*交互輸入*/ scanf(“ttt%s“,studn+i.num);printf(“tttstudent”s name:“); scanf(“ttt%s“,studn+); printf(“tttstudent”s score:“); scanf(“ttt%d“,&studn+i.score); gets(x);/*清除多余的輸入*/ printf(“tttany more records?(y/n)“);scanf(“ttt%c“,&sign);/*輸入

8、推斷*/ i+;return(n+i);void display(student stud,int n)/*顯示全部記錄*/int i;printf(“ttt-n“);/*格式頭*/ printf(“tttnumbernamescoren“);printf(“tttn“);for(i=1;i<n+1;i+)/*循環(huán)輸入*/printf(“ttt%-16s%-15s%dn“,studi-1.num,,studi-1.score); if(i>1&&i%10=0)/*每十個暫停*/printf(“ttt-n“);/*格式*/ printf(“tt

9、t“);system(“pause“);printf(“tttn“);printf(“ttt“); system(“pause“);void sort_by_num(student stud,int n)/*按學號排序*/int i,j,*p,*q,s; char t10;for(i=0;i<n-1;i+)/*冒泡法排序*/ for(j=0;j<n-1-i;j+)if(strcmp(studj.num,studj+1.num)>0)strcpy(t,studj+1.num); strcpy(studj+1.num,studj.num); strcpy(studj.num,t)

10、; strcpy(t,studj+1.name); strcpy(studj+1.name,); strcpy(,t); p=&studj+1.score; q=&studj.score;s=*p;*p=*q;*q=s;int insert_a_record(student stud,int n)/*插入一條記錄*/char x10;/*清除多余輸入所用*/printf(“tttstudent”s num:“);/*交互式輸入*/ scanf(“ttt%s“,studn.num);printf(“tttstudent”s name:“);

11、 scanf(“ttt%s“,); printf(“tttstudent”s score:“); scanf(“ttt%d“,&studn.score); gets(x);n+;sort_by_num(stud,n);/*調用排序函數(shù)*/ printf(“tttinsert successed!n“);/*返回成功信息*/ return(n);int delete_a_record(student stud,int n)/*按姓名查找,刪除一條記錄*/char s20;int i=0,j;printf(“ttttell me his(her) name:“);/*交

12、互式問尋*/scanf(“%s“,s);while(strcmp(,s)!=0&&i<n) i+;/*查找推斷*/if(i=n)printf(“tttnot find!n“);/*返回失敗信息*/ return(n);for(j=i;j<n-1;j+)/*刪除操作*/strcpy(studj.num,studj+1.num); strcpy(,studj+1.name); studj.score=studj+1.score;printf(“tttdelete successed!n“);/*返回成功信息*/return(n-1

13、);void query_a_record(student stud,int n)/*查找并顯示一個記錄*/char s20; int i=0;printf(“tttinput his(her) name:“);/*交互式輸入*/ scanf(“ttt%s“,s);while(strcmp(,s)!=0&&i<n) i+;/*查找推斷*/ if(i=n)printf(“tttnot find!n“);/*輸入失敗信息*/ return;printf(“ttthis(her) number:%sn“,studi.num);/*輸出該同學信息*/ prin

14、tf(“ttthis(her) score:%dn“,studi.score);void statistic(student stud,int n)/*新增功能,輸出統(tǒng)計信息*/int i,j=0,k=0,sum=0;float aver;/*成果平均值*/ for(i=0;i<n;i+)/*循環(huán)輸入推斷*/sum+=studi.score; if(studj.score>studi.score) j=i; if(studk.score<studi.score) k=i;aver=1.0*sum/n;printf(“tttthere are %d records.n“,n);

15、/*總共記錄數(shù)*/ printf(“tttthe hignest score:n“);/*最高分*/printf(“tttnumber:%sname:%sscore:%dn“,studj.num,,studj.score); printf(“tttthe lowest score:n“);/*最低分*/printf(“tttnumber:%sname:%sscore:%dn“,studk.num,,studk.score); printf(“tttthe average score is %5.2fn“,aver);/*平均分*/int addfromt

16、ext(student stud,int n)/*從文件中讀入數(shù)據(jù)*/int i=0,num;file *fp;/*定義文件指針*/char filename20;/*定義文件名*/ printf(“tttinput the filename:“); scanf(“ttt%s“,filename);/*輸入文件名*/ if(fp=fopen(filename,“rb“)=null)/*打開文件*/printf(“tttcann”t open the filen“);/*打開失敗信息*/ printf(“ttt“);system(“pause“); return(n);fscanf(fp,“%d

17、“,&num);/*讀入總記錄量*/ while(i<num)/*循環(huán)讀入數(shù)據(jù)*/fscanf(fp,“%s%s%d“,studn+i.num,studn+,&studn+i.score); i+;n+=num;fclose(fp);/*關閉文件*/ printf(“tttsuccessed!n“); printf(“ttt“); system(“pause“);return(n);void writetotext(student stud,int n)/*將全部記錄寫入文件*/int i=0;file *fp;/*定義文件指針*/char filename2

18、0;/*定義文件名*/printf(“tttwrite records to a text filen“);/*輸入文件名*/ printf(“tttinput the filename:“);scanf(“ttt%s“,filename); if(fp=fopen(filename,“w“)=null)/*打開文件*/printf(“tttcann”t open the filen“); system(“pause“);return;fprintf(fp,“%dn“,n);/*循環(huán)寫入數(shù)據(jù)*/ while(i<n)fprintf(fp,“%-16s%-15s%dn“,studi.num

19、,,studi.score); i+;fclose(fp);/*關閉文件*/ printf(“successed!n“);/*返回成功信息*/void main()/*主函數(shù)*/int n=0;for(;)switch(menu_select()/*選擇推斷*/case 1:printf(“tttinput recordsn“);/*輸入若干條記錄*/ n=input(stu,n);break;case 2:printf(“tttdisplay all recordsn“);/*顯示全部記錄*/ display(stu,n);break;case 3:printf(“ttt

20、sortn“);sort_by_num(stu,n);/*按學號排序*/ printf(“tttsort suceessed!n“); printf(“ttt“);system(“pause“); break;case 4:printf(“tttinsert a recordn“); n=insert_a_record(stu,n);/*插入一條記錄*/ printf(“ttt“);system(“pause“); break;case 5:printf(“tttdelete a recordn“);n=delete_a_record(stu,n);/*按姓名查找,刪除一條記錄*/printf(“ttt“); system(“pause“); break;case 6:printf(“tttqueryn“);query_a_record(stu,n);/*查找并顯示一個記錄*/ printf(“ttt“);system(“pause“); break;case 7:printf(“tttstatisticn“);statistic(stu,n);/*新

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論