C語(yǔ)言綜合實(shí)驗(yàn)報(bào)告機(jī)房管理系統(tǒng)_第1頁(yè)
C語(yǔ)言綜合實(shí)驗(yàn)報(bào)告機(jī)房管理系統(tǒng)_第2頁(yè)
C語(yǔ)言綜合實(shí)驗(yàn)報(bào)告機(jī)房管理系統(tǒng)_第3頁(yè)
C語(yǔ)言綜合實(shí)驗(yàn)報(bào)告機(jī)房管理系統(tǒng)_第4頁(yè)
C語(yǔ)言綜合實(shí)驗(yàn)報(bào)告機(jī)房管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上機(jī)房管理系統(tǒng)(c語(yǔ)言)在vc+ 6.0 運(yùn)行學(xué)院:信息科學(xué)與工程專(zhuān)業(yè) 班級(jí):電子信息工程2班姓名:張濤學(xué)號(hào): 2012年12月10日 目錄總體設(shè)計(jì)詳細(xì)設(shè)計(jì) 輸入函數(shù) 輸出函數(shù)刪除函數(shù)查找函數(shù)結(jié)論與心得體會(huì)調(diào)試報(bào)告附錄基本要求輸入功能:輸入若干名學(xué)生的學(xué)號(hào)、班級(jí)、姓名、開(kāi)始上機(jī)時(shí)間和結(jié)束上機(jī)時(shí)間。 計(jì)算功能:計(jì)算每個(gè)學(xué)生的上機(jī)費(fèi)用(計(jì)算公式:上機(jī)費(fèi)用=(結(jié)束上機(jī)時(shí)間-開(kāi)始上機(jī)時(shí)間)*收費(fèi)標(biāo)準(zhǔn),(以分鐘為單位) 修改功能:修改學(xué)生上機(jī)的個(gè)人檔案(如:增添或刪除) 查詢(xún)功能:按條件(班級(jí)、學(xué)好、姓名)查詢(xún)學(xué)生上機(jī)信息,并能顯示查詢(xún)學(xué)生的相應(yīng)全部檔案。總體設(shè)計(jì)開(kāi)始輸入刪除退出

2、輸出查找圖1主函數(shù)采用switch選擇結(jié)構(gòu)case 1:scan(p);break;/調(diào)用輸入函數(shù)case 2:print(st,p);break/;調(diào)用輸出函數(shù)case 3:del(p);break;/調(diào)用刪除函數(shù)case 4:search(p);brea/k;調(diào)用查找函數(shù)case 5:開(kāi)始輸入數(shù)據(jù)打開(kāi)文件重新寫(xiě)入文件關(guān)閉文件開(kāi)始打開(kāi)文件讀取數(shù)據(jù)選擇輸出輸出數(shù)據(jù)關(guān)閉文件 圖2 圖3輸入函數(shù)與輸出函數(shù)都用到文件的讀寫(xiě)并且我定義了兩個(gè)文件,一個(gè)存儲(chǔ)結(jié)構(gòu)體數(shù)組的內(nèi)容,另一個(gè)存儲(chǔ)數(shù)組的個(gè)數(shù)。在調(diào)用輸入函數(shù)時(shí),每次只能輸入一個(gè)學(xué)生的信息,每次輸入之前,先打開(kāi)文件,讀出數(shù)據(jù),然后重新讀入數(shù)據(jù),并關(guān)閉文件

3、。簡(jiǎn)要流程圖如圖2所示。 void scan(int *p)int i;FILE *fp;FILE *fpp;for (i=*p;i<*p+1;i+)printf("請(qǐng)輸入信息!n"); printf("學(xué)號(hào)(6位以下): "); scanf("%s",sti.num);printf("姓名(四位以下):");。 圖4輸出時(shí),通過(guò)for循環(huán)把數(shù)據(jù)讀出并輸出void print(struct stu st,int *q) int i; float j; FILE *fp;fp=fopen("c:stu

4、_list.txt","r");/打開(kāi)文件printf("序號(hào) 學(xué)號(hào) 圖5 班級(jí) 姓名 上機(jī)時(shí)間(時(shí) 分) 下機(jī)時(shí)間(時(shí) 分) 費(fèi)用n");for(i=0;i<*q;i+)/開(kāi)始循環(huán)輸出 fread(&sti,sizeof(struct stu),1,fp); printf("%2d %6s %4s %8s",i+1,sti.num ,sti.clas, );.printf("t %3d%3d ",sti.hour1,sti.min1 ); printf(" t%3

5、d%3d",sti.hour2 ,sti.min2); j=sti.hour2 -sti.hour1+(sti.min2 -sti.min1)/60.0) ; printf(" %4.2f 元n",j);. 圖6刪除函數(shù)采用覆蓋的方法來(lái)實(shí)現(xiàn)目的。輸入所要?jiǎng)h除的信息后,從文件中讀取數(shù)據(jù),并找到它,用后面的將其覆蓋,總數(shù)量減少一個(gè),這樣以后讀取數(shù)據(jù)時(shí),就沒(méi)有該數(shù)據(jù)了.。但實(shí)際上文件中任由原來(lái)個(gè)數(shù)個(gè)數(shù)據(jù),只是不讓它讀出來(lái)而已,如圖7。圖8為簡(jiǎn)單流程圖, if(strcmp(a,)=0) for(j=i;j<*p-1;j+) strcpy(stj.n

6、um,stj+1.num);strcpy(stj.clas,stj+1.clas);stj.hour1=stj+1.hour1; stj.min1=stj+1.min1;。圖7查找函數(shù)也就簡(jiǎn)單多了,輸入所要查找的信息后,從文件中讀取數(shù)據(jù),并找到它,然后將其輸出,簡(jiǎn)單代碼如下 switch(a)/選擇查找方式 case 1: printf("學(xué)號(hào):"); scanf("%s",b); for(i=0;i<*p;i+) if(strcmp(b,sti.num)=0) printf(" 學(xué)號(hào) 班級(jí) 姓名 上機(jī)時(shí)間(時(shí) 分) 下機(jī)時(shí)間(時(shí) 分)

7、費(fèi)用n"); printf(" %6s %4s %8s",sti.num ,sti.clas, ); printf("t %3d%3d ",sti.hour1,sti.min1 ); printf(" t%3d%3d",sti.hour2 ,sti.min2); j=sti.hour2 -sti.hour1+(sti.min2 -sti.min1)/60.0) ;. 圖9圖8開(kāi)始打開(kāi)文件讀取數(shù)據(jù)選擇刪除輸入要?jiǎng)h除的數(shù)據(jù)關(guān)閉文件查找要?jiǎng)h除數(shù)據(jù)刪除數(shù)據(jù)重新寫(xiě)入文件開(kāi)始打開(kāi)文件讀取數(shù)據(jù)選擇查找輸入要查找的條件及內(nèi)容

8、關(guān)閉文件查找要找的數(shù)據(jù)輸出數(shù)據(jù) 圖10結(jié)論與心得體會(huì) 通過(guò)這次為數(shù)不多的幾天計(jì)算機(jī)實(shí)踐學(xué)習(xí),加上我們這個(gè)學(xué)期的c語(yǔ)言課程,我們了解了一些關(guān)于c語(yǔ)言的知識(shí),理解鞏固了我們c語(yǔ)言的理論知識(shí),著對(duì)我們將來(lái)到社會(huì)工作將會(huì)有莫大的幫助。同時(shí)它讓我知道,只要你努力,任何東西都不會(huì)太難。 學(xué)習(xí)c語(yǔ)言不能停留在學(xué)習(xí)它的語(yǔ)法規(guī)則,而是利用學(xué)到的知識(shí)編寫(xiě)c語(yǔ)言程序,解決實(shí)際問(wèn)題。即把c語(yǔ)言作為工具,描述解決實(shí)際問(wèn)題的步驟,由計(jì)算機(jī)幫助我們解題。只有通過(guò)上機(jī)才能檢驗(yàn)自己是否掌握c語(yǔ)言、自己編寫(xiě)的程序是否能夠正確地解題。通過(guò)上機(jī)實(shí)驗(yàn)來(lái)驗(yàn)證自己編制的程序是否正確,恐怕是大多數(shù)同學(xué)在完成老師作業(yè)時(shí)的心態(tài)。但是在程序設(shè)計(jì)領(lǐng)

9、域里這是一定要克服的傳統(tǒng)的、錯(cuò)誤的想法。因?yàn)樵谶@種思想支配下,可能你會(huì)想辦法去隱藏程序中的錯(cuò)誤,而不是盡可能多地發(fā)現(xiàn)程序中存在的問(wèn)題。自己編好程序上機(jī)調(diào)試運(yùn)行時(shí),可能有很多你想不到的情況發(fā)生,通過(guò)解決這些問(wèn)題,可以逐步提高自己對(duì)c語(yǔ)言的理解和程序開(kāi)發(fā)能力。 不過(guò),很多時(shí)候,我們都是眼高手低,看著書(shū)以為c語(yǔ)言很簡(jiǎn)單,把那些代碼記住就沒(méi)有問(wèn)題了??墒鞘聦?shí)上,當(dāng)計(jì)算機(jī)一次又一次地報(bào)錯(cuò)時(shí),我才知道我錯(cuò)了。不親自上機(jī)是學(xué)不好c語(yǔ)言的。而且上機(jī)與看書(shū)時(shí)相互配合的。上機(jī)出現(xiàn)錯(cuò)誤,在書(shū)上找答案。這樣經(jīng)過(guò)反反復(fù)復(fù)地學(xué)習(xí),c語(yǔ)言才會(huì)掌握。就拿簡(jiǎn)單的輸出輸入的格式符講,總是以為它沒(méi)有用了,因?yàn)樘?jiǎn)單而不管,可到后面

