




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、*實(shí)踐教學(xué)*xx理工大學(xué)計(jì)算機(jī)與通信學(xué)院2013年春季學(xué)期 C程序設(shè)計(jì) 課程設(shè)計(jì)題 目:實(shí)驗(yàn)設(shè)備管理系統(tǒng)專(zhuān)業(yè)班級(jí):通信4班 姓 名:學(xué) 號(hào):指導(dǎo)教師:成 績(jī):目錄目錄1中文摘要21.課程設(shè)計(jì)目的32.程序設(shè)計(jì)思路33.功能模塊圖44.主函數(shù)模塊流程45.詳細(xì)設(shè)計(jì)56.程序運(yùn)行結(jié)果117.總結(jié)158.致謝199.附錄20實(shí)驗(yàn)設(shè)備管理系統(tǒng)摘要實(shí)驗(yàn)室設(shè)備管理系統(tǒng)是典型的設(shè)備信息管理系統(tǒng),要求能為學(xué)校實(shí)驗(yàn)室管理提供信息化動(dòng)態(tài)化的管理,方便實(shí)驗(yàn)室設(shè)備管理工作,提高設(shè)備管理質(zhì)量和使用效率。而且系統(tǒng)應(yīng)符合設(shè)備管理的有關(guān)規(guī)定,包括新設(shè)備的申請(qǐng),購(gòu)買(mǎi)確認(rèn),新設(shè)備信息錄入,舊設(shè)備維修和報(bào)廢及用戶(hù)管理等。能滿(mǎn)足日常
2、工作的基本需要,并達(dá)到操作過(guò)程中的直觀(guān),方便,實(shí)用,安全等有關(guān)要求。實(shí)驗(yàn)室設(shè)備管理系統(tǒng)是一個(gè)典型的信息管理系統(tǒng),采用面向?qū)ο蟮姆治龇椒?給出系統(tǒng)的基本結(jié)構(gòu)設(shè)計(jì)特色設(shè)計(jì)模型及實(shí)現(xiàn)途徑,并且對(duì)系統(tǒng)的開(kāi)發(fā)技術(shù)進(jìn)行研究本系統(tǒng)是一個(gè)為適應(yīng)對(duì)學(xué)校實(shí)驗(yàn)室設(shè)備管理的迫切需求而設(shè)計(jì)開(kāi)發(fā)的軟件系統(tǒng)。關(guān)鍵詞:實(shí)驗(yàn)室設(shè)備、管理系統(tǒng)、結(jié)構(gòu)體、文件、數(shù)組、函數(shù)1.題目要求實(shí)驗(yàn)設(shè)備信息包括:設(shè)備編號(hào),設(shè)備種類(lèi)(如:微機(jī)、打印機(jī)、掃描儀等等),設(shè)備名稱(chēng),設(shè)備價(jià)格,設(shè)備購(gòu)入日期,是否報(bào)廢,報(bào)廢日期等。2.需求分析實(shí)驗(yàn)室設(shè)備信息用文件存儲(chǔ),提供文件的輸入輸出操作;要能夠完成設(shè)備的錄入和修改,需要提供設(shè)備添加和修改操作;實(shí)現(xiàn)對(duì)設(shè)備
3、進(jìn)行分類(lèi)統(tǒng)計(jì),需要提供排序操作;實(shí)現(xiàn)對(duì)設(shè)備查詢(xún)需要提供查找操作,設(shè)備的查詢(xún)可根據(jù)設(shè)備編號(hào)設(shè)備種類(lèi)設(shè)備購(gòu)入日期正常設(shè)備(未報(bào)廢的)等多種方式查詢(xún);另外還要根據(jù)鍵盤(pán)式選擇菜單以實(shí)現(xiàn)功能選擇。整個(gè)系統(tǒng)可設(shè)計(jì)為實(shí)驗(yàn)設(shè)備信息輸入模塊實(shí)驗(yàn)設(shè)備信息修改模塊實(shí)驗(yàn)設(shè)備分類(lèi)統(tǒng)計(jì)模塊實(shí)驗(yàn)設(shè)備查詢(xún)模塊和實(shí)驗(yàn)設(shè)備報(bào)廢信息模塊。建立實(shí)驗(yàn)設(shè)備信息結(jié)構(gòu)體,結(jié)構(gòu)體成員包括設(shè)備編號(hào),設(shè)備種類(lèi),設(shè)備名稱(chēng),設(shè)備價(jià)格,設(shè)備購(gòu)入日期,是否報(bào)廢,報(bào)廢日期。3. 功能模塊圖主要功能:錄入設(shè)備信息、修改設(shè)備信息、查詢(xún)?cè)O(shè)備信息、按設(shè)備編號(hào)查詢(xún)、按設(shè)備名稱(chēng)查詢(xún)、對(duì)設(shè)備按種類(lèi)進(jìn)行分類(lèi)統(tǒng)計(jì)、報(bào)廢設(shè)備登記、報(bào)廢設(shè)備統(tǒng)計(jì)。實(shí)驗(yàn)報(bào)廢設(shè)備信息模塊實(shí)驗(yàn)設(shè)備信息
4、輸入模塊實(shí)驗(yàn)設(shè)備信息修改模塊實(shí)驗(yàn)設(shè)備信息查詢(xún)模塊實(shí)驗(yàn)設(shè)備分類(lèi)統(tǒng)計(jì)模塊退出實(shí)驗(yàn)設(shè)備管理系統(tǒng)圖1 實(shí)驗(yàn)室設(shè)備管理系統(tǒng)設(shè)計(jì)4.主函數(shù)模塊流程 退出系統(tǒng)開(kāi)始N密碼讀取數(shù)據(jù)Y主菜單 報(bào) 廢 統(tǒng) 計(jì)報(bào) 廢 統(tǒng) 計(jì)查 詢(xún) 信 息報(bào) 廢 登 記錄 入 信 息修改信息修 改 信 息 查 詢(xún) 信 息分 類(lèi) 統(tǒng) 計(jì)選擇退 出 系 統(tǒng)查 詢(xún) 信 息報(bào) 廢 查 詢(xún) 報(bào) 廢 統(tǒng) 計(jì) 報(bào) 廢 登 記分 類(lèi) 統(tǒng) 計(jì)修 改 信 息錄 入 信 息圖2實(shí)驗(yàn)室設(shè)備管理系統(tǒng)主函數(shù)模塊流程圖5.詳細(xì)設(shè)計(jì)5.1聲明函數(shù)int menu();/菜單void lr();/錄入信息void xg();/修改void cx();/查詢(xún)void c
5、x_sbh();/設(shè)備號(hào)查詢(xún)void cx_mc();/設(shè)備名稱(chēng)查詢(xún)void tj();/統(tǒng)計(jì)void bf();/報(bào)廢信息void bf_dj();/報(bào)廢登記void bf_tj();/報(bào)廢統(tǒng)計(jì)void choose(); 以上為本程序的函數(shù)聲明5.2菜單函數(shù)菜單函數(shù)用void choose()聲明,其中應(yīng)用了do.while(choice!=0); 循環(huán),在循環(huán)過(guò)程使用了 switch (choice)選擇。當(dāng)輸入0時(shí),系統(tǒng)跳入到“提示:你已經(jīng)退出系統(tǒng)再見(jiàn)!”的輸出。break終止接下來(lái)的步驟。當(dāng)輸入1時(shí),系統(tǒng)跳入到錄入的子函數(shù)中,break終止接下來(lái)的步驟。當(dāng)輸入2時(shí),系統(tǒng)跳入到修改的子
6、函數(shù)中,break終止接下來(lái)的步驟。當(dāng)輸入3時(shí),系統(tǒng)跳入到統(tǒng)計(jì)的子函數(shù)中,break終止接下來(lái)的步驟。當(dāng)輸入4時(shí),系統(tǒng)跳入到報(bào)廢的子函數(shù)中,break終止接下來(lái)的步驟。當(dāng)輸入5時(shí),系統(tǒng)輸出“提示:輸入錯(cuò)誤!n”,break終止接下來(lái)的步驟。其中的數(shù)據(jù)輸入為int類(lèi)型。void choose() int choice; choice=1; choice=menu(choice); do switch (choice) case 0: printf("n提示:你已經(jīng)退出系統(tǒng)ntt 再見(jiàn)!n"); break; case 1: lr(); break; case 2: xg();
7、 break; case 3: cx(); break; case 4: tj(); break; case 5: bf(); break; default: printf("提示:輸入錯(cuò)誤!n"); break; while(choice!=0); int menu(int choice) printf("nnn"); printf("ttt-n"); printf("ttt+ 實(shí)驗(yàn)設(shè)備管理系統(tǒng) |n"); printf("ttt-n"); printf("ttt+ 1-錄入設(shè)備信息
8、 |n"); printf("ttt+ 2-修改設(shè)備信息 |n"); printf("ttt+ 3-查詢(xún)?cè)O(shè)備信息 |n"); printf("ttt+ 4-統(tǒng)計(jì)設(shè)備信息 |n"); printf("ttt+ 5-報(bào)廢設(shè)備信息 |n"); printf("ttt+ 0-*-EXIT-* |n"); printf("ttt+*·*·*·*·*·*·*·*·*·*·|n")
9、; printf("ttt-n");printf("請(qǐng)輸入你要操作的序號(hào):"); scanf("%d", &choice); return choice; 錯(cuò)誤!未找到目錄項(xiàng)。5.3錄入函數(shù)錄入函數(shù)用void lr()聲明,用到while(1) 循環(huán),其中數(shù)字1是“true”的含義。如果IF判斷成立,則將進(jìn)行錄入。分別錄入設(shè)備ID號(hào)、設(shè)備名稱(chēng)、設(shè)備種類(lèi)、報(bào)廢日期、設(shè)備是否報(bào)廢,1.沒(méi)報(bào)廢,0.報(bào)廢、購(gòu)買(mǎi)時(shí)間和設(shè)備價(jià)格等內(nèi)容。當(dāng)其中的一條記錄錄入完成后,系統(tǒng)會(huì)提示是否已經(jīng)完成一條記錄的添加。(注:其中的“t+;”不能丟,其在循環(huán)
10、中起累加的作用)其中的數(shù)據(jù)輸入為char類(lèi)型。錄入函數(shù)還應(yīng)用了結(jié)構(gòu)體數(shù)組的知識(shí)如下:typedef struct shebei char id10; char name15; char kind15; char over15; int yesno; char time10; char price10; shebei;shebei sb200;其中的shebei sb200要求最多錄入200條信息。分別錄入設(shè)備ID號(hào)、設(shè)備名稱(chēng)、設(shè)備種類(lèi)、報(bào)廢日期、設(shè)備是否報(bào)廢,1.沒(méi)報(bào)廢,0.報(bào)廢、購(gòu)買(mǎi)時(shí)間和設(shè)備價(jià)格等結(jié)構(gòu)體數(shù)組。其中的數(shù)據(jù)輸入為char類(lèi)型(除int yesno外)。void lr()/錄入信
11、息while(1) if(strcmp(sbt.id,"0")=0) main(); printf("n請(qǐng)輸入設(shè)備名稱(chēng):"); scanf("%s",); ; 5.4修改函數(shù)修改函數(shù)用void xg()聲明,函數(shù)用了if.else的選擇和switch的選擇,其中if .else的選擇包含在while循環(huán)中,并用了break的跳轉(zhuǎn)語(yǔ)句。if.else語(yǔ)句更好的避免了輸入進(jìn)入死循環(huán)。如:if(x=0) break; else printf("繼續(xù)操作請(qǐng)輸入1n"); scanf("%d&quo
12、t;,&x); 修改函數(shù)中還使用了strcmp判斷函數(shù),當(dāng)strcmp判斷函數(shù)判斷成立時(shí),給予使用者符合要求的提示,使用者然后進(jìn)行操作。如:strcmp(sbt.id,find)=0 。在Switch的使用中,其實(shí)現(xiàn)了返回主菜單的操作。如:switch(x) case 0:choose();break; case 1:xg();break; default:printf("輸入無(wú)效,自動(dòng)返回主菜單n");choose();break; 其中包含的數(shù)據(jù)類(lèi)型有int類(lèi)型和 char類(lèi)型兩種。如:int x , char find20.void xg()/修改 char
13、find20; int x; t=0; printf("請(qǐng)輸入要修改的設(shè)備ID號(hào):"); scanf("%s",find); while(1) if(strcmp(sbt.id,find)=0) /如果找到的話(huà)返回的是符合要求 break; else t+; while(1) printf("確認(rèn)修改請(qǐng)輸入任意數(shù)字否則輸入0重新輸入設(shè)備原id:"); scanf("%d",&x); if(x=0) break; else printf("請(qǐng)輸入新設(shè)備號(hào)(原來(lái)是 %s ):",sbt.id
14、); scanf("%s",sbt.id); printf("n提示:該項(xiàng)記錄資料已經(jīng)成功修改!n"); printf("退回主菜單請(qǐng)輸入0n"); printf("繼續(xù)操作請(qǐng)輸入1n"); scanf("%d",&x); 5.5查詢(xún)函數(shù)查詢(xún)函數(shù)用void cx()聲明,使用do.while(choice!=0); 循環(huán),其中含有switch(choice)的選擇語(yǔ)句。當(dāng)選擇0時(shí),跳回menu函數(shù);當(dāng)選擇1時(shí),跳到設(shè)備號(hào)查詢(xún)函數(shù);void cx_sbh()do if(strcmp(sbt
15、.id,find)=0&&sbt.yesno=1) /1表示設(shè)備沒(méi)報(bào)廢 t+;else t+;while (t<100); if (choice=1) choose(); else cx();設(shè)備號(hào)查詢(xún)函數(shù)用void cx_sbh()聲明,使用do.while(choice!=0); 循環(huán),其中含有if .esle的選擇語(yǔ)句。其中包含的數(shù)據(jù)類(lèi)型有int類(lèi)型.如:int choice等。當(dāng)選擇2時(shí),跳到設(shè)備名稱(chēng)查詢(xún)函數(shù);void cx_mc()/設(shè)備名稱(chēng)查詢(xún) do if(strcmp(,ming)=0&&sbt.yesno=1) /1表示設(shè)備
16、沒(méi)報(bào)廢 else t+; while (t<100); if (choice=1) choose(); else cx(); 設(shè)備名稱(chēng)查詢(xún)函數(shù)用void cx_mc()聲明,使用do.while(choice!=0); 循環(huán),其中含有if esle的選擇語(yǔ)句。其中包含的數(shù)據(jù)類(lèi)型有int類(lèi)型.如:int choice等。否則輸出"輸入無(wú)效請(qǐng)重新輸入"。查詢(xún)函數(shù)包含的數(shù)據(jù)類(lèi)型有int類(lèi)型.如:int choice等。void cx()/查詢(xún) int choice; do switch(choice) case 0:menu();break; case 1:cx_sbh()
17、;break; case 2:cx_mc();break; default:printf("輸入無(wú)效請(qǐng)重新輸入n");cx(); break; while(choice!=0);5.5統(tǒng)計(jì)函數(shù)統(tǒng)計(jì)函數(shù)用void tj()聲明,在if的使用中,其實(shí)現(xiàn)了返回菜單的操作。如:printf("鍵入數(shù)字1返回主菜單n"); printf("鍵入數(shù)字任意鍵返回上層菜單n"); scanf("%d",&choice); if (choice=1) choose() ; 函數(shù)中還使用了strcmp判斷函數(shù),當(dāng)strcmp判
18、斷函數(shù)判斷成立時(shí),給予使用者符合要求的提示,使用者然后進(jìn)行操作。如:(strcmp(sbt.kind,tong)=0&&sbt.yesno=1。而dowhile 循環(huán)的使用保證了多次統(tǒng)計(jì)的使用。(注:其中的“t+;”不能丟,其在循環(huán)中起累加的作用)。統(tǒng)計(jì)函數(shù)包含的數(shù)據(jù)類(lèi)型有int類(lèi)型和char類(lèi)型.如:int choice和char tong 等。void tj()/統(tǒng)計(jì)int choice;char tong20;printf("n輸入你要統(tǒng)計(jì)的設(shè)備種類(lèi):"); scanf("%s",tong); do if(strcmp(sbt.ki
19、nd,tong)=0&&sbt.yesno=1) /1表示設(shè)備沒(méi)報(bào)廢 printf("設(shè)備號(hào)設(shè)備名稱(chēng)設(shè)備種類(lèi)報(bào)廢日期是否報(bào)廢購(gòu)買(mǎi)時(shí)間價(jià)格n");printf("n%-13s%-11s%-7s%-10s%-13d%-10s%-5sn",sbt.id,,sbt.kind,sbt.over,sbt.yesno,sbt.time,sbt.price); t+; else t+; while (t<100); printf("鍵入數(shù)字1返回主菜單n"); printf("鍵入數(shù)字任意鍵返回上層菜單
20、n"); scanf("%d",&choice); if (choice=1) choose() ; 5.6報(bào)廢函數(shù)查詢(xún)函數(shù)用void bf()聲明,使用do.while(choice!=0); 循環(huán),其中含有switch(choice)的選擇語(yǔ)句。當(dāng)選擇0時(shí),跳回menu函數(shù);當(dāng)選擇1時(shí),跳到報(bào)廢登記函數(shù);void bf_dj()/報(bào)廢登記 while(1) if(strcmp(sbt.id,find)=0) /如果找到的話(huà)返回的是符合要求 break; else t+; while(1) if(x=0) break; switch(x) case 0:
21、choose();break; case 1:bf();break; default:printf("輸入無(wú)效,自動(dòng)返回主菜單n");choose();break; 設(shè)備號(hào)查詢(xún)函數(shù)用void bf_dj()聲明,使用do。while(choice!=0); 循環(huán),其中含有if esle的選擇語(yǔ)句。其中包含的數(shù)據(jù)類(lèi)型有int類(lèi)型和char類(lèi)型.如:int choice和char choice類(lèi)型等。當(dāng)選擇2時(shí),跳到報(bào)廢統(tǒng)計(jì)函數(shù);void bf_tj()/報(bào)廢統(tǒng)計(jì) do t+; else t+;while (t<3); if (choice=1) choose(); 設(shè)備
22、名稱(chēng)查詢(xún)函數(shù)用void cx_mc()聲明,使用do.while(choice!=0); 循環(huán),其中含有if esle的選擇語(yǔ)句。其中包含的數(shù)據(jù)類(lèi)型有int類(lèi)型和char類(lèi)型.如:int choice和char find等。void bf() /報(bào)廢信息 int choice; do printf("ttt-n"); printf("ttt* 1-登記報(bào)廢信息 *n"); printf("ttt* 2-報(bào)廢設(shè)備統(tǒng)計(jì) *n"); printf("ttt* 0-退出 *n"); printf("ttt*
23、83;*·*·*·*·*·*·*·*·*·*·*|n"); scanf("%d",&choice); getchar(); switch(choice) case 0:menu();break; case 1:bf_dj();break; case 2:bf_tj();break; default:printf("輸入無(wú)效請(qǐng)重新輸入n");bf(); break; while(choice!=0);6.運(yùn)行結(jié)果6.1菜單界面此圖為截取的菜
24、單操作界面,先輸入密碼才會(huì)進(jìn)入界面當(dāng)輸入0時(shí),系統(tǒng)跳入到“提示:你已經(jīng)退出系統(tǒng)再見(jiàn)!”的輸出。當(dāng)輸入1時(shí),系統(tǒng)跳入到錄入的子函數(shù)中。當(dāng)輸入2時(shí),系統(tǒng)跳入到修改的子函數(shù)中。當(dāng)輸入3時(shí),系統(tǒng)跳入到查詢(xún)的子函數(shù)中。當(dāng)輸入4時(shí),系統(tǒng)跳入到統(tǒng)計(jì)的子函數(shù)中。當(dāng)輸入5時(shí),系統(tǒng)跳入到報(bào)廢的子函數(shù)中。其中的數(shù)據(jù)輸入為int類(lèi)型。請(qǐng)分別輸入數(shù)字1,2,3等,然后回車(chē)。圖3 菜單操作界面6.2錄入設(shè)備信息此為錄入設(shè)備信息界面,在菜單界面中選擇1進(jìn)入分別錄入設(shè)備ID號(hào)、設(shè)備名稱(chēng)、設(shè)備種類(lèi)、報(bào)廢日期、設(shè)備是否報(bào)廢,1.沒(méi)報(bào)廢,0.報(bào)廢、購(gòu)買(mǎi)時(shí)間和設(shè)備價(jià)格等結(jié)構(gòu)體數(shù)組。其中的數(shù)據(jù)輸入為char類(lèi)型(除int yesno外
25、)。請(qǐng)分別輸入數(shù)字1,2,3等,然后回車(chē)。輸入0則將返回主菜單。圖4 錄入設(shè)備信息界面6.3修改設(shè)備信息此為修改設(shè)備信息界面,在菜單界面中選擇2進(jìn)入分別修改設(shè)備ID號(hào)、設(shè)備名稱(chēng)、設(shè)備種類(lèi)、報(bào)廢日期、設(shè)備是否報(bào)廢,1.沒(méi)報(bào)廢,0.報(bào)廢、購(gòu)買(mǎi)時(shí)間和設(shè)備價(jià)格等結(jié)構(gòu)體數(shù)組。其中的數(shù)據(jù)輸入為char類(lèi)型(除int yesno外)。請(qǐng)分別輸入數(shù)字1,2,3等,然后回車(chē)。輸入0則將返回主菜單。圖5 修改設(shè)備信息6.4查詢(xún)?cè)O(shè)備信息此為查詢(xún)?cè)O(shè)備信息界面,在菜單界面中選擇3進(jìn)入,進(jìn)入后選擇不同的查詢(xún)方式選擇1,則將按設(shè)備號(hào)查找;選擇2,則將按設(shè)備名稱(chēng)查找;選擇0,則將退出。其中的數(shù)據(jù)輸入為int類(lèi)型。請(qǐng)分別輸入數(shù)
26、字1,2,3等,然后回車(chē)。圖6 查詢(xún)?cè)O(shè)備信息6.5統(tǒng)計(jì)設(shè)備信息此為統(tǒng)計(jì)設(shè)備信息界面,在菜單界面中選擇4進(jìn)入,進(jìn)入后選擇不同的統(tǒng)計(jì)方式選擇1,則將按設(shè)備號(hào)統(tǒng)計(jì);選擇2,則將按設(shè)備名稱(chēng)統(tǒng)計(jì);選擇0,則將退出。其中的數(shù)據(jù)輸入為int類(lèi)型。請(qǐng)分別輸入數(shù)字1,2,3等,然后回車(chē)。圖7 統(tǒng)計(jì)設(shè)備信息6.6報(bào)廢設(shè)備信息此為報(bào)廢設(shè)備信息界面,在菜單界面中選擇5進(jìn)入,進(jìn)入后選擇不同的查詢(xún)方式選擇1,則將按設(shè)備號(hào)查找;選擇2,則將按設(shè)備名稱(chēng)查找;選擇0,則將退出。其中的數(shù)據(jù)輸入為int類(lèi)型。請(qǐng)分別輸入數(shù)字1,2,3等,然后回車(chē)。圖8 報(bào)廢設(shè)備信息7總結(jié)在編程的過(guò)程中,很容易出現(xiàn)一個(gè)問(wèn)題,就時(shí)少大括號(hào)“”的問(wèn)題。這
27、是,error只有一個(gè),但是錯(cuò)誤的地方很多,且都在括號(hào)處。按照計(jì)算機(jī)所指出的錯(cuò)誤位置尋找是不容易找出錯(cuò)誤的。直到整個(gè)程序看了一遍后才會(huì)發(fā)現(xiàn)是一個(gè)大括號(hào)的問(wèn)題。通常少的是“”或著“”,錯(cuò)誤位置會(huì)出現(xiàn)在缺少括號(hào)位置之后的其他大括號(hào)出現(xiàn)的地方。只要這種情況發(fā)生后,往前找是否有大括號(hào)缺失就可以將問(wèn)題很快解決了。在幫同學(xué)修改程序的過(guò)程中,也遇到過(guò)一個(gè)問(wèn)題。在頭文件后定義了子函數(shù),可是之后忘了編寫(xiě)子函數(shù),在糾錯(cuò)時(shí),有的是不會(huì)發(fā)現(xiàn)錯(cuò)誤的,但是連接過(guò)程中就會(huì)報(bào)告出錯(cuò)。我覺(jué)得在以后的編程過(guò)程中,最好用什么函數(shù)寫(xiě)什么函數(shù),后者在寫(xiě)完一個(gè)子函數(shù)后再在頭文件底下聲明。C語(yǔ)言實(shí)習(xí)基本上由老師引導(dǎo),自己很多都靠自學(xué),不明
28、白的問(wèn)老師,自學(xué)能力得到了很大的培養(yǎng)。在實(shí)習(xí)過(guò)程中,我感覺(jué)到一點(diǎn),程序是不能一氣呵成的。至少一氣呵成的程序不會(huì)盡善盡美。程序編寫(xiě)要一步一步的完成。首先,對(duì)于要編的程序要有一個(gè)總體思路。要明確想要什么。只要把思路理清楚了,程序就好編寫(xiě)了。把程序分割成幾個(gè)塊,即多個(gè)函數(shù),一塊一塊的編寫(xiě)。然后將分散的函數(shù)用另外的函數(shù)連接起來(lái)或者用main函數(shù)連接。到這一步,程序也就初步編成了,之后便是調(diào)試,檢查錯(cuò)誤。最后我覺(jué)得還可以對(duì)于已經(jīng)編寫(xiě)好的程序進(jìn)行一些修改添加,使它更加人性化。優(yōu)化程序的階段是很重要的。參考文獻(xiàn)1. C/C+程序設(shè)計(jì),王連相等,中國(guó)科學(xué)技術(shù)出版社,20042. C語(yǔ)言程序設(shè)計(jì),譚浩強(qiáng),清華大
29、學(xué)出版社,19993. C程序設(shè)計(jì)題解與上機(jī)指導(dǎo),譚浩強(qiáng),清華大學(xué)出版社,19994. C語(yǔ)言實(shí)用程序薈萃,西安電子科技大學(xué)出版社,19935. C語(yǔ)言函數(shù)手冊(cè),機(jī)械工業(yè)出版社,19996. C語(yǔ)言的實(shí)際應(yīng)用,安徽科學(xué)技術(shù)出版社,20008.致謝在C語(yǔ)言的實(shí)習(xí)過(guò)程中,讓我鞏固了C語(yǔ)言的基礎(chǔ)知識(shí),以前從來(lái)沒(méi)有這樣編過(guò)完整的程序,實(shí)習(xí)讓我有這樣的一個(gè)機(jī)會(huì),自己獨(dú)立編寫(xiě)程序。我覺(jué)得自己說(shuō)學(xué)的東西不多,但是可以將它們運(yùn)用出來(lái)。在這次實(shí)習(xí)中,我開(kāi)始喜歡C語(yǔ)言。在這次實(shí)習(xí)中,李老師對(duì)我的幫助對(duì)我最難忘。題目本身是很簡(jiǎn)單的,在李聰老師的教學(xué)風(fēng)格影響下,我在編寫(xiě)完最初程序后,有自己添加了很多功能。程序可以更數(shù)
30、學(xué)方法如此緊密的結(jié)合。這是非常有意思的事情。李聰老師給過(guò)我很多發(fā)展的建議,因此,我要感謝他。最后,我還要感謝給我?guī)椭耐瑢W(xué),在一些程序問(wèn)題上,我和同學(xué)交流經(jīng)驗(yàn),學(xué)到了很多在書(shū)本上學(xué)不到的東西。我真誠(chéng)的感謝在這次實(shí)習(xí)中給予指導(dǎo)的李聰老師!附錄源文件(每個(gè)函數(shù)都要有功能說(shuō)明)#include"stdio.h"#include"string.h"#define null 0int t=0;int mmcsz=0;int mima;int menu();/菜單void lr();/錄入信息void xg();/修改void cx();/查詢(xún)void cx_sbh
31、();/設(shè)備號(hào)查詢(xún)void cx_mc();/設(shè)備名稱(chēng)查詢(xún)void tj();/統(tǒng)計(jì)void bf();/報(bào)廢信息void bf_dj();/報(bào)廢登記void bf_tj();/報(bào)廢統(tǒng)計(jì)void choose(); typedef struct shebei char id10; char name15; char kind15; char over15; int yesno; char time10; char price10; shebei;shebei sb200;void lr()/錄入信息while(1) printf("提示:輸入0則返回主菜單!n"); pri
32、ntf("n請(qǐng)你輸入設(shè)備ID號(hào):"); scanf("%s",sbt.id); if(strcmp(sbt.id,"0")=0) main(); printf("n請(qǐng)輸入設(shè)備名稱(chēng):"); scanf("%s",); printf("n請(qǐng)輸入設(shè)備種類(lèi):"); scanf("%s",sbt.kind); printf("n請(qǐng)輸入報(bào)廢日期:"); scanf("%s",sbt.over); printf(&
33、quot;n請(qǐng)輸入設(shè)備是否報(bào)廢,1、沒(méi)報(bào)廢,0、報(bào)廢:"); scanf("%d",&sbt.yesno); printf("n請(qǐng)輸入設(shè)備購(gòu)買(mǎi)時(shí)間:"); scanf("%s",sbt.time); printf("n請(qǐng)輸入設(shè)備價(jià)格:"); scanf("%s",sbt.price); printf("提示:已經(jīng)完成一條記錄的添加。n"); t+; void xg()/修改 char find20; int x; t=0; printf("請(qǐng)輸入要
34、修改的設(shè)備ID號(hào):"); scanf("%s",find); while(1) if(strcmp(sbt.id,find)=0) /如果找到的話(huà)返回的是符合要求 break; else t+; while(1) printf("確認(rèn)修改請(qǐng)輸入任意數(shù)字否則輸入0重新輸入設(shè)備原id:"); scanf("%d",&x); if(x=0) break; else printf("請(qǐng)輸入新設(shè)備號(hào)(原來(lái)是 %s ):",sbt.id); scanf("%s",sbt.id); prin
35、tf("請(qǐng)輸入新設(shè)備名稱(chēng)(原來(lái)是 %s ):",); scanf("%s",); printf("請(qǐng)輸入新設(shè)備設(shè)備種類(lèi)名稱(chēng)(原來(lái)是 %s ):",sbt.kind); scanf("%s",sbt.kind); printf("請(qǐng)輸入新設(shè)備報(bào)廢日期名稱(chēng)(原來(lái)是 %s ):",sbt.over); scanf("%s",sbt.over); printf("請(qǐng)輸入新設(shè)備是否報(bào)廢,1、沒(méi)報(bào)廢,0、報(bào)廢(原來(lái)是 %d):",sbt
36、.yesno); scanf("%d",&sbt.yesno); printf("請(qǐng)輸入新設(shè)備購(gòu)買(mǎi)時(shí)間(原來(lái)是 %s ):",sbt.time); scanf("%s",sbt.time); printf("請(qǐng)輸入新設(shè)備價(jià)格(原來(lái)是 %s ):",sbt.price); scanf("%s",sbt.price); printf("n提示:該項(xiàng)記錄資料已經(jīng)成功修改!n"); printf("退回主菜單請(qǐng)輸入0n"); printf("繼續(xù)
37、操作請(qǐng)輸入1n"); scanf("%d",&x); switch(x) case 0:choose();break; case 1:xg();break; default:printf("輸入無(wú)效,自動(dòng)返回主菜單n");choose();break; void cx()/查詢(xún) int choice; do printf("ttt-n"); printf("ttt* 1-按設(shè)備號(hào)查找 *n"); printf("ttt* 2-按設(shè)備名稱(chēng)查找 *n"); printf("
38、;ttt* 0-退出 *n"); printf("ttt*·*·*·*·*·*·*·*·*·*·*·*|n"); scanf("%d",&choice); getchar(); switch(choice) case 0:menu();break; case 1:cx_sbh();break; case 2:cx_mc();break; default:printf("輸入無(wú)效請(qǐng)重新輸入n");cx(); b
39、reak; while(choice!=0);void cx_sbh()/設(shè)備號(hào)查詢(xún)int choice;char find20;int t=0; printf("請(qǐng)輸入您要查詢(xún)的設(shè)備號(hào):");scanf ("%s",find);getchar();do if(strcmp(sbt.id,find)=0&&sbt.yesno=1) /1表示設(shè)備沒(méi)報(bào)廢 printf("設(shè)備號(hào)設(shè)備名稱(chēng)設(shè)備種類(lèi)報(bào)廢日期是否報(bào)廢購(gòu)買(mǎi)時(shí)間價(jià)格n"); printf("n%-13s%-11s%-7s%-10s%-13d%-10s%-5s
40、n",sbt.id,,sbt.kind,sbt.over,sbt.yesno,sbt.time,sbt.price); t+;else t+; while (t<100); printf("鍵入數(shù)字1返回主菜單n"); printf("鍵入數(shù)字任意鍵返回上層菜單n"); scanf("%d",&choice); if (choice=1) choose(); else cx();void cx_mc()/設(shè)備名稱(chēng)查詢(xún)int choice;char ming20;t=0; printf("
41、;n輸入你要查詢(xún)的設(shè)備名稱(chēng):"); scanf("%s",ming); do if(strcmp(,ming)=0&&sbt.yesno=1) /1表示設(shè)備沒(méi)報(bào)廢 printf("設(shè)備號(hào)設(shè)備名稱(chēng)設(shè)備種類(lèi)報(bào)廢日期是否報(bào)廢購(gòu)買(mǎi)時(shí)間價(jià)格n"); printf("n%-13s%-11s%-7s%-10s%-13d%-10s%-5sn",sbt.id,,sbt.kind,sbt.over,sbt.yesno,sbt.time,sbt.price); t+; else t+; while
42、(t<100); printf("鍵入數(shù)字1返回主菜單n"); printf("鍵入數(shù)字任意鍵返回上層菜單n"); scanf("%d",&choice); if (choice=1) choose(); else cx(); void tj()/統(tǒng)計(jì)int choice;char tong20;printf("n輸入你要統(tǒng)計(jì)的設(shè)備種類(lèi):"); scanf("%s",tong); do if(strcmp(sbt.kind,tong)=0&&sbt.yesno=1)
43、 /1表示設(shè)備沒(méi)報(bào)廢 printf("設(shè)備號(hào)設(shè)備名稱(chēng)設(shè)備種類(lèi)報(bào)廢日期是否報(bào)廢購(gòu)買(mǎi)時(shí)間價(jià)格n");printf("n%-13s%-11s%-7s%-10s%-13d%-10s%-5sn",sbt.id,,sbt.kind,sbt.over,sbt.yesno,sbt.time,sbt.price); t+; else t+; while (t<100); printf("鍵入數(shù)字1返回主菜單n"); printf("鍵入數(shù)字任意鍵返回上層菜單n"); scanf("%d",&
44、amp;choice); if (choice=1) choose() ; void bf() /報(bào)廢信息 int choice; do printf("ttt-n"); printf("ttt* 1-登記報(bào)廢信息 *n"); printf("ttt* 2-報(bào)廢設(shè)備統(tǒng)計(jì) *n"); printf("ttt* 0-退出 *n"); printf("ttt*·*·*·*·*·*·*·*·*·*·*·*
45、|n"); scanf("%d",&choice); getchar(); switch(choice) case 0:menu();break; case 1:bf_dj();break; case 2:bf_tj();break; default:printf("輸入無(wú)效請(qǐng)重新輸入n");bf(); break; while(choice!=0);void bf_dj()/報(bào)廢登記 char find20; int x; t=0; printf("請(qǐng)輸入要登記的設(shè)備ID號(hào):"); scanf("%s&q
46、uot;,find); while(1) if(strcmp(sbt.id,find)=0) /如果找到的話(huà)返回的是符合要求 break; else t+; while(1) printf("完成登記請(qǐng)輸入0否則輸入任意數(shù)再進(jìn)行修改:"); scanf("%d",&x); if(x=0) break; printf("請(qǐng)輸入新設(shè)備是否報(bào)廢1、沒(méi)報(bào)廢,0、報(bào)廢(原來(lái)是 %d ):",sbt.yesno); scanf("%d",&sbt.yesno); printf("n>>>>>>>>>>提示:該項(xiàng)記錄資料已經(jīng)成功登記!n"); scanf("%d",&x); switch(x) case 0:choose();break; case 1:bf();break; default:printf("輸入無(wú)效,自動(dòng)返回主菜單n");choose();break; void bf_tj()/報(bào)廢統(tǒng)計(jì) int choice;char find20;t=
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 楊浦公司搬家優(yōu)惠活動(dòng)方案
- 智能攝影義工活動(dòng)方案
- 春節(jié)睫毛活動(dòng)方案
- 村委愛(ài)心食堂活動(dòng)方案
- 朗誦比賽活動(dòng)策劃方案
- 朗誦詩(shī)詞猜燈謎活動(dòng)方案
- 暑期地產(chǎn)活動(dòng)方案
- 未檢工作宣傳周活動(dòng)方案
- 景區(qū)軍事體驗(yàn)館活動(dòng)方案
- 某某縣區(qū)猜燈謎活動(dòng)方案
- 浙江杭州市2024-2025學(xué)年高一下學(xué)期6月期末考試英語(yǔ)試題及答案
- 新型電極材料成本控制-洞察及研究
- 2025年初中數(shù)學(xué)知識(shí)點(diǎn)測(cè)試題及答案
- 小學(xué)生集體活動(dòng)安全課件
- 2025-2030年中國(guó)高爾夫產(chǎn)品行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 山東威海經(jīng)發(fā)投資控股集團(tuán)有限公司及下屬子公司招聘筆試題庫(kù)2025
- 新能源汽車(chē)充電樁建設(shè)方案及流程
- 2025-2030年中國(guó)人乳寡糖(HMO)行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 動(dòng)火工作方案
- 2025年互聯(lián)網(wǎng)醫(yī)療平安好醫(yī)生阿里健康京東健康對(duì)比分析報(bào)告
- 冰淇淋行業(yè)招商策劃
評(píng)論
0/150
提交評(píng)論