




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
目
錄一、需求與功能分析第二章概要計............................................................................................................................52.1總設計.2.2面向對象設計...............................................................................................................52.3運界面設計...............................................................................................................6第三章詳細計............................................................................................................................73.1系設計與實現..........................................................................................................73.2模設計.第四章測試分析.........................................................................................................................10第五章課程計總結..................................................................................................................10附錄:程序代碼(僅電子版需要、紙質版不需要I一、需求與功能分析1.1需求為了方便管理校內各種實驗設備夠翻遍快捷的錄入查詢各個實驗設備的基本信息而編寫了此程序實驗設備管理系統設計實驗設備信息包括設備編號設備種類如微機打印機掃描儀等等,設備名稱,設備價格,設備購入日期,是否報廢,報廢日期等。1.2主要功能:能夠完成對設備的錄入和修改。對設備進行分類統計。4、設備的破損耗費和遺損處理。4、設備的查詢。可實現管理員登陸管理系統,游客查詢系統。對實驗設備類型的管理。對實驗設備各項信息的錄入和修改。對實驗設備的分類查詢統計。對實驗設備遺損處理二、概要設計
2.1
程序總體共分為4個類:菜單類設備類型類設備類管理員類由主函數主持整體運行,由菜單類調用其它三類面對設設備類類:(見圖2)voidshuru();//設備類型的入voidtianjia();//備類型的添加2void//備類型的刪除void//備類型的輸出顯示void設備類型的寫入voidduqu();//備類型的讀取設備類nfom*//設備的創建入(見圖)load()//從檔中讀取數據(圖)void//類查詢數據(見圖5)voidacquire2(Infom*//詢全部數據(圖5)voidacqu(char//類查詢的內容支持(圖)voidadd()//添加新內容(圖)void//除(圖)intsave(Infom*//現數據進行保存voidhead)修改數據voidclassify(Infom*//數據的分類統計(圖)voidclasK(Infom*head)//型的分類統計(圖)voidhead)價格的分類統計(見圖)void//否報廢的統計(圖)管理員:void創建用戶名和密碼int//登陸voidchange()修改用戶名和密碼
運界設intmenu1(device*p,structShiyanEquip*head,DeviceTipe*a,manager*b)//管理模式主菜單intmenu2(device*p,structShiyanEquip*head,DeviceTipe*a)//游客模式主菜單structShiyanEquip*entering(device*p)//理模式錄入菜單4.structShiyanEquip*entering2(device*p)//客模式錄入菜單5.structShiyanEquip*change(device*p)//改菜單6.structShiyanEquip*query(device*p)//詢菜單structShiyanEquip*statistic(device*p)//類統計菜單structShiyanEquip*account(manager*b)//號菜單structShiyanEquip*type(DeviceTipe*a)//備類型菜單3三、詳細計3.1系設與現【總體框架、流程設計,模塊劃分及接口設計等】總體框架:主菜單登陸創建開始圖主菜單24
錄入查詢錄入修改查詢統計修改賬號設備類型
載入分類查詢全部查詢創建載入添加修改刪除全部查詢分類查詢價格統計類型統計報廢統計載入輸入添加刪除顯示55接口設計:intmenu1(device*p,structShiyanEquip*head,DeviceTipe*a,manager*b)[功能調用管理模式主菜單并向管理模式各項分菜單intmenu2(device*p,structShiyanEquip*head,DeviceTipe[功能調用游客模式主菜單并向游客模式各項分菜單3.structShiyanEquip*entering(device*p)[功能指向設備類中的新建,入和添加函數并完成相應函數功能4.structShiyanEquip*entering2(device*p)[功能指向設備類中的載入函并完成函數功能5.structShiyanEquip*change(device*p)[功能指向設備類中的修改和除函數并完成相應函數功能6.structShiyanEquip*query(device*p)[功能指向設備類中的分類查和全部查詢函數并完成相應函數功能7.structShiyanEquip*statistic(device*p)[功能指向設備類中的分類統函數并完成相應三類的統計8.structShiyanEquip*account(manager*b)[功能指向管理員類中的修改數完成修改賬戶及密碼的功能9.structShiyanEquip*type(DeviceTipe*a)[功能指向設備類型類中的各函數并完成有關設備類型的全部功能3.2
模設【各模塊的具體設計與實現】設備類型類:
設備類型2
載輸入添刪
輸入要輸入的類型輸入要添加的類型輸入要刪除不存
存在刪顯設類write
3
load圖4輸入
是否儲存否是否為0是load
選擇查詢方式
否結束
是否為空是選擇分類全部顯示讀取匹配5是否為空6ClassifyClassifyE
ClassifyKClassifyP圖讀取匹配b[0]++匹配b[1]++匹配3b[2]++否是否為空是輸出結束
76
Undo輸入輸入儲存否
刪除
是否為
是
結束是否為
否是
否結束
判斷是7四
、測試分【測試中發現的問題及解決方案】缺少必要的文字描述(已解決)輸出的格式問題(已解決)不能刪除唯一一項數據的問題已解決)設備操作中缺失最后一行的問題已解決)不能返回上一級菜單的問題(已解決)價格統計時不能確定準確比較的問題已解決)【對最終成果的評價】整體來說比較滿意,是最近辛苦努力的偉大成果,但是有如下幾點有待改進1.可以進行漢字輸入但是不能進行漢字查詢的問題管理員賬號不能隨意登出的問題設備類中沒有使用導致保密性不強的問題五、源程序#include<iostream>#include<stdio.h>#include<iomanip>8namespaceclassDeviceTipe//義設備類型類{sblx[20][20];//備類型voidshuru();//設備類型的輸入voidtianjia();//設備類型的添加void//備類型的刪除void//設備類型的出顯示void//備類型的寫入voidduqu();//設備類型的讀取};class//定義設備類{infom{idnum[10];編號kind[10];//類型名稱price[10];價格//買日期exist[10];//否報廢//報廢日期structinfom*next;head;9DeviceTipewrite()//設備的創建寫{Infom*p1,*p2;wcs.duqu();wcs.show();p1=p2=(Infom*)malloc(sizeof(Infom));請入編號種名價格購日是報廢報廢日期(空鍵斷開/按0鍵結束輸入):"<<endl;>>p1->name>>p1->exist>>p1->damda;'<<p1->kind<<''<<p1->name<<'<<p1->price<<''<<p1->purda<<''<<p1->exist<<''<<p1->damda<<endl;p1->next=NULL;{if(head==NULL)10head=p1;if(head!=NULL)p1=(Infom*)malloc(sizeof(Infom));cin>>p1->idnum;if(*(p1->idnum)=='0'){free(p1);break;}cin>>p1->kind>>p1->name>>p1->exist>>p1->damda;'<<p1->kind<<''<<p1->name<<'<<p1->price<<''<<p1->purda<<''<<p1->exist<<''<<p1->damda<<endl;}p2->next=NULL;cout<<"入成"<<endl;head;11}load()//從文檔中讀取數據{intn,a;tran[7][80];intInfom*p1,*p2;t("aaa.txt");p1=p2=(Infom*)malloc(sizeof(Infom));if(t.getline(tran[0],80,'\n')==NULL){cout<<"載失敗"<<endl;0;}{a++;}{a++;}12{a++;}{a++;}p1->price[a]='\0';{a++;}{p1->exist[a]=tran[0][n];a++;}{a++;}13p1->next=NULL;for(b=1;t.getline(tran[b],80,'\n')!=NULL;b++){if(head==NULL)head=p1;p1=(Infom*)malloc(sizeof(Infom));{a++;}{a++;}{a++;}14{a++;}p1->price[a]='\0';{a++;}{p1->exist[a]=tran[b][n];a++;}{a++;}}p1->next=NULL;head=p1;cout<<"入成"<<endl;head;}15void//類查詢數據{cout<<"請擇查詢方式"<<endl;
編號"名稱"類型"價格"購買日"<<endl;是否報"<<endl;報廢日"<<endl;結束查"<<endl;switch(choose){'1':acqu(choose);break;'2':acqu(choose);break;'3':acqu(choose);break;'4':acqu(choose);break;'5':acqu(choose);break;'6':acqu(choose);break;'7':acqu(choose);break;'0':break;}}voidacquire2(Infom*查詢全部數據{16cout<<"對起,信息不存在<<endl;{
編號
種類
名稱
價格
購買日期
是否報廢
報廢日期"for(;t->next!=NULL;){cout<<setfill(''<<setfill('')<<setw(10)<<t->kind<<''<<setfill('')<<setw(10)<<t->name<<'<<setfill(''<<setfill('')<<setw(10)<<t->purda<<''<<setfill(''<<setfill('')<<setw(10)<<t->damda<<endl;t=t->next;}cout<<setfill(''<<setfill('')<<setw(10)<<t->kind<<''<<setfill('')<<setw(10)<<t->name<<'<<setfill(''<<setfill('')<<setw(10)<<t->purda<<''<<setfill(''<<setfill('')<<setw(10)<<t->damda<<endl;}}voidacqu(char//類查詢的內容支持{17*s;inta=0;cout<<"請入查詢內容";for(;t->next!=NULL;){switch(choose){case'1':s=t->idnum;break;case'2':s=t->name;break;}{if(a==0)
編號
種類
名稱
價格
購買日期
是否報廢
報廢日"<<endl;cout<<setfill(''<<setfill('')<<setw(10)<<t->kind<<''<<setfill('')<<setw(10)<<t->name<<'<<setfill(''<<setfill('')<<setw(10)<<t->purda<<''<<setfill(''<<setfill('')<<setw(10)<<t->damda<<endl;18a++;}t=t->next;}switch(choose){case'1':s=t->idnum;break;case'2':s=t->name;break;}{if(a==0)
編號
種類
名稱
價格
購買日期是否報廢
報廢日期"<<endl;cout<<setfill(''<<setfill('')<<setw(10)<<t->kind<<''<<setfill('')<<setw(10)<<t->name<<'<<setfill(''<<setfill('')<<setw(10)<<t->purda<<''<<setfill(''<<setfill('')<<setw(10)<<t->damda<<endl;a++;}if(a==0)cout<<"對起,您查詢的信不存"19}voidadd()//加新內容{Infom*p1,*p2;wcs.duqu();wcs.show();p1=p2=(Infom*)malloc(sizeof(Infom));請入編號種名價格購日是報廢報廢日期(空鍵斷開/按0鍵結束輸入):"<<endl;>>p1->name>>p1->exist>>p1->damda;'<<p1->kind<<''<<p1->name<<'<<p1->price<<''<<p1->purda<<''<<p1->exist<<''<<p1->damda<<endl;p1->next=NULL;{if(head==NULL)20head=p1;if(head!=NULL)p1=(Infom*)malloc(sizeof(Infom));cin>>p1->idnum;if(*(p1->idnum)=='0'){free(p1);break;}cin>>p1->kind>>p1->name>>p1->exist>>p1->damda;'<<p1->kind<<''<<p1->name<<'<<p1->price<<''<<p1->purda<<''<<p1->exist<<''<<p1->damda<<endl;}p2->next=NULL;cout<<"加成"<<endl;}21void//除{structinfom*p1,*p2;num[10];aaa[10]="0";wcs.duqu();wcs.show();cout<<"請入要刪除的編號(空格鍵斷開按0鍵束):"<<endl;{cin>>num;break;if(head==NULL)cout<<"您使用的地址不在"<<endl;{p1=head;for(;strcmp(p1->idnum,num)!=0&&p1->next!=NULL;){}if(strcmp(p1->idnum,num)==0){{head=p1->next;22free(p1);}{p2->next=p1->next;p1->next=NULL;free(p1);}}cout<<"該容不存"<<endl;}}cout<<"輸1'儲存,入'放"<<endl;switch(choose){'1':save(head);break;'0':break;}{cout<<"刪成功"<<endl;}}intsave(Infom*//現數據進行保存23{unlink("aaa.txt");Infom*p1;p1=head;0;for(;p1->next!=NULL;){<<p1->kind<<''<<p1->name<<'<<p1->price<<''<<p1->purda<<''<<p1->exist<<''<<p1->damda<<endl;}<<p1->kind<<''<<p1->name<<'<<p1->price<<''<<p1->purda<<''<<p1->exist<<''<<p1->damda<<endl;The.close();0;}voidhead)改數據24{num[10];Infom*p1;x;wcs.duqu();wcs.show();cout<<"請入更改項目的編:"<<endl;cin>>num;p1=head;for(;strcmp(p1->idnum,num)!=0&&p1->next!=NULL;){}cout<<"不在此編號"<<endl;{cout<<"請擇修改內容"<<endl;
編號"名稱"類型"價格"購買日"<<endl;是否報"<<endl;報廢日"<<endl;結束修"<<endl;25cout<<"請入修改內容:"<<endl;switch(choose){'1':cin>>p1->idnum;break;'3':cin>>p1->kind;break;'6':cin>>p1->exist;break;'0':break;}}cout<<"輸1'儲存,入'放"<<endl;x=getch();switch(x){'1':save(head);break;'0':break;}}voidclassify(Infom*//數據的分類統計{cout<<"請擇統計內容"<<endl;
類型"價格"是否報"<<endl;26
結束統"<<endl;switch(choose){'1':clasK(head)'3':clasE(head)'0':break;}}voidclasK(Infom*head)//型的分類統計{a[20][10];intintx;inty;inti;Infom*p1;p1=head;for(x=0,strcpy(a[0],p1->kind);p1->next!=NULL;){for(y=0;y<=x;y++){if(strcmp(p1->kind,a[y])==0){b[y]++;break;27}}if(y==x+1){x++;b[x]++;strcpy(a[x],p1->kind);}}{cout<<"類:"<<a[i]<<''<<"數量:"<<b[i]<<endl;}}voidhead)價格的分類統計{intb[3]={0};intx;inty;inti;deg[10]="000010000";Infom*p1;p1=head;for(;p1->next!=NULL;){28for(i=0,y=0;i<9;i++){{y++;}trans[i]='0';}if(strcmp(trans,de)<=0)b[0]++;b[1]++;if(strcmp(trans,deg)>=0)b[2]++;}for(i=0,y=0;i<9;i++){{y++;}trans[i]='0';}29if(strcmp(trans,de)<=0)b[0]++;if(strcmp(trans,de)>0&&strcmp(trans,deg)<0)b[1]++;if(strcmp(trans,deg)>=0)b[2]++;cout<<"價小于等于5000:"<<''<<"量"<<b[0]<<endl;cout<<"價大于5000小10000:"<<''<<"數:cout<<"價大于等于<<''<<"數量:"<<b[2]<<endl;}void//否報廢的統計{a[20][10];intintx;inty;inti;Infom*p1;p1=head;{for(y=0;y<=x;y++){if(strcmp(p1->exist,a[y])==0){b[y]++;30break;}}if(y==x+1){x++;b[x]++;}}{cout<<"是報廢:"<<a[i]<<''<<"量:}}};inti,n=0;分voidDeviceTipe::xieru(){ofstreamfout("sblx.txt");for(i=0;i<n;i++){fout<<*(p+i)<<endl;}
//設類型類的函數實現部31fout<<flush;fout.close();}void{ifstreamfile.open("sblx.txt");i=0;{i++;n=i;file.close();}voidDeviceTipe::shuru(){cout<<"請入設備類型個數"<<endl;cin>>n;cout<<"請次輸入設備類型"for(i=0;i<n;i++)32{cin>>*(p+i);}}voidDeviceTipe::tianjia(){intk;cout<<"請入要添加的設備型個"cin>>k;請次輸入備類型名"for(i=n;i<n+k;i++){cin>>*(p+i);}}voidDeviceTipe::shanchu(){w[20];intx=0;intj;intr;33請入要刪的設備類"cin>>w;for(i=0;i<n;i++){if(strcmp(w,*(p+i))==0){strcpy(*(p+j),*(p+j+1));}}if(x==1){n=n-1;}{cout<<"設類型中沒有此類是否重新輸入<是/1><否/0>"<<endl;cin>>r;if(r==0)}}voidDeviceTipe::show(){34cout<<endl<<endl;for(i=0;i<n;i++){cout<<i+1<<"."<<*(p+i)<<endl;}cout<<"以為所有設備類型}class//義管理員類{void//創建用戶名和密碼{code[100];if((fp1=fopen("user.txt","w"))==NULL){printf("文件不存在"}請入用戶";fprintf(fp1,"%s",name);請入密碼";cin>>code;fprintf(fp1,"%s",code);fclose(fp1);35}int//登陸{a[200],b[200],c,d[100];intr=0;cout<<"輸用戶名:";cin>>a;cout<<"輸密碼:";cin>>d;if((fp1=fopen("user.txt","r"))==NULL){printf("文件不存在\n");}fscanf(fp1,"%s",b);{r=1;}{r=0;}fclose(fp1);r;}36voidchange()//修改用戶名和密碼{code[100];if((fp1=fopen("user.txt","w"))==NULL){printf("文件不存在"}cout<<"請入用戶名:fprintf(fp1,"%s",name);cout<<"請入密碼:";cin>>code;fprintf(fp1,"%s",code);fclose(fp1);}};classmenu//定義菜單類{intShiyanEquip*head,DeviceTipe*a,manager*b)//管理模式主菜單{{cout<<"\t\t\t\t試設備管理系"37cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t1.設的錄入t\t\t\t***"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t2.設的修改t\t\t\t***"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t3.設信息查詢t\t\t\t***"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t4.設的分類統計t\t\t***"<<endl;cout<<"************************************************************************cout<<"***\t\t\t\t5.設類型的操作t\t\t***"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t0.修管理員賬號t\t\t***"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t#.退系統t\t\t\t***"<<endl;cout<<"********************************************************************38*******"<<endl;cout<<"***\t\t\t\t~溫馨提:cout<<"***\t\t\t\t~請您先創建或載入清單再進行操\t***"<<endl;cout<<"********************************************************************switch(chose){'1':break;'2':head=change(p);break;case'3':head=query(p);break;case'4':break;case'5':break;case'0':break;case'#':printf("*******謝使用********\n\n");39break;}}while(1);0;}int*p,structShiyanEquip*head,DeviceTipe*a)//客模式主菜單{{cout<<"\t\t\t\t試設備管理系(buct)"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t1.設的載入t\t\t\t***"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t2.設信息查詢cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t#.退系統t\t\t\t***"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t~溫馨提:cout<<"***\t\t\t\t~請您先載入清單再進行操作t***"<<endl;40cout<<"********************************************************************switch(chose){'1':head=entering2(p);break;'2':head=query(p);break;case'#':break;}}while(1);0;}structShiyanEquip*entering(device*p){structShiyanEquip*head;{cout<<"\t\t\t\t試設備錄入(buct)"<<endl;cout<<"********************************************************************41*******"<<endl;cout<<"***\t\t\t\t1.新管理清單t\t\t\t***"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t2.載管理清單t\t\t\t***"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t3.增新器材t\t\t\t***"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t#.返上級菜單t\t\t\t***"<<endl;cout<<"********************************************************************switch(chose2){'1':(*p).write();break;case'2':break;'3':break;'#':42head;}}while(1);0;}structShiyanEquip*entering2(device*p){structShiyanEquip*head;{cout<<"\t\t\t\t試設備錄入(buct)"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t1.載管理清單t\t\t\t***"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t#.返上級菜單t\t\t\t***"<<endl;cout<<"********************************************************************switch(chose2){case'1':43break;'#':head;}}while(1);0;}structShiyanEquip*change(device*p){struct{cout<<"\t\t\t\t試設備修改(buct)"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t1.修器材信息t\t\t\t***"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t2.刪器材信息t\t\t\t***"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t#.返上級菜單t\t\t\t***"<<endl;44cout<<"********************************************************************switch(chose2){'1':(*p).revise((*p).head);break;'2':break;'#':head;}}while(1);0;}//====================================================structShiyanEquip**p){struct{cout<<"\t\t\t\t試設備查詢(buct)"<<endl;cout<<"***************************************************************************"<<endl;45cout<<"***\t\t\t\t1.分查找t\t\t\t***"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t2.全查詢t\t\t\t***"<<endl;cout<<"***************************************************************************"<<endl;cout<<"***\t\t\t\t#.返上級菜單t\t\t\t***"<<endl;cout<<"********************************************************************switch(chose3){'1':(*p).acquire((*p).head);break;'2':break;'#':head;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國家用按摩器行業市場全景分析及前景機遇研判報告
- 設立統計臺賬管理制度
- 設計質量怎樣管理制度
- 診所內科規章管理制度
- 診所燃氣安全管理制度
- 試劑公司試劑管理制度
- 財務紅線預警管理制度
- 財政專戶賬戶管理制度
- 貨物分揀現場管理制度
- 貨物配送運費管理制度
- 2025年安徽省中考數學試卷真題(含標準答案)
- 2025至2030年中國高純氧化鎂行業市場運行格局及前景戰略分析報告
- 高級記者考試試題及答案
- 2025國家開放大學《高級財務會計》期末機考題庫
- 2025至2030年中國電工開關行業市場發展潛力及前景戰略分析報告
- 貴州畢節中考試題及答案
- 北京市朝陽區2023-2024學年三年級下學期語文期末考試卷
- 2025年煙花爆竹經營單位主要負責人模擬考試題及答案
- 租房合同到期交接協議書
- 道路人行天橋加裝電梯導則(試行)
- 中國廢舊輪胎橡膠粉項目投資計劃書
評論
0/150
提交評論