實(shí)驗(yàn)室設(shè)備管理系統(tǒng)_第1頁
實(shí)驗(yàn)室設(shè)備管理系統(tǒng)_第2頁
實(shí)驗(yàn)室設(shè)備管理系統(tǒng)_第3頁
實(shí)驗(yàn)室設(shè)備管理系統(tǒng)_第4頁
實(shí)驗(yàn)室設(shè)備管理系統(tǒng)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、寧 波 工 程 學(xué) 院2015 2016 學(xué)年第 二 學(xué)期電信學(xué)院C語言課程設(shè)計(jì)報(bào)告題 目: 實(shí)驗(yàn)室設(shè)備管理系統(tǒng) 班 級(jí): 計(jì)科152 姓 名: 孔慶康 學(xué) 號(hào):指導(dǎo)教師: 洪立 2016 年 6 月目錄目錄21、系統(tǒng)功能和結(jié)構(gòu)31.1系統(tǒng)設(shè)計(jì)目的31.2系統(tǒng)功能分析31.3系統(tǒng)結(jié)構(gòu)分析42、核心技術(shù)介紹43、函數(shù)功能介紹54、設(shè)計(jì)體會(huì)及總結(jié)12參考文獻(xiàn):121、 系統(tǒng)功能和結(jié)構(gòu)1.1系統(tǒng)設(shè)計(jì)目的 因?yàn)楝F(xiàn)在各個(gè)高校內(nèi)教學(xué)設(shè)備眾多但自動(dòng)管理水平相比過低,很多高校管理設(shè)備都采用在設(shè)備購(gòu)進(jìn)以后將設(shè)備的基本情況和相關(guān)信息登記存檔。存檔以后檔案基本就沒人記錄與維護(hù),至于以后設(shè)備

2、的變遷或損壞都不會(huì)記錄在設(shè)備檔案中,即不能體現(xiàn)設(shè)備的即時(shí)狀態(tài)。而有些即使有設(shè)備管理系統(tǒng)的單位,就算是能把設(shè)備的即時(shí)信息體現(xiàn)在設(shè)備檔案上,但設(shè)備的缺陷處理及設(shè)備缺陷等功能沒有實(shí)施,設(shè)備檢修的備品備件情況和檢修成本核算沒有實(shí)現(xiàn),整個(gè)學(xué)校教學(xué)設(shè)備管理信息化仍處于較低水平。將管理任務(wù)分成小塊,落實(shí)到個(gè)人并能隨時(shí)查詢?cè)O(shè)備當(dāng)前情況和歷史情況,對(duì)設(shè)備的可靠性分析有直接作用,使管理人員從手工計(jì)算、統(tǒng)計(jì)工作中解脫出來。1.2系統(tǒng)功能分析實(shí)驗(yàn)室設(shè)備信息用文件存儲(chǔ),提供文件的輸入輸出操作;要能夠完成設(shè)備的錄入和修改,需要提供設(shè)備添加和修改操作;實(shí)現(xiàn)對(duì)設(shè)備進(jìn)行分類統(tǒng)計(jì),需要提供排序操作;實(shí)現(xiàn)對(duì)設(shè)備的插敘需要提供查找操

