C語言程序設(shè)計實驗實驗報告_第1頁
C語言程序設(shè)計實驗實驗報告_第2頁
C語言程序設(shè)計實驗實驗報告_第3頁
C語言程序設(shè)計實驗實驗報告_第4頁
C語言程序設(shè)計實驗實驗報告_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《C語言程序設(shè)計實驗》實驗報告實驗九文件編程(一)班級:_07某某專業(yè)1班_學(xué)號:__1234567890____姓名:___實驗樣例_____日期:___2008.6.10_____臺州學(xué)院數(shù)信學(xué)院計算機(jī)系制作

一、實驗?zāi)康暮鸵缶C合使用基本結(jié)構(gòu)、基本算法、函數(shù)、指針、結(jié)構(gòu)體、鏈表等知識設(shè)計程序。二、實驗指導(dǎo)1、注意:本次實驗為綜合性實驗,需要綜合本課程以前所學(xué)內(nèi)容,完成編制一個小型應(yīng)用程序。需要復(fù)習(xí)課本以前所學(xué)內(nèi)容,瀏覽上課講解的相關(guān)內(nèi)容。2、實驗時間安排:準(zhǔn)備實驗方案,上課時上機(jī)編程,課余完成整個設(shè)計并完成實驗報告。3、實驗具體要求:以一張假想的學(xué)生期中成績表為實驗對象,編制一個小型應(yīng)用程序,可以考慮實現(xiàn)以下功能:(1)成績修改;(2)成績查詢;(3)成績統(tǒng)計;(4)成績輸入。也可以實現(xiàn)其他自定義的功能。界面采用簡易菜單形式,可以分級顯示。實驗需要進(jìn)行以下步驟:需求分析、程序設(shè)計、程序調(diào)試、程序運行,并對程序運行效果進(jìn)行分析,提出改進(jìn)方案。初步鍛煉學(xué)生的程序設(shè)計能力、程序調(diào)試能力、對實驗結(jié)果進(jìn)行綜合分析的能力。4、實驗成績評價標(biāo)準(zhǔn):參見成績評定表。三、成績評定表(教師填寫)評分欄目評分成績程序?qū)崿F(xiàn)的功能是否達(dá)到要求(對應(yīng)內(nèi)容第1、2點,參考第3、4點)程序代碼是否合理(對應(yīng)內(nèi)容第3點)程序運行結(jié)果描述是否清晰(對應(yīng)內(nèi)容第4點)評價是否合理,有無提出好的改進(jìn)方案(對應(yīng)內(nèi)容第5點)實驗報告的撰寫形式是否規(guī)范,內(nèi)容是否正確(對應(yīng)全部內(nèi)容)總評成績:四、實驗報告內(nèi)容(參見樣本,請另附頁)實驗報告必須包含以下內(nèi)容:1、對你設(shè)計的程序功能進(jìn)行的較詳細(xì)描述。2、畫出程序測試用的學(xué)生期中成績表(包含:表頭、若干行包含學(xué)生成績等信息的數(shù)據(jù)行)。3、給出程序清單(包含結(jié)構(gòu)體的聲明與定義、所有的函數(shù)聲明、所有的全局變量、所有的函數(shù)定義、必要的注釋。注:如果程序過長,可以不用給出所有的函數(shù)定義,只給出主要的函數(shù)定義)。4、運行結(jié)果(寫出運行時的主界面、各模塊的實現(xiàn)界面等,不作具體要求,但要求能清晰地體現(xiàn)出程序的功能)。5、對你的設(shè)計作一個評價(可以包含你所花的時間、精力,你遇到的困難及如何解決的,你的設(shè)計過程所遇到的其他事情;必須包含你對設(shè)計的客觀評價,以及提出的改進(jìn)方案)。