10、時(shí),忽然發(fā)現(xiàn)自己連對(duì)簡(jiǎn)單的整型也不了解,更不用說(shuō)進(jìn)行字符的輸入輸出了。比如說(shuō)整型變量的字節(jié)數(shù),有效值。默認(rèn)的實(shí)型變量是什么,其字節(jié)數(shù),所以會(huì)有好多警告。雖然不影響運(yùn)行,但是知道存在問(wèn)題,后來(lái)問(wèn)老師才知道了,也算學(xué)到些東西。所以,在這次C語(yǔ)言實(shí)訓(xùn),不僅僅提高了我掌握和利用C語(yǔ)言進(jìn)行程設(shè)計(jì)的能力, 而且進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程設(shè)計(jì)的思想和方法。初步掌握了開(kāi)發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法。學(xué)會(huì)了調(diào)試一個(gè)較長(zhǎng)程序的基本方法。學(xué)會(huì)了利用流程圖或N-S圖表示算法,不過(guò)不是很規(guī)范。掌握了書(shū)寫(xiě)程設(shè)計(jì)開(kāi)發(fā)文檔的能力.為以后的實(shí)訓(xùn)打下堅(jiān)實(shí)的基礎(chǔ)。不過(guò)這也是在一次次報(bào)錯(cuò)的調(diào)試中慢慢學(xué)的。 調(diào)試與編譯完成程序的編寫(xiě),決

