_C語言課程設計報告 (1)_第1頁
_C語言課程設計報告 (1)_第2頁
_C語言課程設計報告 (1)_第3頁
_C語言課程設計報告 (1)_第4頁
_C語言課程設計報告 (1)_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、優質文本?程序設計實踐實驗報告?姓 名學 號班 級教師開 設 學 期2015-2016學年第3學期 開 設 時 間2016.6.272016.7.15報 告 日 期2016.7.3評 分計算機與信息工程學院目錄1.題目黑體二號加粗11.1問題描述及要求黑體四號加粗,1.15倍行距11.2總體設計11.3 詳細設計11.4 運行結果截圖11.5源程序12.日志2優質文本1.題目黑體二號加粗1.1問題描述及要求黑體四號加粗,1.15倍行距學生根本信息輸入、輸出、插入、刪除、排序、查詢、數據保存及翻開。1.2總體設計系統功能實現流程圖 11.3 詳細設計1.3.1 函數設計:1. 檢查重復學號:能:

2、將輸入的學號與文件中已存在的學號信息進行比對,假設出現重復那么提醒用戶輸入錯誤,重新輸入。2. 記錄數據組數函數:用全局變量記錄所有數據的組數,通過對文件的一個個讀取來給全局變量賦值。3. 主函數:建立輸出界面模板,利用switch-case函數,通過輸入的數調用相應的函數來實現所要的功能。1.3.2 系統功能實現:1 輸入函數:建立一個二進制文件,翻開,給全局變量賦值確定要輸入的組數。輸入學號,判斷是否正確,再判斷是否重復,假設不滿足條件那么用goto語句返回,滿足那么通過循環邊輸入數據邊保存數據,關閉文件。系統功能具體實現圖 12 輸出函數:翻開文件,輸出模板,用循環輸出文件里保存的數據。

3、 系統功能具體實現圖 23 成績查詢:翻開文件,輸入所要查詢的學號,通過循環將輸入的學號和文件里的學號一個個比擬,假設文件里有該學生的數據,那么從文件數據里找出該學生數據并輸出,否那么無輸出。系統功能具體實現圖 34 數據排序:翻開文件,用循環先將原來的數據全部輸出,然后再根據平均成績作為比擬,用冒泡法進行排序,用循環將排序后的數據邊保存邊輸出。 系統功能具體實現圖 45 修改數據:輸入要修改的學號,用循環找出相對應的一組數據,假設找到,那么輸出這組數據,否那么報錯并跳出。翻開文件,修改這組數據并輸出,用循環重新保存數據。 系統功能具體實現圖 56 數據刪除:輸入要刪除的學生號數,判斷是否有數

4、據可供刪除,否那么退出,是那么用循環找出這組數據并刪除,然后將組數減一,用循環重新保存。 系統功能具體實現圖 67 數據插入:讀取文件,先輸出文件里有幾組數據,如果沒有那么不能插入,有那么輸入要插入在哪個數據后面,用循環插入并修改文件里的數據。 系統功能具體實現圖 71.4 運行結果截圖1. 輸入: 圖- 1 輸入 2. 輸出: 圖- 2 輸出3. 查詢: 圖- 3 查詢4. 排序: 圖- 4 排序5. 修改:圖- 5 修改1圖- 6 修改26. 刪除:圖- 7 刪除1圖- 8 刪除27. 插入:圖- 9 插入1圖- 10 插入28. 主界面:圖- 11 主界面1.5源程序#include&l

5、t;stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define A 40int r=0;/*全局變量r代表學生數*/struct studentchar name50;char sex;int num;int age;int math;int C;double ave;int n;stuA;/*輸入數據*/void finput()FILE *fp;/*建立一個二進制文件*/int i,k,j;fp=fopen("fstu","wb")

6、;/*翻開只寫文件*/k=r;printf("請輸入要輸入的學生數:");scanf("%d",&r);/*輸入數據組數*/for(i=0;i<r;i+)loop:printf("請輸入四位數學號:");scanf("%d",&stui.num);if(stui.num<1000|stui.num>9999)/*判斷學號輸入是否正確*/printf("輸入錯誤,請重新輸入");goto loop;for(j=0;j<k;j+)/*查找重復輸入的學號*/if