1、程序功能描述:(略)2、成績表樣表:學(xué)號姓名性別語文數(shù)學(xué)英語總分1001張三M7885501002李四M8979691003王五F8576871004錢六M6445701005趙七F9293943、程序清單:(紅色部分是和上一個程序的區(qū)別之處)#include<stdio.h>structstudent/*期中成績表的結(jié)構(gòu)聲明*/{ intnum; charname[20]; charsex; floatYuWen; floatShuXue; floatYingYu; floattotle;};#defineMAX_STU_NUMBER100/*宏定義最大學(xué)生數(shù)為100人*/structstudentStu[MAX_STU_NUMBER];/*一次性定義100個學(xué)生的存儲空間*/intSTU_NUMBER;/*存放學(xué)生數(shù)*/char*FileName="chengji.txt";/*成績存放的文件*//*所有的函數(shù)聲明:*/intSelectMainMenu();/*顯示并選擇主菜單。返回:被選擇的菜單項*/voidModify();/*成績修改模塊*/voidShow();/*成績查詢模塊*/voidStat();/*成績統(tǒng)計模塊*/voidAppend();/*成績輸入模塊*/voidStatAve(float*AveYuWen,float*AveShuXue,float*AveYingYu);/*統(tǒng)計平均分*/intFindStudent(intnum);/*根據(jù)學(xué)號查找某一學(xué)生*/voidSetAllTotle();/*計算所有學(xué)生總分*/voidSetTotle(intNo);/*計算第No個學(xué)生總分*/voidShowAllStudent();/*顯示所有成績*/voidShowTitle();/*顯示表頭信息*/voidShowStudent(intNo);/*顯示第No個的學(xué)生信息*/voidRead();/*打開文件,讀出成績。設(shè)置學(xué)生人數(shù)到STU_NUMBER*/voidWrite();/*將成績寫入文件*/voidmain(){ intisend=0;/*程序結(jié)束標(biāo)志量,0表示不結(jié)束,1表示結(jié)束*/ Read();/*打開文件,讀出成績。設(shè)置學(xué)生人數(shù)到STU_NUMBER*/ SetAllTotle();/*計算所有學(xué)生總分*/ while(1) { switch(SelectMainMenu())/*顯示并選擇主菜單*/ { case1:/*成績修改*/ Modify();/*調(diào)用成績修改函數(shù)*/ break; case2:/*成績查詢*/ Show();/*調(diào)用成績查詢函數(shù)*/ break; case3:/*成績統(tǒng)計*/ Stat();/*調(diào)用成績統(tǒng)計函數(shù)*/ break; case4:/*成績輸入*/ Append();/*成績輸入模塊*/ break; case5:/*退出系統(tǒng)*/ Write();/*退出前保存成績*/ printf("\n謝謝您的使用,再見!\n\n"); isend=1;/*設(shè)置程序結(jié)束標(biāo)志*/ break; } if(isend)break;/*程序結(jié)束*/ }}voidRead()/*打開文件,讀出成績。設(shè)置學(xué)生人數(shù)到STU_NUMBER*/{ FILE*fp;/*指向文件的指針*/ structstudent*p; fp=fopen(FileName,"r");/*以讀的方式打開文件*/ STU_NUMBER=0; if(fp==NULL)return;/*打開文件失敗*/ for(p=Stu;;p++,STU_NUMBER++)/*循環(huán)讀出數(shù)據(jù)*/ { if(fscanf(fp,"%d%s%c%f%f%f",&p->num,p->name,&p->sex,&p->YuWen,&p->ShuXue,&p->YingYu)==EOF) break; } fclose(fp);/*關(guān)閉文件*/}voidWrite()/*將成績寫入文件*/{ FILE*fp;/*指向文件的指針*/ structstudent*p; fp=fopen(FileName,"w");/*以寫的方式打開文件(會刪掉原來文件)*/ if(fp==NULL)return;/*打開文件失敗*/ for(p=Stu;p<Stu+STU_NUMBER;p++)/*循環(huán)讀出數(shù)據(jù)*/ { fprintf(fp,"%d%s%c%f%f%f\n",p->num,p->name,p->sex,p->YuWen,p->ShuXue,p->YingYu); } fclose(fp);/*關(guān)閉文件*/}intSelectMainMenu()/*顯示并選擇主菜單。返回:被選擇的菜單項*/{ intmenu_no=0; do /*顯示并選擇菜單*/ { printf("\n===============================\n"); printf("《高二(3)班期中成績管理程序》\n"); printf("作者:應(yīng)老師\n"); printf("===============================\n"); printf("主菜單:\n"); printf("1–成績修改\n"); printf("2–成績查詢\n"); printf("3–成績統(tǒng)計\n"); printf("4–成績輸入\n"); printf("5–退出系統(tǒng)\n"); printf("請選擇(1-5):"); scanf("%d",&menu_no); }while(menu_no<1&&menu_no>5); /*直到選擇出正確的序號*/ returnmenu_no;}voidModify()/*成績修改模塊*/{ intn,i; while(1) { printf("\n====成績修改====\n"); printf("請輸入學(xué)號(輸入0退出成績修改):"); scanf("%d",&n); if(n==0)break;/*退出成績修改模塊*/ if((i=FindStudent(n))>=0)/*表示找到學(xué)號為n的學(xué)生*/ { ShowTitle();/*顯示表頭信息*/ ShowStudent(i);/*顯示該學(xué)生信息*/ printf("請輸入成績(語文,數(shù)學(xué),英語):"); scanf("%f,%f,%f",&Stu[i].YuWen,&Stu[i].ShuXue,&Stu[i].YingYu); SetTotle(i);/*計算該學(xué)生總分*/ printf("----修改成功----\n"); } elseprintf("----找不到該學(xué)號----\n"); }}voidShow()/*成績查詢模塊*/{ intn,i; while(1) { printf("\n====成績查詢====\n"); printf("請輸入學(xué)號(輸入0退出成績查詢,輸入1查詢?nèi)浚?); scanf("%d",&n); if(n==0)break;/*退出成績查詢模塊*/ if(n==1)ShowAllStudent();/*顯示所有成績*/ elseif((i=FindStudent(n))>=0)/*找到學(xué)號為n的學(xué)生*/ { ShowTitle();/*顯示表頭信息*/ ShowStudent(i);/*顯示該學(xué)生信息*/ } elseprintf("----找不到該學(xué)號----\n"); }}voidStat()/*成績統(tǒng)計模塊*/{ floatAveYuWen,AveShuXue,AveYingYu; StatAve(&AveYuWen,&AveShuXue,&AveYingYu);/*統(tǒng)計三門課的班級平均分*/ printf("\n====成績統(tǒng)計====\n"); printf("學(xué)生人數(shù):%d\n",STU_NUMBER); printf("語文平均分:%6.2f\n",AveYuWen); printf("數(shù)學(xué)平均分:%6.2f\n",AveShuXue); printf("英語平均分:%6.2f\n",AveYingYu);}voidAppend()/*成績輸入模塊*/{ structstudent*p; do { p=Stu+STU_NUMBER; printf("==========成績輸入==========\n"); printf("輸入(學(xué)號姓名性別語文數(shù)學(xué)英語)(000000退出):"); scanf("%d%s%c%f%f%f",&p->num,p->name,&p->sex,&p->YuWen,&p->ShuXue,&p->YingYu); if(p->num==0)break; SetTotle(STU_NUMBER);/*求出總分*/ STU_NUMBER++; }while(1);}/*統(tǒng)計三門課的班級平均分,用指針參數(shù)返回*/voidStatAve(float*AveYuWen,float*AveShuXue,float*AveYingYu){ inti; floatsumYuWen=0,sumShuXue=0,sumYingYu=0; for(i=0;i<STU_NUMBER;i++) { sumYuWen+=Stu[i].YuWen; sumShuXue+=Stu[i].ShuXue; sumYingYu+=Stu[i].YingYu; } *AveYuWen=sumYuWen/STU_NUMBER; *AveShuXue=sumShuXue/STU_NUMBER; *AveYingYu=sumYingYu/STU_NUMBER;}/*根據(jù)學(xué)號查找某一學(xué)生。返回:-1沒找到,>=0該學(xué)生所在數(shù)組的下標(biāo)*/intFindStudent(intnum){ inti; for(i=0;i<STU_NUMBER;i++) if(Stu[i].num==num)break; if(i<STU_NUMBER)returni;/*找到*/ elseretu

溫馨提示

  • 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

提交評論