11、不意味著萬(wàn)事大吉。你認(rèn)為萬(wàn)無(wú)一失的程序,實(shí)際上機(jī)運(yùn)行時(shí)可能不斷出現(xiàn)麻煩。如編譯程序檢測(cè)出一大堆錯(cuò)誤。有時(shí)程序本身不存在語(yǔ)法錯(cuò)誤,也能夠順利運(yùn)行,但是運(yùn)行結(jié)果顯然是錯(cuò)誤的。開(kāi)發(fā)環(huán)境所提供的編譯系統(tǒng)無(wú)法發(fā)現(xiàn)這種程序邏輯錯(cuò)誤,只能靠自己的上機(jī)經(jīng)驗(yàn)分析判斷錯(cuò)誤所在。程序的調(diào)試是一個(gè)技巧性很強(qiáng)的工作,對(duì)于初學(xué)者來(lái)說(shuō),盡快掌握程序調(diào)試方法是非常重要的。有時(shí)候一個(gè)消耗你幾個(gè)小時(shí)時(shí)間的小小錯(cuò)誤,調(diào)試高手一眼就看出錯(cuò)誤所在。對(duì)于我來(lái)講,調(diào)試也蠻讓人頭疼的。尤其是現(xiàn)在所講的這個(gè)程序。經(jīng)過(guò)了反反復(fù)復(fù)地修改,程序終于可以運(yùn)行了,可是結(jié)果卻完全出乎意料。所以調(diào)試程序也是很關(guān)鍵的一項(xiàng)。一開(kāi)始,程序中的錯(cuò)誤編譯時(shí)都可以發(fā)現(xiàn)

