版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、機(jī)房管理系統(tǒng)(c語言)在vc+ 6.0 運(yùn)行學(xué)院:信息科學(xué)與工程專業(yè) 班級:電子信息工程2班姓名:張濤學(xué)號:20123684 2012年12月10日 目錄總體設(shè)計(jì)詳細(xì)設(shè)計(jì) 輸入函數(shù) 輸出函數(shù)刪除函數(shù)查找函數(shù)結(jié)論與心得體會調(diào)試報(bào)告附錄基本要求輸入功能:輸入若干名學(xué)生的學(xué)號、班級、姓名、開始上機(jī)時間和結(jié)束上機(jī)時間。 計(jì)算功能:計(jì)算每個學(xué)生的上機(jī)費(fèi)用(計(jì)算公式:上機(jī)費(fèi)用=(結(jié)束上機(jī)時間-開始上機(jī)時間)*收費(fèi)標(biāo)準(zhǔn),(以分鐘為單位) 修改功能:修改學(xué)生上機(jī)的個人檔案(如:增添或刪除) 查詢功能:按條件(班級、學(xué)好、姓名)查詢學(xué)生上機(jī)信息,并能顯示查詢學(xué)生的相應(yīng)全部檔案??傮w設(shè)計(jì)開始輸入刪除退出輸出查找圖
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:開始輸入數(shù)據(jù)打開文件重新寫入文件關(guān)閉文件開始打開文件讀取數(shù)據(jù)選擇輸出輸出數(shù)據(jù)關(guān)閉文件 圖2 圖3輸入函數(shù)與輸出函數(shù)都用到文件的讀寫并且我定義了兩個文件,一個存儲結(jié)構(gòu)體數(shù)組的內(nèi)容,另一個存儲數(shù)組的個數(shù)。在調(diào)用輸入函數(shù)時,每次只能輸入一個學(xué)生的信息,每次輸入之前,先打開文件,讀出數(shù)據(jù),然后重新讀入數(shù)據(jù),并關(guān)閉文件。簡要流程
3、圖如圖2所示。 void scan(int *p)int i;FILE *fp;FILE *fpp;for (i=*p;i*p+1;i+)printf(請輸入信息!n); printf(學(xué)號(6位以下): ); scanf(%s,sti.num);printf(姓名(四位以下):);。 圖4輸出時,通過for循環(huán)把數(shù)據(jù)讀出并輸出void print(struct stu st,int *q) int i; float j; FILE *fp;fp=fopen(c:stu_list.txt,r);/打開文件printf(序號 學(xué)號 圖5 班級 姓名 上機(jī)時間(時 分) 下機(jī)時間(時 分) 費(fèi)用n
4、);for(i=0;i*q;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%3d%3d,sti.hour2 ,sti.min2); j=sti.hour2 -sti.hour1+(sti.min2 -sti.min1)/60.0) ; printf( %4.2f 元n,j);. 圖6刪除函數(shù)采用覆蓋的方法來實(shí)現(xiàn)目的。輸入所要刪除的信息后,
5、從文件中讀取數(shù)據(jù),并找到它,用后面的將其覆蓋,總數(shù)量減少一個,這樣以后讀取數(shù)據(jù)時,就沒有該數(shù)據(jù)了.。但實(shí)際上文件中任由原來個數(shù)個數(shù)據(jù),只是不讓它讀出來而已,如圖7。圖8為簡單流程圖, 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;。圖7查找函數(shù)也就簡單多了,輸入所要查找的信息后,從文件中讀取數(shù)據(jù),并找到它,然后將其輸出,簡單代碼如下 switch(a)/選擇查找方
6、式 case 1: printf(學(xué)號:); scanf(%s,b); for(i=0;i*p;i+) if(strcmp(b,sti.num)=0) printf( 學(xué)號 班級 姓名 上機(jī)時間(時 分) 下機(jī)時間(時 分) 費(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) ;. 圖
7、9圖8開始打開文件讀取數(shù)據(jù)選擇刪除輸入要刪除的數(shù)據(jù)關(guān)閉文件查找要刪除數(shù)據(jù)刪除數(shù)據(jù)重新寫入文件開始打開文件讀取數(shù)據(jù)選擇查找輸入要查找的條件及內(nèi)容關(guān)閉文件查找要找的數(shù)據(jù)輸出數(shù)據(jù) 圖10結(jié)論與心得體會 通過這次為數(shù)不多的幾天計(jì)算機(jī)實(shí)踐學(xué)習(xí),加上我們這個學(xué)期的c語言課程,我們了解了一些關(guān)于c語言的知識,理解鞏固了我們c語言的理論知識,著對我們將來到社會工作將會有莫大的幫助。同時它讓我知道,只要你努力,任何東西都不會太難。 學(xué)習(xí)c語言不能停留在學(xué)習(xí)它的語法規(guī)則,而是利用學(xué)到的知識編寫c語言程序,解決實(shí)際問題。即把c語言作為工具,描述解決實(shí)際問題的步驟,由計(jì)算機(jī)幫助我們解題。只有通過上機(jī)才能檢驗(yàn)自己是否掌
8、握c語言、自己編寫的程序是否能夠正確地解題。通過上機(jī)實(shí)驗(yàn)來驗(yàn)證自己編制的程序是否正確,恐怕是大多數(shù)同學(xué)在完成老師作業(yè)時的心態(tài)。但是在程序設(shè)計(jì)領(lǐng)域里這是一定要克服的傳統(tǒng)的、錯誤的想法。因?yàn)樵谶@種思想支配下,可能你會想辦法去隱藏程序中的錯誤,而不是盡可能多地發(fā)現(xiàn)程序中存在的問題。自己編好程序上機(jī)調(diào)試運(yùn)行時,可能有很多你想不到的情況發(fā)生,通過解決這些問題,可以逐步提高自己對c語言的理解和程序開發(fā)能力。 不過,很多時候,我們都是眼高手低,看著書以為c語言很簡單,把那些代碼記住就沒有問題了??墒鞘聦?shí)上,當(dāng)計(jì)算機(jī)一次又一次地報(bào)錯時,我才知道我錯了。不親自上機(jī)是學(xué)不好c語言的。而且上機(jī)與看書時相互配合的。上
9、機(jī)出現(xiàn)錯誤,在書上找答案。這樣經(jīng)過反反復(fù)復(fù)地學(xué)習(xí),c語言才會掌握。就拿簡單的輸出輸入的格式符講,總是以為它沒有用了,因?yàn)樘唵味还?,可到后面時,忽然發(fā)現(xiàn)自己連對簡單的整型也不了解,更不用說進(jìn)行字符的輸入輸出了。比如說整型變量的字節(jié)數(shù),有效值。默認(rèn)的實(shí)型變量是什么,其字節(jié)數(shù),所以會有好多警告。雖然不影響運(yùn)行,但是知道存在問題,后來問老師才知道了,也算學(xué)到些東西。所以,在這次C語言實(shí)訓(xùn),不僅僅提高了我掌握和利用C語言進(jìn)行程設(shè)計(jì)的能力, 而且進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程設(shè)計(jì)的思想和方法。初步掌握了開發(fā)一個小型實(shí)用系統(tǒng)的基本方法。學(xué)會了調(diào)試一個較長程序的基本方法。學(xué)會了利用流程圖或N-S圖表示算法,不過
10、不是很規(guī)范。掌握了書寫程設(shè)計(jì)開發(fā)文檔的能力.為以后的實(shí)訓(xùn)打下堅(jiān)實(shí)的基礎(chǔ)。不過這也是在一次次報(bào)錯的調(diào)試中慢慢學(xué)的。 調(diào)試與編譯完成程序的編寫,決不意味著萬事大吉。你認(rèn)為萬無一失的程序,實(shí)際上機(jī)運(yùn)行時可能不斷出現(xiàn)麻煩。如編譯程序檢測出一大堆錯誤。有時程序本身不存在語法錯誤,也能夠順利運(yùn)行,但是運(yùn)行結(jié)果顯然是錯誤的。開發(fā)環(huán)境所提供的編譯系統(tǒng)無法發(fā)現(xiàn)這種程序邏輯錯誤,只能靠自己的上機(jī)經(jīng)驗(yàn)分析判斷錯誤所在。程序的調(diào)試是一個技巧性很強(qiáng)的工作,對于初學(xué)者來說,盡快掌握程序調(diào)試方法是非常重要的。有時候一個消耗你幾個小時時間的小小錯誤,調(diào)試高手一眼就看出錯誤所在。對于我來講,調(diào)試也蠻讓人頭疼的。尤其是現(xiàn)在所講的
11、這個程序。經(jīng)過了反反復(fù)復(fù)地修改,程序終于可以運(yùn)行了,可是結(jié)果卻完全出乎意料。所以調(diào)試程序也是很關(guān)鍵的一項(xiàng)。一開始,程序中的錯誤編譯時都可以發(fā)現(xiàn),還能耐心的去看看到底哪里出錯。記得一次鏈接時出錯,弄了幾次一直錯,可是到同學(xué)電腦就正常了,便把vc卸載了重新安裝,結(jié)果好了,后來才知道,運(yùn)行窗口沒有關(guān)閉。再后來遇到很多編譯時不能檢測到的錯誤,一開始采用猜測并且注釋部分的方法來檢查出錯地方,但效果不佳,經(jīng)常中止。后來想到暫停語句 system(“pause”); ,是程序運(yùn)行到該位置暫停,從而判斷錯誤在該處之前你還是之后。并將該方法與同學(xué)分享。 附錄:源程序清單#include#include#incl
12、udestruct stu char num9;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);/打開文件printf(序號 學(xué)號 班級 姓名 上機(jī)時間(時 分) 下機(jī)時間(時 分) 費(fèi)用n);for(i=0;i*q;i+) fread(&sti,sizeof(struct stu),1,fp);printf(%2d %6s
13、%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 *fpp;for (i=*p;i*p+1;i+) printf(請輸入信息!n); printf(學(xué)號(6位以下): ); scanf(%
14、s,sti.num); printf(姓名(四位以下):); scanf(%s,); printf(班級(四位以下):); scanf(%s,sti.clas); printf(上機(jī)時間 小時 :); scanf(%d,&sti.hour1); printf(上機(jī)時間 分鐘 :); scanf(%d,&sti.min1); printf(下機(jī)時間 小時 :); scanf(%d,&sti.hour2); printf(下機(jī)時間 分鐘 :); scanf(%d,&sti.min2);if(*p=0)if(fp=fopen(c:stu_list.txt,w)=NULL) print
15、f(cannot open file);elseelsefp=fopen(c:stu_list.txt,r+); for(i=0;i*p;i+) fread(&sti,sizeof(struct stu),1,fp);/寫入文件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)printf(cannot open file);return;if(fwrite(p,4,1,fpp)!=1)printf(file writ
16、e 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* 5:結(jié)束 *n);printf(t*n);printf(t輸入相應(yīng)數(shù)字選擇功能以回車結(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+)
17、 fread(&sti,sizeof(struct stu),1,fp); fclose(fp); printf(*n); printf(*請輸入相應(yīng)數(shù)字選擇查詢放條件*n); printf(* 1:學(xué)號 *2:姓名 *3:班級 *n); printf(*n); scanf(%d,&a); switch(a)/選擇查找方式 case 1: printf(學(xué)號:); scanf(%s,b); for(i=0;i*p;i+) if(strcmp(b,sti.num)=0) printf( 學(xué)號 班級 姓名 上機(jī)時間(時 分) 下機(jī)時間(時 分) 費(fèi)用n); printf( %6s %4s %8s,
18、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(沒有相關(guān)信息); ;break; case 2: printf(姓名:); scanf(%s,b); for(i=0;i*p;i+) if(strcmp(b,)=0) printf(
19、學(xué)號 班級 姓名 上機(jī)時間(時 分) 下機(jī)時間(時 分) 費(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(沒有相關(guān)信息); ;break; case 3: printf(班級:); scanf(%
20、s,b); for(i=0;i*p;i+) if(strcmp(b,sti.clas)=0) printf( 學(xué)號 班級 姓名 上機(jī)時間(時 分) 下機(jī)時間(時 分) 費(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=
21、1) printf(沒有相關(guān)信息); ;break; default :printf(沒有相關(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
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 19618:2025 EN Fine ceramics (advanced ceramics,advanced technical ceramics) - Measurement method for normal spectral emissivity using blackbody reference with an FTIR s
- 廣東水利電力職業(yè)技術(shù)學(xué)院《分子生物學(xué)(英文)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東石油化工學(xué)院《建筑工程概預(yù)算課程A》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025新北師大版英語七年級下單詞默寫表(英譯漢)
- 【名師伴你行】2020高考?xì)v史-二輪強(qiáng)化提能專訓(xùn):綜合檢測卷(含2013年模擬、調(diào)研試題-含解析)
- 《紅對勾》2022屆高考英語人教版新課標(biāo)一輪總復(fù)習(xí)-滾動測試28
- 【9語一?!?024年合肥市蜀山區(qū)中考一模語文試題
- 【高考總動員】2022屆高考語文一輪總復(fù)習(xí)-考點(diǎn)綜合練4
- 2025年七年級統(tǒng)編版語文寒假復(fù)習(xí) 專題07 寫作(考點(diǎn)剖析+對點(diǎn)訓(xùn)練)
- 天津市紅橋區(qū)2024-2025學(xué)年高三上學(xué)期期末英語試題詞匯清單(含答案)
- 柯橋區(qū)五年級上學(xué)期語文期末學(xué)業(yè)評價(jià)測試試卷
- 《人工智能基礎(chǔ)》課件-AI的前世今生:她從哪里來
- 中國礦業(yè)大學(xué)《自然辯證法》2022-2023學(xué)年期末試卷
- 北京市豐臺區(qū)2024屆高三下學(xué)期二模試題 數(shù)學(xué) 含解析
- TCWAN 0105-2024 攪拌摩擦焊接機(jī)器人系統(tǒng)技術(shù)條件
- 江蘇省期無錫市天一實(shí)驗(yàn)學(xué)校2023-2024學(xué)年英語七年級第二學(xué)期期末達(dá)標(biāo)檢測試題含答案
- 質(zhì)量保證措施
- 耕地占補(bǔ)平衡系統(tǒng)課件
- 2022年山東師范大學(xué)自考英語(二)練習(xí)題(附答案解析)
- 醫(yī)院工作流程圖較全
- NB/T 11431-2023土地整治煤矸石回填技術(shù)規(guī)范
評論
0/150
提交評論