3、作,設(shè)備的查詢可根據(jù)設(shè)備編號(hào)、設(shè)備種類、設(shè)備名稱、設(shè)備購(gòu)入日期、正常設(shè)備(未報(bào)廢的)等多種方式查詢;另外還要提供鍵盤式選擇菜單以實(shí)現(xiàn)功能選擇。1.3系統(tǒng)結(jié)構(gòu)分析根據(jù)上面的需求分析,可以將這個(gè)系統(tǒng)的設(shè)計(jì)分為以下模塊 實(shí)驗(yàn)設(shè)備管理系統(tǒng)信息輸入信息添加信息修改信息統(tǒng)計(jì)信息搜索2、 核心技術(shù)介紹主函數(shù) 流程圖顯示一系列功能選項(xiàng)輸入n,判斷n是否是0-6根據(jù)n的值調(diào)用各功能模塊函數(shù) NY 程序void main()Node *equip;FILE *fp;int flag;Node *p,*q; printf("tttt設(shè)備管理系統(tǒng)n"); equip=(Node*)malloc(s

4、izeof(Node); equip->next=NULL; p=equip; fp=fopen("設(shè)備管理系統(tǒng)","wb+"); q=(Node*)malloc(sizeof(Node); if(fread(q,sizeof(Node),1,fp) /將文件的內(nèi)容放入接點(diǎn)中 q->next=NULL; p->next=q; p=q; /將該接點(diǎn)掛入鏈表中 fclose(fp); /關(guān)閉文件 while(1) printf("*目錄*"); printf("n1添加記錄n"); printf(&q

5、uot;n2修改記錄n"); printf("n3顯示記錄n"); printf("n4統(tǒng)計(jì)分類記錄n"); printf("n0*-EXIT-*n"); printf("請(qǐng)輸入你要操作的序號(hào):"); scanf("%d",&flag); switch(flag) case 0: printf("n>>>>>>>>>>提示:已經(jīng)退出系統(tǒng),ByeBye!n");break; case 1: Add(e

6、quip); break; /增加記錄 case 2: Modify(equip); break;/修改記錄 case 3: Disp(equip); break;/顯示記錄信息 case 4: Tongji(equip); break;/統(tǒng)計(jì)記錄 default: printf("n>>>>>>>>>>提示:輸入錯(cuò)誤!n"); break; 3、 函數(shù)功能介紹 (1)輸入模塊 流程圖輸入設(shè)備的各項(xiàng)詳細(xì)信息輸入用戶要輸入設(shè)備的個(gè)數(shù)i將輸入的信息存儲(chǔ)到文件的中 程序 /*輸入模塊*/#include "st

7、dio.h"#include "stdlib.h"#include "string.h"struct shebeichar ID10; char name15; char kind15; char over15; char yesno10; char time10; char price10; ;typedef struct nodestruct shebei data;struct node *next; /建立一個(gè)鏈表。Node;void Add(Node *equip) /添加記錄Node *p,*r,*s; char id10; /先用

8、于輸入ID,也用于判斷是否跳出循環(huán)r=equip;s=equip->next; /使s為第一個(gè)有用的結(jié)點(diǎn)while(r->next!=NULL) /這個(gè)循環(huán)的作用是使r為最后一個(gè)有用的結(jié)點(diǎn)r=r->next; /將指針置于最末尾while(1) printf(">>>>>>>>>>提示:輸入0則返回主菜單!n"); printf("n請(qǐng)你輸入設(shè)備ID號(hào):"); scanf("%s",id); if(strcmp(id,"0")=0) br

9、eak; p=(Node *)malloc(sizeof(Node); /申請(qǐng)空間 strcpy(p->data.ID,id); printf("n請(qǐng)輸入設(shè)備名稱:"); scanf("%s",p->); printf("n請(qǐng)輸入設(shè)備種類:"); scanf("%s",p->data.kind); printf("n請(qǐng)輸入報(bào)廢日期:"); scanf("%s",&p->data.over); printf("n請(qǐng)輸入

10、設(shè)備是否報(bào)廢:"); scanf("%s",&p->data.yesno); printf("n請(qǐng)輸入設(shè)備購(gòu)買時(shí)間:"); scanf("%s",&p->data.time); printf("n請(qǐng)輸入設(shè)備價(jià)格:"); scanf("%s",&p->data.price); printf(">>>>>>>>>>提示:已經(jīng)完成一條記錄的添加。n"); p->ne

11、xt=NULL; r->next=p; /這一步是必需的,將p與先前的鏈表連起來構(gòu)成一條新鏈表 r=p; /也是必需的.將r 又重設(shè)為新鏈的最后一個(gè)有用結(jié)點(diǎn) (2)修改模塊 需求分析 此模塊可以根據(jù)客戶需要對(duì)以記錄在文件中的信息進(jìn)行修改 流程圖 輸入要修改的設(shè)備編號(hào)是否找到該設(shè)備資料顯示找到的記錄,調(diào)用修改函數(shù)顯示沒有找到對(duì)該設(shè)備的信息進(jìn)行修改返回主菜單返回主菜單y n 程序 /*修改模塊*/ void Modify(Node *equip)/修改Node *p;char find20;if(!equip->next) printf("n>>>>&

12、gt;>>>>>提示:沒有資料可以修改!n"); return;printf("請(qǐng)輸入要修改的設(shè)備ID號(hào):"); scanf("%s",find); p=equip->next; while(p!=NULL) if(strcmp(p->data.ID,find)=0) /如果找到的話返回的是符合要求 break; p=p->next; if(p) /若找到 int x; while(1) printf("完成修改請(qǐng)輸入0否則輸入任意數(shù)再進(jìn)行修改:"); scanf("

13、%d",&x); if(x=0) break; printf("請(qǐng)輸入新設(shè)備號(hào)(原來是 %s ):",p->data.ID); scanf("%s",p->data.ID); printf("請(qǐng)輸入新設(shè)備名稱(原來是 %s ):",p->); scanf("%s",p->); printf("請(qǐng)輸入新設(shè)備設(shè)備種類名稱(原來是 %s ):",p->data.kind); scanf("%s",p

14、->data.kind); printf("請(qǐng)輸入新設(shè)備報(bào)廢日期名稱(原來是 %s ):",p->data.over); scanf("%s",p->data.over); printf("請(qǐng)輸入新設(shè)備是否報(bào)廢(原來是 %s ):",p->data.yesno); scanf("%s",p->data.yesno); printf("請(qǐng)輸入新設(shè)備購(gòu)買時(shí)間(原來是 %s ):",p->data.time); scanf("%s",p->

15、data.time); printf("請(qǐng)輸入新設(shè)備價(jià)格(原來是 %s ):",p->data.price); scanf("%s",p->data.price); printf("n>>>>>>>>>>提示:該項(xiàng)記錄資料已經(jīng)成功修改!n"); else printf("n>>>>>>>>>>提示:你要修改的信息不存在!n"); 返回主菜單(3)統(tǒng)計(jì)模塊 需求分析將已經(jīng)輸入的設(shè)備信息進(jìn)

16、行統(tǒng)計(jì),并顯示設(shè)備總數(shù)、價(jià)格總額等信息流程圖打開文件,并對(duì)文件中的設(shè)備信息進(jìn)行統(tǒng)計(jì)計(jì)算輸出統(tǒng)計(jì)結(jié)果返回主菜單 程序void Tongji(Node *equip)/統(tǒng)計(jì)Node *p;int sel;int flag2=0,ha=0;p=equip->next;char find20; if(!equip->next) /若鏈表為空 printf("n>>>>>>>>>>提示:沒有資料可以統(tǒng)計(jì)分類!n"); return;printf(">>>>>>>

17、>>>提示:n=>0退出n=>1按設(shè)備號(hào)統(tǒng)計(jì)n=>2按設(shè)備名稱統(tǒng)計(jì)n");scanf("%d",&sel);if(sel=1) printf("n輸入你要統(tǒng)計(jì)分類的設(shè)備號(hào):");scanf("%s",find); while(p) if(strcmp(p->data.ID,find)=0) flag2+; if(flag2=1&&ha!=flag2) printf("設(shè)備號(hào) 設(shè)備名稱 設(shè)備種類 報(bào)廢日期 是否報(bào)廢 購(gòu)買時(shí)間 價(jià)格n"); p

18、rintf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.ID,p->,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price); ha=flag2; else if(flag2>ha)printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.ID,p->,p->data.kind,p

19、->data.over,p->data.yesno,p->data.time,p->data.price);ha=flag2; p=p->next; if(flag2) printf("n*按設(shè)備號(hào)%s統(tǒng)計(jì)分類的有%d條記錄:*nn",find,flag2); else printf("n按設(shè)備號(hào)%s統(tǒng)計(jì)的結(jié)果為0個(gè)nn",find);else if(sel=2) printf("n輸入你要統(tǒng)計(jì)分類的設(shè)備名稱:"); scanf("%s",find); while(p) if(strc

20、mp(p->,find)=0) flag2+; if(flag2=1&&ha!=flag2) printf("設(shè)備號(hào) 設(shè)備名稱 設(shè)備種類 報(bào)廢日期 是否報(bào)廢 購(gòu)買時(shí)間 價(jià)格n"); printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.ID,p->,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price); ha=flag2;

21、else if(flag2>ha)printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.ID,p->,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price);ha=flag2; p=p->next; if(flag2) printf("n*按設(shè)備名稱%s統(tǒng)計(jì)的有%d條記錄:*nn",find,flag2); else printf("n按設(shè)備名

22、稱%s統(tǒng)計(jì)分類的結(jié)果為0個(gè)nn",find);else if(sel=0) return;(4)顯示模塊 需求分析 該模塊的功能是查找用戶需要的對(duì)應(yīng)記錄,可以分別根據(jù)設(shè)備編號(hào)、設(shè)備種類、設(shè)備名稱、設(shè)備購(gòu)入日期、正常設(shè)備(未報(bào)廢的)等多種方式查詢。 流程圖詢問用戶想要選擇的搜索方式 y設(shè)備編號(hào)設(shè)備種類設(shè)備名稱設(shè)備購(gòu)入日期是否報(bào)廢yn顯示找到的文件提示沒有找到讓用戶選擇1)返回主菜單2)跳出系統(tǒng) 程序 /*顯示模塊*/void Disp(Node *equip)/輸出記錄Node *p;p=equip->next;if(!p) printf("n>>>&

23、gt;>>>>>>提示:沒有記錄可以顯示!n"); return; printf("tttt顯示結(jié)果n"); printf("設(shè)備號(hào) 設(shè)備名稱 設(shè)備種類 報(bào)廢日期 是否報(bào)廢 購(gòu)買時(shí)間 價(jià)格n"); while(p) printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.ID,p->,p->data.kind,p->data.over,p->data.yesno,p->data.time

24、,p->data.price); p=p->next;4、 設(shè)計(jì)體會(huì)及總結(jié) 經(jīng)過一個(gè)星期的上機(jī)實(shí)踐學(xué)習(xí),使我對(duì)C語言有了更進(jìn)一步的認(rèn)識(shí)和了解,要想學(xué)好它要重在實(shí)踐,要通過不斷的上機(jī)操作才能更好地學(xué)習(xí)它,通過實(shí)踐,我也發(fā)現(xiàn)我的好多不足之處,對(duì)C語言的一些標(biāo)準(zhǔn)庫(kù)函數(shù)不太了解,還有對(duì)函數(shù)調(diào)用的正確使用不夠熟悉,還有對(duì)C語言中經(jīng)常出現(xiàn)的錯(cuò)誤也不了解,通過實(shí)踐,使我在這幾個(gè)方面的認(rèn)識(shí)有所提高。通過實(shí)踐的學(xué)習(xí),我認(rèn)到學(xué)好計(jì)算機(jī)要重視實(shí)踐操作,不僅僅是學(xué)習(xí)C語言,還是其它的語言,以及其它的計(jì)算機(jī)方面的知識(shí)都要重在實(shí)踐,所以后在學(xué)習(xí)過程中,我會(huì)更加注視實(shí)踐操作,使自己便好地學(xué)好計(jì)算機(jī)。參考文獻(xiàn):1

25、. 何欽銘,顏暉,C語言程序設(shè)計(jì),高等教育出版社。2. C語言入門經(jīng)典是2008年清華大學(xué)出版社出版的圖書,作者是霍頓。3. C程序設(shè)計(jì)語言(第2版·新版)Brian WKernighan, Dennis MRitchie徐寶文 李志 譯附錄一: #include <stdio.h>#include <stdlib.h>#include <string.h>struct shebeichar ID10; char name15; char kind15; char over15; char yesno10; char time10; char pr

26、ice10; ;typedef struct nodestruct shebei data;struct node *next; /建立一個(gè)鏈表。Node;void Add(Node *equip) /添加記錄Node *p,*r,*s; char id10; /先用于輸入ID,也用于判斷是否跳出循環(huán)r=equip;s=equip->next; /使s為第一個(gè)有用的結(jié)點(diǎn)while(r->next!=NULL) /這個(gè)循環(huán)的作用是使r為最后一個(gè)有用的結(jié)點(diǎn)r=r->next; /將指針置于最末尾while(1) printf(">>>>>&

27、gt;>>>>提示:輸入0則返回主菜單!n"); printf("n請(qǐng)你輸入設(shè)備ID號(hào):"); scanf("%s",id); if(strcmp(id,"0")=0) break; p=(Node *)malloc(sizeof(Node); /申請(qǐng)空間 strcpy(p->data.ID,id); printf("n請(qǐng)輸入設(shè)備名稱:"); scanf("%s",p->); printf("n請(qǐng)輸入設(shè)備種類:"

28、); scanf("%s",p->data.kind); printf("n請(qǐng)輸入報(bào)廢日期:"); scanf("%s",&p->data.over); printf("n請(qǐng)輸入設(shè)備是否報(bào)廢:"); scanf("%s",&p->data.yesno); printf("n請(qǐng)輸入設(shè)備購(gòu)買時(shí)間:"); scanf("%s",&p->data.time); printf("n請(qǐng)輸入設(shè)備價(jià)格:"

29、); scanf("%s",&p->data.price); printf(">>>>>>>>>>提示:已經(jīng)完成一條記錄的添加。n"); p->next=NULL; r->next=p; /這一步是必需的,將p與先前的鏈表連起來構(gòu)成一條新鏈表 r=p; /也是必需的.將r 又重設(shè)為新鏈的最后一個(gè)有用結(jié)點(diǎn) void Modify(Node *equip)/修改Node *p;char find20;if(!equip->next) printf("n>

30、;>>>>>>>>>提示:沒有資料可以修改!n"); return;printf("請(qǐng)輸入要修改的設(shè)備ID號(hào):"); scanf("%s",find); p=equip->next; while(p!=NULL) if(strcmp(p->data.ID,find)=0) /如果找到的話返回的是符合要求 break; p=p->next; if(p) /若找到 int x; while(1) printf("完成修改請(qǐng)輸入0否則輸入任意數(shù)再進(jìn)行修改:")

31、; scanf("%d",&x); if(x=0) break; printf("請(qǐng)輸入新設(shè)備號(hào)(原來是 %s ):",p->data.ID); scanf("%s",p->data.ID); printf("請(qǐng)輸入新設(shè)備名稱(原來是 %s ):",p->); scanf("%s",p->); printf("請(qǐng)輸入新設(shè)備設(shè)備種類名稱(原來是 %s ):",p->data.kind); scanf(&q

32、uot;%s",p->data.kind); printf("請(qǐng)輸入新設(shè)備報(bào)廢日期名稱(原來是 %s ):",p->data.over); scanf("%s",p->data.over); printf("請(qǐng)輸入新設(shè)備是否報(bào)廢(原來是 %s ):",p->data.yesno); scanf("%s",p->data.yesno); printf("請(qǐng)輸入新設(shè)備購(gòu)買時(shí)間(原來是 %s ):",p->data.kind); scanf("%

33、s",p->data.time); printf("請(qǐng)輸入新設(shè)備價(jià)格(原來是 %s ):",p->data.price); scanf("%s",p->data.price); printf("n>>>>>>>>>>提示:該項(xiàng)記錄資料已經(jīng)成功修改!n"); else printf("n>>>>>>>>>>提示:你要修改的信息不存在!n"); void Disp(Node

34、 *equip)/輸出記錄Node *p;p=equip->next;if(!p) printf("n>>>>>>>>>>提示:沒有記錄可以顯示!n"); return; printf("tttt顯示結(jié)果n"); printf("設(shè)備號(hào) 設(shè)備名稱 設(shè)備種類 報(bào)廢日期 是否報(bào)廢 購(gòu)買時(shí)間 價(jià)格n"); while(p) printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.ID,p->da

35、,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price); p=p->next;void Tongji(Node *equip)/統(tǒng)計(jì)Node *p;int sel;int flag2=0,ha=0;p=equip->next;char find20; if(!equip->next) /若鏈表為空 printf("n>>>>>>>>>>提示:沒有資料可以統(tǒng)計(jì)分類!n");

36、return;printf(">>>>>>>>>>提示:n=>0退出n=>1按設(shè)備號(hào)統(tǒng)計(jì)n=>2按設(shè)備名稱統(tǒng)計(jì)n");scanf("%d",&sel);if(sel=1) printf("n輸入你要統(tǒng)計(jì)分類的設(shè)備號(hào):");scanf("%s",find); while(p) if(strcmp(p->data.ID,find)=0) flag2+; if(flag2=1&&ha!=flag2) printf(

37、"設(shè)備號(hào) 設(shè)備名稱 設(shè)備種類 報(bào)廢日期 是否報(bào)廢 購(gòu)買時(shí)間 價(jià)格n"); printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.ID,p->,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price); ha=flag2; else if(flag2>ha)printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn"

38、,p->data.ID,p->,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price);ha=flag2; p=p->next; if(flag2) printf("n*按設(shè)備號(hào)%s統(tǒng)計(jì)分類的有%d條記錄:*nn",find,flag2); else printf("n按設(shè)備號(hào)%s統(tǒng)計(jì)的結(jié)果為0個(gè)nn",find);else if(sel=2) printf("n輸入你要統(tǒng)計(jì)分類的設(shè)備名稱:"

39、;); scanf("%s",find); while(p) if(strcmp(p->,find)=0) flag2+; if(flag2=1&&ha!=flag2) printf("設(shè)備號(hào) 設(shè)備名稱 設(shè)備種類 報(bào)廢日期 是否報(bào)廢 購(gòu)買時(shí)間 價(jià)格n"); printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.ID,p->,p->data.kind,p->data.over,p->data.yesno,p->data.time

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論