_C語言課程設(shè)計(jì)報(bào)告 (1)_第1頁
_C語言課程設(shè)計(jì)報(bào)告 (1)_第2頁
_C語言課程設(shè)計(jì)報(bào)告 (1)_第3頁
_C語言課程設(shè)計(jì)報(bào)告 (1)_第4頁
_C語言課程設(shè)計(jì)報(bào)告 (1)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

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

4、據(jù)可供刪除,否那么退出,是那么用循環(huán)找出這組數(shù)據(jù)并刪除,然后將組數(shù)減一,用循環(huán)重新保存。 系統(tǒng)功能具體實(shí)現(xiàn)圖 67 數(shù)據(jù)插入:讀取文件,先輸出文件里有幾組數(shù)據(jù),如果沒有那么不能插入,有那么輸入要插入在哪個數(shù)據(jù)后面,用循環(huán)插入并修改文件里的數(shù)據(jù)。 系統(tǒng)功能具體實(shí)現(xiàn)圖 71.4 運(yùn)行結(jié)果截圖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代表學(xué)生數(shù)*/struct studentchar name50;char sex;int num;int age;int math;int C;double ave;int n;stuA;/*輸入數(shù)據(jù)*/void finput()FILE *fp;/*建立一個二進(jìn)制文件*/int i,k,j;fp=fopen("fstu","wb")

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

7、(stuj.num=stui.num)printf("學(xué)號已存在,請重新輸入:");goto loop;printf("請輸入姓名,性別,年齡,C成績,數(shù)學(xué)成績: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");/*按任意鍵繼續(xù)*/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("你要創(chuàng)立一個文件嗎?(y/n)n");scanf("%c",&y);if(y='

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

10、; 信息列表n");printf("-n");printf("學(xué)號 姓名 性別 年齡 C成績 數(shù)學(xué) 平均分n");printf("-n");for(i=0;i<r;i+)/*輸出所有數(shù)據(jù)*/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("請輸入要查找的學(xué)號:");scanf("%d",&num);printf("444444444444444444444444444444444444n&q

12、uot;);printf(" 查詢結(jié)果n");printf("-n");printf("學(xué)號 姓名 性別 年齡 C成績 數(shù)學(xué) 平均分n");printf("-n");for(i=0;i<r;i+)/*通過學(xué)號查找對應(yīng)的學(xué)生信息*/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("學(xué)號 姓名 性別 年齡 C成績 數(shù)學(xué) 平均分n");printf("-n");for(i=0;i<r;i+)/*先輸出所有數(shù)據(jù)*/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("序號 學(xué)號 姓名 性別 年齡 C成績 數(shù)學(xué) 平均分n");printf("-n");for(i=0;i<n;i+)/*重新保存排序后的數(shù)據(jù)*/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");/*修改數(shù)據(jù)*/void fchange() FILE *fp;int i,num,n;int flag=0; printf("請輸入要修改學(xué)生的學(xué)號:");scanf("%d",&num);for(i=0;i<=r;i+)if(stui.num=num)/*查找該學(xué)生*/printf("444444444444444444444444444444444444n

18、");printf(" 成績列表n");printf("-n");printf("學(xué)號 姓名 性別 年齡 C成績 數(shù)學(xué) 平均分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)/*沒有該學(xué)生信息*/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("學(xué)號 姓名 性別 年齡 C成績 數(shù)學(xué)n");scanf("%d%s %c%d%d%d",&stui.num,,&stui.sex,&stui.age,&stui.C,&stui.math);/*修改數(shù)據(jù)*/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("學(xué)號 姓名 性別 年齡 C成績 數(shù)學(xué) 平均分n");printf("-n");for(i=0;i<r;i+)/*輸出修改后的數(shù)據(jù)*/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");/*數(shù)據(jù)刪除*/void fdelete()int i,number, j, flag = 0, k = 0;FILE *fp;printf("請輸

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

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

25、t;);scanf("%d",&j);/*按位置插入*/for(i=r-1;i>=j;i-)/*在要插入的位置留空*/stui+1=stui;printf("請輸入數(shù)據(jù):");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);/*主函數(shù)*/main()int n;r=loadin

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

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

28、uot;444444444444444444444444444444444444n");printf("請輸入選擇項(xiàng)(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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論