版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、寧 波 工 程 學(xué) 院2015 2016 學(xué)年第 二 學(xué)期電信學(xué)院C語言課程設(shè)計報告題 目: 實驗室設(shè)備管理系統(tǒng) 班 級: 計科152 姓 名: 孔慶康 學(xué) 號:指導(dǎo)教師: 洪立 2016 年 6 月目錄目錄21、系統(tǒng)功能和結(jié)構(gòu)31.1系統(tǒng)設(shè)計目的31.2系統(tǒng)功能分析31.3系統(tǒng)結(jié)構(gòu)分析42、核心技術(shù)介紹43、函數(shù)功能介紹54、設(shè)計體會及總結(jié)12參考文獻:121、 系統(tǒng)功能和結(jié)構(gòu)1.1系統(tǒng)設(shè)計目的 因為現(xiàn)在各個高校內(nèi)教學(xué)設(shè)備眾多但自動管理水平相比過低,很多高校管理設(shè)備都采用在設(shè)備購進以后將設(shè)備的基本情況和相關(guān)信息登記存檔。存檔以后檔案基本就沒人記錄與維護,至于以后設(shè)備
2、的變遷或損壞都不會記錄在設(shè)備檔案中,即不能體現(xiàn)設(shè)備的即時狀態(tài)。而有些即使有設(shè)備管理系統(tǒng)的單位,就算是能把設(shè)備的即時信息體現(xiàn)在設(shè)備檔案上,但設(shè)備的缺陷處理及設(shè)備缺陷等功能沒有實施,設(shè)備檢修的備品備件情況和檢修成本核算沒有實現(xiàn),整個學(xué)校教學(xué)設(shè)備管理信息化仍處于較低水平。將管理任務(wù)分成小塊,落實到個人并能隨時查詢設(shè)備當前情況和歷史情況,對設(shè)備的可靠性分析有直接作用,使管理人員從手工計算、統(tǒng)計工作中解脫出來。1.2系統(tǒng)功能分析實驗室設(shè)備信息用文件存儲,提供文件的輸入輸出操作;要能夠完成設(shè)備的錄入和修改,需要提供設(shè)備添加和修改操作;實現(xiàn)對設(shè)備進行分類統(tǒng)計,需要提供排序操作;實現(xiàn)對設(shè)備的插敘需要提供查找操
3、作,設(shè)備的查詢可根據(jù)設(shè)備編號、設(shè)備種類、設(shè)備名稱、設(shè)備購入日期、正常設(shè)備(未報廢的)等多種方式查詢;另外還要提供鍵盤式選擇菜單以實現(xiàn)功能選擇。1.3系統(tǒng)結(jié)構(gòu)分析根據(jù)上面的需求分析,可以將這個系統(tǒng)的設(shè)計分為以下模塊 實驗設(shè)備管理系統(tǒng)信息輸入信息添加信息修改信息統(tǒng)計信息搜索2、 核心技術(shù)介紹主函數(shù) 流程圖顯示一系列功能選項輸入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)容放入接點中 q->next=NULL; p->next=q; p=q; /將該接點掛入鏈表中 fclose(fp); /關(guān)閉文件 while(1) printf("*目錄*"); printf("n1添加記錄n"); printf(&q
5、uot;n2修改記錄n"); printf("n3顯示記錄n"); printf("n4統(tǒng)計分類記錄n"); printf("n0*-EXIT-*n"); printf("請輸入你要操作的序號:"); 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)計記錄 default: printf("n>>>>>>>>>>提示:輸入錯誤!n"); break; 3、 函數(shù)功能介紹 (1)輸入模塊 流程圖輸入設(shè)備的各項詳細信息輸入用戶要輸入設(shè)備的個數(shù)i將輸入的信息存儲到文件的中 程序 /*輸入模塊*/#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; /建立一個鏈表。Node;void Add(Node *equip) /添加記錄Node *p,*r,*s; char id10; /先用
8、于輸入ID,也用于判斷是否跳出循環(huán)r=equip;s=equip->next; /使s為第一個有用的結(jié)點while(r->next!=NULL) /這個循環(huán)的作用是使r為最后一個有用的結(jié)點r=r->next; /將指針置于最末尾while(1) printf(">>>>>>>>>>提示:輸入0則返回主菜單!n"); printf("n請你輸入設(shè)備ID號:"); scanf("%s",id); if(strcmp(id,"0")=0) br
9、eak; p=(Node *)malloc(sizeof(Node); /申請空間 strcpy(p->data.ID,id); printf("n請輸入設(shè)備名稱:"); scanf("%s",p->); printf("n請輸入設(shè)備種類:"); scanf("%s",p->data.kind); printf("n請輸入報廢日期:"); scanf("%s",&p->data.over); printf("n請輸入
10、設(shè)備是否報廢:"); scanf("%s",&p->data.yesno); printf("n請輸入設(shè)備購買時間:"); scanf("%s",&p->data.time); printf("n請輸入設(shè)備價格:"); scanf("%s",&p->data.price); printf(">>>>>>>>>>提示:已經(jīng)完成一條記錄的添加。n"); p->ne
11、xt=NULL; r->next=p; /這一步是必需的,將p與先前的鏈表連起來構(gòu)成一條新鏈表 r=p; /也是必需的.將r 又重設(shè)為新鏈的最后一個有用結(jié)點 (2)修改模塊 需求分析 此模塊可以根據(jù)客戶需要對以記錄在文件中的信息進行修改 流程圖 輸入要修改的設(shè)備編號是否找到該設(shè)備資料顯示找到的記錄,調(diào)用修改函數(shù)顯示沒有找到對該設(shè)備的信息進行修改返回主菜單返回主菜單y n 程序 /*修改模塊*/ void Modify(Node *equip)/修改Node *p;char find20;if(!equip->next) printf("n>>>>&
12、gt;>>>>>提示:沒有資料可以修改!n"); return;printf("請輸入要修改的設(shè)備ID號:"); 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("完成修改請輸入0否則輸入任意數(shù)再進行修改:"); scanf("
13、%d",&x); if(x=0) break; printf("請輸入新設(shè)備號(原來是 %s ):",p->data.ID); scanf("%s",p->data.ID); printf("請輸入新設(shè)備名稱(原來是 %s ):",p->); scanf("%s",p->); printf("請輸入新設(shè)備設(shè)備種類名稱(原來是 %s ):",p->data.kind); scanf("%s",p
14、->data.kind); printf("請輸入新設(shè)備報廢日期名稱(原來是 %s ):",p->data.over); scanf("%s",p->data.over); printf("請輸入新設(shè)備是否報廢(原來是 %s ):",p->data.yesno); scanf("%s",p->data.yesno); printf("請輸入新設(shè)備購買時間(原來是 %s ):",p->data.time); scanf("%s",p->
15、data.time); printf("請輸入新設(shè)備價格(原來是 %s ):",p->data.price); scanf("%s",p->data.price); printf("n>>>>>>>>>>提示:該項記錄資料已經(jīng)成功修改!n"); else printf("n>>>>>>>>>>提示:你要修改的信息不存在!n"); 返回主菜單(3)統(tǒng)計模塊 需求分析將已經(jīng)輸入的設(shè)備信息進
16、行統(tǒng)計,并顯示設(shè)備總數(shù)、價格總額等信息流程圖打開文件,并對文件中的設(shè)備信息進行統(tǒng)計計算輸出統(tǒng)計結(jié)果返回主菜單 程序void Tongji(Node *equip)/統(tǒng)計Node *p;int sel;int flag2=0,ha=0;p=equip->next;char find20; if(!equip->next) /若鏈表為空 printf("n>>>>>>>>>>提示:沒有資料可以統(tǒng)計分類!n"); return;printf(">>>>>>>
17、>>>提示:n=>0退出n=>1按設(shè)備號統(tǒng)計n=>2按設(shè)備名稱統(tǒng)計n");scanf("%d",&sel);if(sel=1) printf("n輸入你要統(tǒng)計分類的設(shè)備號:");scanf("%s",find); while(p) if(strcmp(p->data.ID,find)=0) flag2+; if(flag2=1&&ha!=flag2) printf("設(shè)備號 設(shè)備名稱 設(shè)備種類 報廢日期 是否報廢 購買時間 價格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è)備號%s統(tǒng)計分類的有%d條記錄:*nn",find,flag2); else printf("n按設(shè)備號%s統(tǒng)計的結(jié)果為0個nn",find);else if(sel=2) printf("n輸入你要統(tǒng)計分類的設(shè)備名稱:"); scanf("%s",find); while(p) if(strc
20、mp(p->,find)=0) flag2+; if(flag2=1&&ha!=flag2) printf("設(shè)備號 設(shè)備名稱 設(shè)備種類 報廢日期 是否報廢 購買時間 價格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)計的有%d條記錄:*nn",find,flag2); else printf("n按設(shè)備名
22、稱%s統(tǒng)計分類的結(jié)果為0個nn",find);else if(sel=0) return;(4)顯示模塊 需求分析 該模塊的功能是查找用戶需要的對應(yīng)記錄,可以分別根據(jù)設(shè)備編號、設(shè)備種類、設(shè)備名稱、設(shè)備購入日期、正常設(shè)備(未報廢的)等多種方式查詢。 流程圖詢問用戶想要選擇的搜索方式 y設(shè)備編號設(shè)備種類設(shè)備名稱設(shè)備購入日期是否報廢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è)備號 設(shè)備名稱 設(shè)備種類 報廢日期 是否報廢 購買時間 價格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è)計體會及總結(jié) 經(jīng)過一個星期的上機實踐學(xué)習(xí),使我對C語言有了更進一步的認識和了解,要想學(xué)好它要重在實踐,要通過不斷的上機操作才能更好地學(xué)習(xí)它,通過實踐,我也發(fā)現(xiàn)我的好多不足之處,對C語言的一些標準庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,還有對C語言中經(jīng)常出現(xiàn)的錯誤也不了解,通過實踐,使我在這幾個方面的認識有所提高。通過實踐的學(xué)習(xí),我認到學(xué)好計算機要重視實踐操作,不僅僅是學(xué)習(xí)C語言,還是其它的語言,以及其它的計算機方面的知識都要重在實踐,所以后在學(xué)習(xí)過程中,我會更加注視實踐操作,使自己便好地學(xué)好計算機。參考文獻:1
25、. 何欽銘,顏暉,C語言程序設(shè)計,高等教育出版社。2. C語言入門經(jīng)典是2008年清華大學(xué)出版社出版的圖書,作者是霍頓。3. C程序設(shè)計語言(第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; /建立一個鏈表。Node;void Add(Node *equip) /添加記錄Node *p,*r,*s; char id10; /先用于輸入ID,也用于判斷是否跳出循環(huán)r=equip;s=equip->next; /使s為第一個有用的結(jié)點while(r->next!=NULL) /這個循環(huán)的作用是使r為最后一個有用的結(jié)點r=r->next; /將指針置于最末尾while(1) printf(">>>>>&
27、gt;>>>>提示:輸入0則返回主菜單!n"); printf("n請你輸入設(shè)備ID號:"); scanf("%s",id); if(strcmp(id,"0")=0) break; p=(Node *)malloc(sizeof(Node); /申請空間 strcpy(p->data.ID,id); printf("n請輸入設(shè)備名稱:"); scanf("%s",p->); printf("n請輸入設(shè)備種類:"
28、); scanf("%s",p->data.kind); printf("n請輸入報廢日期:"); scanf("%s",&p->data.over); printf("n請輸入設(shè)備是否報廢:"); scanf("%s",&p->data.yesno); printf("n請輸入設(shè)備購買時間:"); scanf("%s",&p->data.time); printf("n請輸入設(shè)備價格:"
29、); scanf("%s",&p->data.price); printf(">>>>>>>>>>提示:已經(jīng)完成一條記錄的添加。n"); p->next=NULL; r->next=p; /這一步是必需的,將p與先前的鏈表連起來構(gòu)成一條新鏈表 r=p; /也是必需的.將r 又重設(shè)為新鏈的最后一個有用結(jié)點 void Modify(Node *equip)/修改Node *p;char find20;if(!equip->next) printf("n>
30、;>>>>>>>>>提示:沒有資料可以修改!n"); return;printf("請輸入要修改的設(shè)備ID號:"); 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("完成修改請輸入0否則輸入任意數(shù)再進行修改:")
31、; scanf("%d",&x); if(x=0) break; printf("請輸入新設(shè)備號(原來是 %s ):",p->data.ID); scanf("%s",p->data.ID); printf("請輸入新設(shè)備名稱(原來是 %s ):",p->); scanf("%s",p->); printf("請輸入新設(shè)備設(shè)備種類名稱(原來是 %s ):",p->data.kind); scanf(&q
32、uot;%s",p->data.kind); printf("請輸入新設(shè)備報廢日期名稱(原來是 %s ):",p->data.over); scanf("%s",p->data.over); printf("請輸入新設(shè)備是否報廢(原來是 %s ):",p->data.yesno); scanf("%s",p->data.yesno); printf("請輸入新設(shè)備購買時間(原來是 %s ):",p->data.kind); scanf("%
33、s",p->data.time); printf("請輸入新設(shè)備價格(原來是 %s ):",p->data.price); scanf("%s",p->data.price); printf("n>>>>>>>>>>提示:該項記錄資料已經(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è)備號 設(shè)備名稱 設(shè)備種類 報廢日期 是否報廢 購買時間 價格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)計Node *p;int sel;int flag2=0,ha=0;p=equip->next;char find20; if(!equip->next) /若鏈表為空 printf("n>>>>>>>>>>提示:沒有資料可以統(tǒng)計分類!n");
36、return;printf(">>>>>>>>>>提示:n=>0退出n=>1按設(shè)備號統(tǒng)計n=>2按設(shè)備名稱統(tǒng)計n");scanf("%d",&sel);if(sel=1) printf("n輸入你要統(tǒng)計分類的設(shè)備號:");scanf("%s",find); while(p) if(strcmp(p->data.ID,find)=0) flag2+; if(flag2=1&&ha!=flag2) printf(
37、"設(shè)備號 設(shè)備名稱 設(shè)備種類 報廢日期 是否報廢 購買時間 價格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è)備號%s統(tǒng)計分類的有%d條記錄:*nn",find,flag2); else printf("n按設(shè)備號%s統(tǒng)計的結(jié)果為0個nn",find);else if(sel=2) printf("n輸入你要統(tǒng)計分類的設(shè)備名稱:"
39、;); scanf("%s",find); while(p) if(strcmp(p->,find)=0) flag2+; if(flag2=1&&ha!=flag2) printf("設(shè)備號 設(shè)備名稱 設(shè)備種類 報廢日期 是否報廢 購買時間 價格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等.壓縮文件請下載最新的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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位管理制度集合大合集人員管理篇
- 單位管理制度匯編大合集人力資源管理
- 《家具導(dǎo)購圣經(jīng)》課件
- 單位管理制度分享匯編職員管理篇十篇
- 單位管理制度分享大全職工管理十篇
- 2024教科室工作計劃
- 單位管理制度呈現(xiàn)合集職工管理篇十篇
- 《投資管理復(fù)習(xí)》課件
- 《市場考察報告》課件
- 《廣告效果的測定》課件
- 設(shè)備維護檢查修理三級保養(yǎng)記錄表
- 施工安全風(fēng)險分析及應(yīng)對措施表
- 《針灸推拿》題庫
- 2023年上海市初中物理競賽復(fù)賽試題銀光杯
- GB/T 20475.2-2006煤中有害元素含量分級第2部分:氯
- GB 18218-2000重大危險源辨識
- 神通數(shù)據(jù)庫管理系統(tǒng)v7.0企業(yè)版-2實施方案
- 油田視頻監(jiān)控綜合應(yīng)用平臺解決方案
- 福建省泉州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細及行政區(qū)劃代碼
- 酒精性腦病的護理查房實用版課件
- 三年級新教科版科學(xué)《我們來做-“熱氣球”》說課稿
評論
0/150
提交評論