7、(stuj.num=stui.num)printf("學號已存在,請重新輸入:");goto loop;printf("請輸入姓名,性別,年齡,C成績,數學成績:n");scanf("%s %c%d%d%d",,&stui.sex,&stui.age,&stui.C,&stui.math);stui.ave=(stui.C+stui.math)/2.0;stui.n=i;fwrite(&stui,sizeof(struct student),1,fp);/*邊輸入邊保存*/fc

8、lose(fp);system("pause");/*按任意鍵繼續*/system("cls");/*清屏*/*初始化全局變量r*/int loading()int i = 0;char y;FILE *fp;fp=fopen("fstu","rb");if ( fp= NULL)printf("cannot open this filen");printf("你要創立一個文件嗎?(y/n)n");scanf("%c",&y);if(y='

9、y')fopen("fstu","wb");elser = 0;while (fread(&stui,sizeof(struct student),1,fp)/*讀取出學生數*/i+;r+;fclose(fp);return i;/*輸出數據*/void foutput()FILE *fp;int i;fp=fopen("fstu","rb");/*讀取文件*/printf("444444444444444444444444444444444444n");printf("

10、; 信息列表n");printf("-n");printf("學號 姓名 性別 年齡 C成績 數學 平均分n");printf("-n");for(i=0;i<r;i+)/*輸出所有數據*/printf("%8d%8s%8c%8d%8d%8d%8.2fn",stui.num,,stui.sex,stui.age,stui.C,stui.math,stui.ave);printf("-nn");printf("4444444444444444444444

11、44444444444444n");fclose(fp);system("pause");system("cls");/*成績查詢*/void fsearch()FILE *fp;int i,num;fp=fopen("fstu","rb");/*讀取文件*/rewind(fp);printf("請輸入要查找的學號:");scanf("%d",&num);printf("444444444444444444444444444444444444n&q

12、uot;);printf(" 查詢結果n");printf("-n");printf("學號 姓名 性別 年齡 C成績 數學 平均分n");printf("-n");for(i=0;i<r;i+)/*通過學號查找對應的學生信息*/if(stui.num=num)printf("%8d%8s%8c%8d%8d%8d%8.2fn",stui.num,,stui.sex,stui.age,stui.C,stui.math,stui.ave);printf("-nn&q

13、uot;);printf("444444444444444444444444444444444444nnn");fclose(fp);system("pause");system("cls");/*成績排序*/void fsort()int i,j,n;FILE *fp;struct student t;fp=fopen("fstu","rb");/*讀取文件*/printf("444444444444444444444444444444444444n");printf(&q

14、uot; 成績表n");printf("-n");printf("學號 姓名 性別 年齡 C成績 數學 平均分n");printf("-n");for(i=0;i<r;i+)/*先輸出所有數據*/printf("%8d%8s%8c%8d%8d%8d%8.2fn",stui.num,,stui.sex,stui.age,stui.C,stui.math,stui.ave);printf("-nn");printf("4444444444444444444

15、44444444444444444n");fclose(fp);n=i;for(i=0;i<n;i+)/*冒泡法排序*/for(j=i+1;j<n;j+)if(stui.ave<stuj.ave)t=stui;stui=stuj;stuj=t;fp=fopen("fstu","wb");printf("nnn");printf("444444444444444444444444444444444444n");printf(" 成績列表 n");printf("

16、;-n");printf("序號 學號 姓名 性別 年齡 C成績 數學 平均分n");printf("-n");for(i=0;i<n;i+)/*重新保存排序后的數據*/fwrite(&stui,sizeof(struct student),1,fp);printf("%8d%8s%8c%8d%8d%8d%8.2fn",stui.num,,stui.sex,stui.age,stui.C,stui.math,stui.ave);printf("44444444444444444444

17、4444444444444444n");fclose(fp);system("pause");system("cls");/*修改數據*/void fchange() FILE *fp;int i,num,n;int flag=0; printf("請輸入要修改學生的學號:");scanf("%d",&num);for(i=0;i<=r;i+)if(stui.num=num)/*查找該學生*/printf("444444444444444444444444444444444444n

18、");printf(" 成績列表n");printf("-n");printf("學號 姓名 性別 年齡 C成績 數學 平均分n");printf("-n");printf("%8d%8s%8c%8d%8d%8d%8.2fn",stui.num,,stui.sex,stui.age,stui.C,stui.math,stui.ave);printf("-nn");printf("444444444444444444444444444444

19、444444n");n=i;flag=1;break;if(flag=0)/*沒有該學生信息*/printf("444444444444444444444444444444444444n");printf(" 輸入錯誤!n");printf(" 請返回!n");printf("444444444444444444444444444444444444n");return;printf("nnn"); fp=fopen("fstu","rb+");f

20、seek(fp,n*sizeof(struct student),0);/*把文件指針移到開頭*/printf("學號 姓名 性別 年齡 C成績 數學n");scanf("%d%s %c%d%d%d",&stui.num,,&stui.sex,&stui.age,&stui.C,&stui.math);/*修改數據*/stui.ave=(stui.C+stui.math)/2.0;for(i=0;i<r;i+)fwrite(&stui,sizeof(struct student),1

21、,fp);/*保存*/fclose(fp);fp=fopen("fstu","rb");printf("444444444444444444444444444444444444n");printf(" 成績列表n");printf("-n");printf("學號 姓名 性別 年齡 C成績 數學 平均分n");printf("-n");for(i=0;i<r;i+)/*輸出修改后的數據*/printf("%8d%8s %8c%8d%8d%8

22、d%8.2fn",stui.num,,stui.sex,stui.age,stui.C,stui.math,stui.ave);printf("-nn");printf("444444444444444444444444444444444444n");fclose(fp);system("pause");system("cls");/*數據刪除*/void fdelete()int i,number, j, flag = 0, k = 0;FILE *fp;printf("請輸

23、入要刪除的學生號數:");scanf("%d",&number);fp=fopen("fstu","rb+"); if(fp=NULL)/*判斷文件中是否有數據可供刪除*/printf("文件翻開失敗n");exit(0);/*正常退出所有文件*/for(i=0;i<r;i+)/*查找該學生的位置*/if(stui.num=number)j = i;flag = 1;break;if(flag = 1)for(j=i;j<r;j+)/*刪除并重新排列*/stuj = stuj+1;r-

24、;/*成功刪除,學生總數減一*/for(i=0;i<r;i+)/*重新保存*/fwrite(&stui,sizeof(struct student),1,fp);fclose(fp);/*插入數據*/void finsert()int i,j;FILE *fp;fp=fopen("fstu","rb+");printf("目前有%d個數據n", r);if (r = 0)printf("抱歉!沒有數據時,您不能使用插入功能!n");return;printf("你想插入那個位置后面?&quo

25、t;);scanf("%d",&j);/*按位置插入*/for(i=r-1;i>=j;i-)/*在要插入的位置留空*/stui+1=stui;printf("請輸入數據:");scanf("%d%s %c%d%d%d",&stuj.num,,&stuj.sex,&stuj.age,&stuj.C,&stuj.math);stuj.ave=(stuj.C+stuj.math)/2.0;r+;fclose(fp);/*主函數*/main()int n;r=loadin

26、g();for(;)system("color a");printf("n");printf("444444444444444444444444444444444444n");printf("444n");printf("4 歡送來到學生信息管理系統 4n");printf("444n");printf("444n");printf("4 主菜單 4n");printf("444n");printf("3

27、4 1.錄入數據4 3n");printf("3 4 2.輸出數據4 3n");printf("3 4 3.查找數據4 3n");printf("3 4 4.數據排序4 3n");printf("3 4 5.數據修改4 3n"); printf("3 4 6.數據刪除4 3n");printf("3 4 7.數據插入4 3n");printf("3 4 8.退出系統4 3n");printf("444n");printf(&q

28、uot;444444444444444444444444444444444444n");printf("請輸入選擇項(1-8):");scanf("%d",&n);if(n>8|n<1)printf("輸入錯誤,請重新輸入!");printf("nnnn");system("cls");if(n>0&&n<9)switch(n)case 1:finput();break;case 2:foutput();break;case 3:fsearch();break;case 4:fsort();break;case 5:fchange();break; case 6:fdelete();break;case 7:finsert();break;case 8:printf("444444444444444444444444444444444444n");printf("444n");printf(&qu

溫馨提示

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

評論

0/150

提交評論