12、,還能耐心的去看看到底哪里出錯(cuò)。記得一次鏈接時(shí)出錯(cuò),弄了幾次一直錯(cuò),可是到同學(xué)電腦就正常了,便把vc卸載了重新安裝,結(jié)果好了,后來(lái)才知道,運(yùn)行窗口沒(méi)有關(guān)閉。再后來(lái)遇到很多編譯時(shí)不能檢測(cè)到的錯(cuò)誤,一開(kāi)始采用猜測(cè)并且注釋部分的方法來(lái)檢查出錯(cuò)地方,但效果不佳,經(jīng)常中止。后來(lái)想到暫停語(yǔ)句 system(“pause”); ,是程序運(yùn)行到該位置暫停,從而判斷錯(cuò)誤在該處之前你還是之后。并將該方法與同學(xué)分享。 附錄:源程序清單#include<stdio.h>#include<stdlib.h>#include<string.h>struct stu char num9;

13、char clas9;char name9;int hour1;int min1;int hour2;int min2;st99;/定義結(jié)構(gòu)體數(shù)組void print(struct stu st,int *q)/輸出函數(shù)int i;float j;FILE *fp;fp=fopen("c:stu_list.txt","r");/打開(kāi)文件printf("序號(hào) 學(xué)號(hào) 班級(jí) 姓名 上機(jī)時(shí)間(時(shí) 分) 下機(jī)時(shí)間(時(shí) 分) 費(fèi)用n");for(i=0;i<*q;i+) fread(&sti,sizeof(struct stu),1

14、,fp);printf("%2d %6s %4s %8s",i+1,sti.num ,sti.clas, );printf("t %3d%3d ",sti.hour1,sti.min1 );printf(" t%3d%3d",sti.hour2 ,sti.min2);j=sti.hour2 -sti.hour1+(sti.min2 -sti.min1)/60.0) ;printf(" %4.2f 元n",j); void scan(int *p)/輸入函數(shù) int i;FILE *fp;FILE *

