c語言實習儀器儀表管理_第1頁
c語言實習儀器儀表管理_第2頁
c語言實習儀器儀表管理_第3頁
c語言實習儀器儀表管理_第4頁
c語言實習儀器儀表管理_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C語言課程實習與報告——《儀器儀表管理》制作人:龐明制作時間:2023年7月13日一.題目要求儀器儀表管理【要求】系統(tǒng)功能的基本要求:(1)新的儀器儀表信息的錄入;(2)在借出、歸還、維修時對儀器儀表信息的修改;(3)對報廢儀器儀表信息的刪除;(4)按照一定的條件查詢符合條件的儀器儀表信息;查詢功能至少應該包括儀器儀表基本信息(如儀器儀表名字、儀器儀表編等)的查詢、按時間點(借入時間、借出時間、歸還時間)查詢等,統(tǒng)計功能至少包括按時間段統(tǒng)計,按儀器儀表的基本信息統(tǒng)計等。(5)對查詢,統(tǒng)計結果的打印輸出。【提示】數(shù)據(jù)結構采用結構體。儀器儀表信息包括儀器儀表名、儀器儀表編號、購買時間、借入時間、借出時間、歸還時間、維修時間、狀態(tài)信息(0代表可借出,1代表已借出,2代表正在維修)等。二.分析需求根據(jù)題目要求,需要把儀器儀表信息的的數(shù)據(jù)存儲在文件里,所以需要提供文件的輸入輸出等操作;在程序中要提供修改,刪除,查找等操作;另外還應該提供鍵盤式選擇菜單實現(xiàn)功能選擇。系統(tǒng)功能圖如下:儀器儀表管理系統(tǒng)儀器儀表管理系統(tǒng)添加顯示修改統(tǒng)計退出查詢刪除系統(tǒng)功能模塊圖三.詳細設計需調用的函數(shù)名:voidsave(intn,intm);intload_equ();voidmenu();voidadd_new_message();voidinput(inti);voidload_record();voidprintf_one(inti);voidprintf_n(intn);voidmodify();voiddelete();voidsearch();voidsb_buy_tq();voidsb_gb_tq();voidsb_par_number();voidsb_name();voidstatistic();voidtb_par_number();voidtb_name();voidtb_buy_tq();voidtb_gb_tq();主函數(shù)主函數(shù)一般設計得比較簡潔,只提供輸入輸出和功能處理的函數(shù)調用。其各功能模塊用菜單方式選擇。本題將main()函數(shù)體內的界面選擇部分語句單獨抽取出來作為一獨立函數(shù),目的在于系統(tǒng)執(zhí)行完每部分功能模塊后能夠方便返回到系統(tǒng)界面。菜單部分設計如下:【流程圖】顯示一系列功能選項顯示一系列功能選項輸入n,判斷n是否是1-7NO輸入n,判斷n是否是1-7YES根據(jù)n的值調用各功能模塊函數(shù)根據(jù)n的值調用各功能模塊函數(shù)主函數(shù)的菜單流程圖【程序】對應如下:main(){system("cls");/**********清屏************/menu();}voidmenu(){intw,n;do{system("cls");printf("\t\tWELCOMETOTHEEQUIPMENTMANAGEMENTSYSTEM\n\n\n");printf("\n\n\t\t====================******====================\n\n\n");printf("\t\t\t1:Addmessageofnewequipmen\n\n");printf("\t\t\t2:Loadthemessageofallequipment\n\n");printf("\t\t\t3:Correctthemessageofequipment\n\n");printf("\t\t\t4:Deletethemessageofbrokenequipment\n\n");printf("\t\t\t5:Searchthemessageofequipment\n\n");printf("\t\t\t6:Searchofalltheequipment\n\n");printf("\t\t\t7:Exit\n");printf("\n\n\t\t====================******====================\n\n\n");printf("Pleasechoiceyournumber:[]\b\b");scanf("%d",&n);if(n<1||n>7)w=1;elsew=0;}while(w==1);/****************選擇功能****************/switch(n){case1:add_new_message();break;/*添加模塊*/case2:load_record();break;/*顯示模塊*/case3:modify();break;/*修改模塊*/case4:search();break;/*查詢模塊*/case5:statistic();break;/*統(tǒng)計模塊*/case6:delete();break;/*刪除模塊*/case7:exit(0);break;/*退出模塊*/}}各功能模塊設計(1)添加信息模塊【分析】單獨看各數(shù)據(jù)信息,儀器儀表名是字符型,可采用字符型數(shù)組;儀器儀表編號、購買時間、借入時間、借出時間、歸還時間、維修時間應采用實型;狀態(tài)信息是整數(shù),采用整型。實際上操作時發(fā)現(xiàn)只有字符型的數(shù)據(jù)可以在文件中成功被保存,所以本題所有數(shù)據(jù)一律采用字符型。structequip{charnumber[4];charname[11];charb_time[11];charbin_time[11];charbout_time[11];chargiveb_time[11];charrepair_time[11];intstate;}equ[M];/*equ[M]中每個數(shù)組元素對應一個儀表儀器*/【注意】equ[M]中的M是儀表儀器個數(shù),程序中采用宏定義的方式,可以隨時在源程序宏定義中改,本程序宏定義#defineM50。用戶要添加儀器的個數(shù)m【流程圖】用戶要添加儀器的個數(shù)mi從0到m-1調用輸入函數(shù)voidi從0到m-1調用輸入函數(shù)voidinput(inti)i?。?i?。?Y顯示添加儀器的信息顯示添加儀器的信息輸入模塊流程圖【程序】/*************************添加模塊***********************/voidadd_new_message(){intt,i,m;system("cls");t=load_equ();printf("Howmanygroupsdatasdoyouwanttoadd?\n");printf("inputthenumber:[]\b\b\b");scanf("%d",&m);for(i=0;i<m;i++){printf("\nInput%dthequipmentrecord.\n",i+1);input(t+i);/*調用輸入函數(shù)*/}save(t+m,0);/*調用保存函數(shù)保存t+m組數(shù)據(jù)*/system("cls");/**********清屏************/menu();/*返回登陸界面*/}/****************輸入函數(shù)****************/voidinput(inti){printf("Pleaseinput:\nnumbernameb_timeb_in_timeb_out_timeg_back_timerepair_timestate\n");scanf("%s%s%s%s%s%s%s%d",&equ[i].number,&equ[i].name,&equ[i].b_time,&equ[i].bin_time,&equ[i].bout_time,&equ[i].giveb_time,&equ[i].repair_time,&equ[i].state);}(2)顯示記錄模塊分析:通過調用函數(shù)顯示所有儀器的一切信息,最后將main()函數(shù)體內的界面選擇部分語句單獨抽取出來作為一獨立函數(shù),目的在于系統(tǒng)執(zhí)行完每部分功能模塊后能夠方便返回到系統(tǒng)界面。顯示記錄儀器的個數(shù)t流程圖:顯示記錄儀器的個數(shù)ti從0到t-1調用顯示函數(shù)voidprintfi從0到t-1調用顯示函數(shù)voidprintf_n(intn)i!=0i!=0Y顯示儀器記錄顯示儀器記錄voidload_record(){intt;t=load_equ();printf_n(t);printf("\n\n\nPressanykeytogoback...\n\n");getchar();menu();/*返回登陸界面*/}/*顯示一個儀器記錄的函數(shù)*/voidprintf_one(inti){printf("%-3s%-10s%-10s%-10s%-10s%-10s%-10s%d.\n\n",equ[i].number,equ[i].name,equ[i].b_time,equ[i].bin_time,equ[i].bout_time,equ[i].giveb_time,equ[i].repair_time,equ[i].state);}/**顯示n個儀器記錄的函數(shù)*/voidprintf_n(intn){intj;system("cls");/*清屏*/printf("numbernameb_timeb_in_timeb_out_timeg_back_timerepair_times\n");for(j=0;j<n;j++){printf_one(j);/*調用顯示一個儀器記錄的函數(shù)*/}}(3)修改模塊[需求分析]用戶輸入要修改的儀器儀表編號或名稱,根據(jù)編號或名稱查找儀器儀表記錄,并提示用戶修改該記錄的哪部分信息,是儀器儀表的借出時間、歸還時間、修理時間還是狀態(tài),根據(jù)用戶選擇修改相應信息。輸入要修改的儀器儀表編號或名稱[流程圖]輸入要修改的儀器儀表編號或名稱是否找到此記錄是否找到此記錄YN顯示找到的記錄,調用修改函數(shù)提示沒有找到顯示找到的記錄,調用修改函數(shù)提示沒有找到保存修改后的記錄Y保存修改后的記錄N返回主菜單返回主菜單修改模塊流程圖[程序]voidmodify(){structequipmod;intt,i,m,w,addr=-1;charnumber[4]={''},name[11]={''};system("cls");/*清屏*/t=load_equ();do{printf("\nInputtheequipment'numberorname(1:thenumber2:thename):\n\n");printf("Whatisyourchoice:[]\b\b");scanf("%d",&m);if(m==1||m==2)w=0;elsew=1;}while(w==1);switch(m){case1:printf("\n\nPleaseinputtheequipment'snumber:[___]\b\b\b\b");scanf("%s",number);break;case2:printf("Pleaseinputtheequipment'sname:[__________]\b\b\b\b\b\b\b\b\b\b\b");scanf("%s",name);break;}for(i=0;i<t;i++)/*查找要修改的儀器*/{if(strcmp(equ[i].name,name)==0||strcmp(equ[i].number,number)==0){addr=i;printf("\n\nPleaseinputthenewinformation:\n\n");printf("numbernameb_timeb_in_timeb_out_timeg_back_timerepair_times\n");scanf("%s%s%s%s%s%s%s%d",mod.number,,mod.b_time,mod.bin_time,mod.bout_time,mod.giveb_time,mod.repair_time,&mod.state);strcpy(equ[i].number,mod.number);strcpy(equ[i].name,);strcpy(equ[i].b_time,mod.b_time);strcpy(equ[i].bin_time,mod.bin_time);strcpy(equ[i].bout_time,mod.bout_time);strcpy(equ[i].giveb_time,mod.giveb_time);strcpy(equ[i].repair_time,mod.repair_time);equ[i].state=mod.state;printf("%-3s%-10s%-10s%-10s%-10s%-10s%-10s%d.\n\n",equ[i].number,equ[i].name,equ[i].b_time,equ[i].bin_time,equ[i].bout_time,equ[i].giveb_time,equ[i].repair_time,equ[i].state);break;}}if(addr==-1){printf("Cannotfindtheequipmentwhichyouwanttomodify!\n\n");printf("Pressanykeytogoback...\n\n");getchar();menu();}save(t,0);/*修改后的信息保存*/printf("Pressanykeytogoback...\n\n");getchar();menu();}(4)查詢模塊顯示一系列功能選項[流程圖]顯示一系列功能選項輸入n,判斷n是否是1-4N輸入n,判斷n是否是1-4Y根據(jù)n的值調用各子功能模塊函數(shù)根據(jù)n的值調用各子功能模塊函數(shù)查找模塊流程圖[程序]/*查找模塊*/voidsearch(){intw,n;do{system("cls");printf("\n\t\t*********************************************\n\n");printf("\t\tbyb_timequantumtosearch?Input[1]\n");printf("\t\tbygive_back_timequantumtosearch?Input[2]\n");printf("\t\tbynumbertosearch?Input[3]\n");printf("\t\tbynametosearch?Input[4]\n");printf("\t\t*********************************************\n\n");printf("Choiceyournumber(1-4):[]\b\b\b");scanf("%d",&n);if(n<1||n>4)w=1;elsew=0;}while(w==1);/*選擇功能*/switch(n){case1:sb_buy_tq();break;/*按購買時間段查詢函數(shù)*/case2:sb_gb_tq();break;/*按歸還時間段查詢*/case3:sb_par_number();break;/*按指定編號查詢*/case4:sb_name();break;/*按儀器名稱查詢*/}按購買或歸還時間段查找[流程圖]調用加載函數(shù)調用加載函數(shù)n=load();并計算可以查找的記錄個數(shù)n用戶選擇用戶選擇12輸入儀器儀表購買時間3輸入儀器儀表購買時間輸入儀器儀表歸還時間輸入儀器儀表歸還時間是否找到該儀器儀表記錄是否找到該儀器儀表記錄YN顯示找到的記錄提示沒有找到顯示找到的記錄提示沒有找到詢問用戶是否繼續(xù)查找詢問用戶是否繼續(xù)查找YN讓用戶選擇1).查找另一個2).修改3).刪除4).返回主菜單讓用戶選擇1).查找另一個2).修改3).刪除4).返回主菜單返回主菜單返回主菜單時間點查找模塊流程圖voidsb_buy_tq()/*按購買時間段查詢函數(shù)*/{charyear1[11],year2[11];intt,i,sum=0;t=load_equ();system("cls");printf("Pleaseinputthestarttime:[____.__.__]\b\b\b\b\b\b\b\b\b\b");scanf("%s",year1);printf("\n");printf("Pleaseinputthefinishtime:[____.__.__]\b\b\b\b\b\b\b\b\b\b");scanf("%s",year2);printf("\n");for(i=0;i<t;i++){if((strcmp(equ[i].b_time,year1)>=0)&&(strcmp(equ[i].b_time,year2)<=0)){printf_one(i);/*把符合條件的記錄顯示出來*/sum++;save(1,1);/*把符合條件的記錄保存在查詢記事本里*/}}if(sum==0){printf("Sorry!Cannotfindtheequipmentwhichyouwantto.\n\n");}printf("Pressanykeytogobacktheformerstep...\n");getchar();menu();}(1.2)按指定編號和儀器名查詢[分析]基本信息查找包括了儀器儀表的名稱以及編號的查找,所以該子功能模塊的功能是按儀器儀表名稱和按儀器儀表編號查找。voidsb_name()/*按儀器名稱查詢*/{charname[11];intt,i,sum=0;t=load_equ();system("cls");printf("Pleaseinputtheequipmentname:[__________]\b\b\b\b\b\b\b\b\b\b\b");scanf("%s",name);printf("\n");for(i=0;i<t;i++){if(strcmp(equ[i].name,name)==0){printf_one(i);/*把符合條件的記錄顯示出來*/sum++;save(1,1);/*把符合條件的記錄保存在查詢記事本里*/}}if(sum==0){printf("Sorry!Cannotfindtheequipmentwhichyouwantto.\n\n");}printf("Pressanykeytogobacktheformerstep...\n");getchar();menu();}(5)統(tǒng)計模塊分析:可以按購買時間段統(tǒng)計,按歸還時間段統(tǒng)計,按指定編號統(tǒng)計,按儀器名稱統(tǒng)計。流程圖與查詢模塊類似.程序:voidstatistic(){intw,n;do{system("cls");printf("\n\t\t*********************************************\n\n");printf("\t\tbyb_timequantumtostatistic?Input[1]\n");printf("\t\tbygive_back_timequantumtostatistic?Input[2]\n");printf("\t\tbynumbertostatistic?Input[3]\n");printf("\t\tbynametostatistic?Input[4]\n");printf("\t\t*********************************************\n\n");printf("Choiceyournumber(1-4):[]\b\b\b");scanf("%d",&n);if(n<1||n>4)w=1;elsew=0;}while(w==1);/****************選擇功能****************/switch(n){case1:tb_buy_tq();break;case2:tb_gb_tq();break;case3:tb_par_number();break;case4:tb_name();break;}}voidtb_par_number(){charnumber[4];intt,i,sum=0;t=load_equ();system("cls");printf("Pleaseinputtheequipmentnumber(000~999):[___]\b\b\b\b");scanf("%s",number);printf("\n");for(i=0;i<t;i++){if(strcmp(equ[i].number,number)==0){sum++;save(1,2);}}if(sum==0){printf("Sorry!Cannotfindtheequipmentwhichyouwantto!\n\n");}else{printf("Thereare[%-2d]equipment(s)whichyouwanttostatisticintherecord!\n\n",sum);}printf("Pressanykeytogobacktheformerstep...\n");getchar();menu();}(6)刪除模塊[需求分析]該模塊的功能與修改模塊一樣先顯示所有儀器儀表信息,同樣考慮到記錄較多,建議采用分屏顯示。顯示完所有記錄后,用戶輸入要修改的儀器儀表編號,根據(jù)編號查找儀器儀表記錄,并提示用戶是否確定要刪除。顯示所有記錄,讓用戶看哪個要刪除[流程圖]顯示所有記錄,讓用戶看哪個要刪除輸入要刪除的儀器儀表編號輸入要刪除的儀器儀表編號是否找到此記錄是否找到此記錄YN顯示找到的記錄提示沒有找到顯示找到的記錄提示沒有找到詢問用戶是否繼續(xù)刪除Y詢問用戶是否繼續(xù)刪除N返回主菜單返回主菜單刪除模塊流程圖[程序]voiddelete(){FILE*fp1;structequipmod;intt,i,m,w,addr=-1,u;charnumber[4]={''},name[11]={''};chara1[2],a2[2];system("cls");/*清屏*/t=load_equ();if((fp1=fopen("record.txt","w"))==NULL)/*以只寫方式打開*/{printf("\nCannotopenfile\n");exit(0);}system("cls");do{system("cls");printf("\nPleaseInputtheequipment'numberornametofindit(1:thenumber2:thename):\n\n");

溫馨提示

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

評論

0/150

提交評論