15、fpp;for (i=*p;i<*p+1;i+) printf("請(qǐng)輸入信息!n"); printf("學(xué)號(hào)(6位以下): "); scanf("%s",sti.num); printf("姓名(四位以下):"); scanf("%s",); printf("班級(jí)(四位以下):"); scanf("%s",sti.clas); printf("上機(jī)時(shí)間 小時(shí) :"); scanf("%d",&a

16、mp;sti.hour1); printf("上機(jī)時(shí)間 分鐘 :"); scanf("%d",&sti.min1); printf("下機(jī)時(shí)間 小時(shí) :"); scanf("%d",&sti.hour2); printf("下機(jī)時(shí)間 分鐘 :"); scanf("%d",&sti.min2);if(*p=0)if(fp=fopen("c:stu_list.txt","w")=NULL) printf("

17、cannot open file");elseelsefp=fopen("c:stu_list.txt","r+"); for(i=0;i<*p;i+) fread(&sti,sizeof(struct stu),1,fp);/寫(xiě)入文件for(i=0;i<*p+1;i+)if(fwrite(&sti,sizeof(struct stu),1,fp)!=1)fclose(fp);*p=*p+1;if(fpp=fopen("c:stu_num.txt","w")=NULL)prin

18、tf("cannot open file");return;if(fwrite(p,4,1,fpp)!=1)printf("file write error");fclose(fpp); void list()/界面 printf("t*n");printf("t* 1:輸入數(shù)據(jù) *n");printf("t* 2:計(jì)算數(shù)據(jù) *n");printf("t* 3:刪除數(shù)據(jù) *n");printf("t* 4:查找數(shù)據(jù) *n");printf("t*

19、 5:結(jié)束 *n");printf("t*n");printf("t輸入相應(yīng)數(shù)字選擇功能以回車(chē)結(jié)束n"); void search(int *p)/查找函數(shù) int a,i,c=1; float j; char b9; FILE *fp; fp=fopen("c:stu_list.txt","r"); for(i=0;i<*p;i+) fread(&sti,sizeof(struct stu),1,fp); fclose(fp); printf("*n"); printf

20、("*請(qǐng)輸入相應(yīng)數(shù)字選擇查詢(xún)放條件*n"); printf("* 1:學(xué)號(hào) *2:姓名 *3:班級(jí) *n"); printf("*n"); scanf("%d",&a); switch(a)/選擇查找方式 case 1: printf("學(xué)號(hào):"); scanf("%s",b); for(i=0;i<*p;i+) if(strcmp(b,sti.num)=0) printf(" 學(xué)號(hào) 班級(jí) 姓名 上機(jī)時(shí)間(時(shí) 分) 下機(jī)時(shí)間(時(shí) 分) 費(fèi)用n"

21、;); printf(" %6s %4s %8s",sti.num ,sti.clas, ); printf("t %3d%3d ",sti.hour1,sti.min1 ); printf(" t%3d%3d",sti.hour2 ,sti.min2); j=sti.hour2 -sti.hour1+(sti.min2 -sti.min1)/60.0) ; printf(" %4.2f 元n",j); c=0; if(c=1) printf("沒(méi)有相關(guān)信息"); ;break;

22、 case 2: printf("姓名:"); scanf("%s",b); for(i=0;i<*p;i+) if(strcmp(b,)=0) printf(" 學(xué)號(hào) 班級(jí) 姓名 上機(jī)時(shí)間(時(shí) 分) 下機(jī)時(shí)間(時(shí) 分) 費(fèi)用n"); printf(" %6s %4s %8s",sti.num ,sti.clas, ); printf("t %3d%3d ",sti.hour1,sti.min1 ); printf(" t%3d%3d",

23、sti.hour2 ,sti.min2); j=sti.hour2 -sti.hour1+(sti.min2 -sti.min1)/60.0) ; printf(" %4.2f 元n",j); c=0; if(c=1) printf("沒(méi)有相關(guān)信息"); ;break; case 3: printf("班級(jí):"); scanf("%s",b); for(i=0;i<*p;i+) if(strcmp(b,sti.clas)=0) printf(" 學(xué)號(hào) 班級(jí) 姓名 上機(jī)時(shí)間(時(shí) 分) 下機(jī)時(shí)間(時(shí) 分

24、) 費(fèi)用n"); printf(" %6s %4s %8s",sti.num ,sti.clas, ); printf("t %3d%3d ",sti.hour1,sti.min1 ); printf(" t%3d%3d",sti.hour2 ,sti.min2); j=sti.hour2 -sti.hour1+(sti.min2 -sti.min1)/60.0) ; printf(" %4.2f 元n",j); c=0; if(c=1) printf("沒(méi)有相關(guān)信息"

25、); ;break; default :printf("沒(méi)有相關(guān)信息"); void del(int *p)/刪除函數(shù) int i,j; char a9; FILE *fp; FILE *fpp; fp=fopen("c:stu_list.txt","r+"); for(i=0;i<*p;i+) fread(&sti,sizeof(struct stu),1,fp); printf("輸入刪除的姓名:"); scanf("%s",a); for(i=0;i<*p;i+) if(strcmp(a,)=0) for(j=i;j<*p-1;j+); strcpy(stj.num,stj+1.num);strcpy(stj.clas,stj+1.clas);stj.hour1=stj+1.hour1; stj.min1=stj+1.min1; stj.hour2=stj+1.hour2; stj.min2=stj+1.min2; strcpy(,stj+1.name); *p=*p-1; for(i=0;i&l

溫馨提示

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

評(píng)論

0/150

提交評(píng)論