1、实验室设备管理系统设计1 作者: 日期:2 个人收集整理 勿做商业用途1。 设计课题内容实验设备管理系统设计实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等.主要功能:1、能够完成对设备的录入和修改。2、对设备进行分类统计.3、设备的破损耗费和遗损处理.4、设备的查询。2. 应用程序的详细功能说明 该实验设备管理系统采用纯C语言编写,使用者能实验该管理系统方便、直观地对实验设备进行管理操作,如对实验设备信息的录入、实验设备信息的修改、查询需要的目标设备的信息并对其进行统计等等。 程序分两大系统,一是管理系统,二是查询系
2、统。 在管理系统中 1。 建立链表储存设备信息:输入新的设备信息,若当前设备管理系统中的设备还未录入时,建立新的链表来储存当前输入的设备信息,并返回链表的头指针指向第一个输入的设备的信息。 2. 插入新的设备信息:输入新的设备信息,且当前设备管理系统中的链表非空,则将新的设备信息插入链表,并返回链表头指针. 3。 修改设备信息:若对已有的设备的信息需要修改,则按设备编号进行查找,在成功找到该设备时,并选择需要修改的信息进行修改。 4. 删除设备信息:若已有设备的信息错误或该设备不可用即已经报废,则要对该条信息进行删除处理。5。 对设备进行遗损处理:当设备将要报废或已报废时则删除该设备的相关信息
3、,并通知。 在查询系统中 1. 查找设备信息:当需要查看已有的设备信息对设备进行进一步的管理和维护时,就可按设备编号、设备类型、设备名称、设备购入价格、设备购入时间、设备报废时间、设备是否可用对已有设备信息进行检索,同时也可选择查看所有设备信息.并且能在程序的根目录下的result.txt文件中查看信息。 3。 输入数据类型、格式和内容控制输入实验设备的信息:设备编号为整形;设备类型为10个字符;设备名称为20个字符;设备购入价格为浮点型,输出时保留一位小数;设备购入时间为整形设备报废时间为整形;设备是否可用为整形,记0为不可用,1为可用;4. 主要模块的算法描述4.1 简单算法描述1. 新的
4、设备信息添加到链表2. 删除错误和无用的设备信息3. 查找所需相关类型信息的设备信息4. 修改设备信息建立带头节点的链表head=tail=NULL输入设备信息num!=0指针申请内存单元p=(struct ShiyanEquip *) malloc(SIZE)p-next=NULLhead=NULLhead=ptail-next=ptail=p输入新设备信息返回头指针headNYYN4。2 流程图显示将新的设备信息插入链表指针申请内存单元pt2=(struct ShiyanEquip *) malloc (SIZE)链表为空head=NULLpt1=headhead=pt2head-next
5、=NULLpt2-next=pt-nextpt-next=pt2输入信息返回头指针headYN 删除节点操作的算法流程图输入要删除的设备的编号num链表是否为空head=NULL判断要删除的是否为头结点head-num=numpt1=headpt2=head-nextpt2!=NULLpt-num=numreturn NULLpt2=headhead=head-nextfree(pt2)pt1=pt2pt2=pt1-nextpt1-next=pt2-nextfree(pt2)返回头指针headYNYNYNYN5。结束语在课程设计中,我体会颇多,学到很多东西。我加强了对C的认识,复习了自己以前的
6、知识,自己的逻辑思考能力也提高不少.从而对Microsoft Visual C+ 6.0开发环境又有了更深入的认识!在这次课程设计中,我还总结了程序开发的一些比较重要的步骤,比如需求分析、总体设计、数据库设计(含概念设计、逻辑设计、物理设计)、程序模块设计(含功能需求、用户界面设计、程序代码设计与分析、运行结果)、系统使用说明等.这次课程设计激发了我对编程的兴趣和热情,让我从一个只懂理论变成了能做一些小型程序的人,使我对编程更加热爱了。在这次的课程设计中我考虑了很多的东西,产生了许多的问题,通过对资料的查找和筛选,我也找到了这些问题的解决办法,这使我有了很大的成就感,让我对编写程序有了更浓烈的
7、兴趣和信心。相信在以后的设计中我会提交出更加优秀的作品!6。课程设计源程序清单include include stdlib.h#include include conio.h#include windows。hdefine SIZE sizeof(struct ShiyanEquip)struct ShiyanEquipint num;char type10,name20;double price;int btime;int otime;int able;struct ShiyanEquip * next;;/=函数声明struct ShiyanEquip NewList();struct S
8、hiyanEquip * InsertNode( struct ShiyanEquip *head, struct ShiyanEquip newin);void SearchNode( struct ShiyanEquip head);void SearchNode_num( struct ShiyanEquip head, int num);void SearchNode_type( struct ShiyanEquip *head, char type);void SearchNode_name( struct ShiyanEquip head, char name);void Sear
9、chNode_price( struct ShiyanEquip head, double price);void SearchNode_btime( struct ShiyanEquip *head, int btime);void SearchNode_otime( struct ShiyanEquip *head, int otime);void SearchNode_able( struct ShiyanEquip head, int able);struct ShiyanEquip Delete_num( struct ShiyanEquip *head, int num);void
10、 ChangeNode(struct ShiyanEquip *head,int num);void Dealwithpass( struct ShiyanEquip * head , int nowtime);struct ShiyanEquip manage();void search(struct ShiyanEquip * head);static count=0;int main(void) struct ShiyanEquip * head=NULL;char chose;doprintf(”*Wlecome to use my program *nn”);printf(*Here
11、 is the Menu *n);printf(*No。1:管理系统 *n”);printf(No。2:查询系统 n”);printf(”*No.:退出系统 *n);printf(*n);scanf(%s,chose);switch(chose)case 1:head=manage();break;case 2:search(head);break;case #:system(”cls”);printf(*Thankyou for using my program *nn);exit(0);while (1);return 0;/=管理系统struct ShiyanEquip manage()
12、char chose2;int num,nowtime;char type10,name20;double price;int btime;int otime;int able;struct ShiyanEquip pcurr, head;system(”cls”);dosystem(cls);printf(”* 管理系统 *n”);printf(”No.1:建立新实验器材管理清单 *n);printf(”*No。2:插入新的实验器材 *n”);printf(*No.3:删除目标器材信息 *n);printf(”*No.4:修改目标器材信息 *n”);printf(*No.5:遗损处理 *n”
13、);printf(”*No。#:返回上级菜单 *n”);printf(*n);scanf(s,&chose2);switch(chose2)case 1:head=NewList();break;case 2:pcurr=(struct ShiyanEquip )malloc(SIZE);printf(=输入实验器材的编号,类型,名称,价格,购入时间,报废时间,是否可用(0:报废;1:可用)=n); scanf(”d%s%s%lf%d%dd”,num,type,name,&price,&btime,&otime,&able);pcurr-num=num;strcpy(pcurr-type,ty
14、pe);strcpy(pcurrname,name);pcurrprice=price;pcurrbtime=btime;pcurr-otime=otime;pcurrable=able;head=InsertNode(head,pcurr);break;case 3:printf(=请输入要删除的实验器材的编号=:);scanf(%d,num);head=Delete_num(head,num);break;case 4:printf(”=请输入要修改的实验器材的编号=:”);scanf(”%d,num);ChangeNode(head,num);break;case 5:printf(=请
15、输入现在的日期=”);scanf(”d”,nowtime);Dealwithpass(head,nowtime);break;case #:system(”cls”);return head;while ( 1);return head;struct ShiyanEquip NewList()/=新建链表int num;char type10,name20;double price;int btime;int otime;int able;struct ShiyanEquip p, head,* tail;head=tail=NULL;printf(录入实验器材的信息。.。n”); print
16、f(”=输入实验器材的编号,类型,名称,价格,购入时间,报废时间,是否可用(0:报废;1:可用)=n);scanf(”d%s%s%lfdd%d,&num,type,name,&price,&btime,&otime,&able);while ( num != 0)p=(struct ShiyanEquip *)malloc(SIZE);p-num=num;strcpy(ptype,type);strcpy(p-name,name);p-price=price;p-btime=btime;p-otime=otime;p-able=able;p-next = NULL;if (head = NUL
17、L)head = p;else tail-next = p;tail = p;printf(”=输入实验器材的编号,类型,名称,价格,购入时间,报废时间,是否可用(0:报废;1:可用)=n”);scanf(ds%slf%d%dd”,&num,type,name,price,btime,&otime,&able);return head;struct ShiyanEquip InsertNode (struct ShiyanEquip head,struct ShiyanEquip *newin)/插入节点struct ShiyanEquip pt1,* pt2;pt1=head;pt2=new
18、in;if (head = NULL)head = pt2;head -next = NULL;count+;elsept2 next = pt1 next;pt1 -next = pt2;count+;return head;struct ShiyanEquip * Delete_num( struct ShiyanEquip * head,int num)/=删除节点struct ShiyanEquip * pt1,* pt2;if ( head = NULL )return NULL;elseif ( head - num = num)pt2 = head;head = head nex
19、t;free(pt2);count-;return head;elsept1 = head;pt2 = head next;if (pt2 != NULL)if (pt2 - num = num)pt1 - next = pt2 - next;free(pt2);count-;elsept1 = pt2;pt2 = pt1 next;return head;void ChangeNode(struct ShiyanEquip *head,int num)/=更改节点char type10,name20;double price;int btime;int otime;int able;int
20、flag=0,chose4; struct ShiyanEquip pt; if (head = NULL) printf(”=抱歉,没有任何信息!=n); return; for( pt = head; pt ; pt = pt - next) if(pt-num = num) printf(”=选择要修改的信息=n”); printf(=1.编号 =n”); printf(”=2.类型 =n); printf(”=3.名称 =n”); printf(”=4。价格 =n”); printf(”=5。购入时间 =n”); printf(=6.报废时间 =n”); printf(=7。是否可用
21、=n);switch(chose4)case 1:printf(”=请输入新的信息=”);scanf(”%d,&num);pt-num=num;break;case 2:printf(=请输入新的信息=);scanf(%s,type);strcpy(pttype,type);break;case 3:printf(=请输入新的信息=);scanf(%s”,name);strcpy(ptname,name);break;case 4:printf(=请输入新的信息=);scanf(”lf”,&price);pt-price=price;break;case 5:printf(”=请输入新的信息=
22、);scanf(d”,btime);pt-btime=btime;break;case 6:printf(=请输入新的信息=”);scanf(”%d”,otime);ptotime=otime;break;case 7:printf(=请输入新的信息=”);scanf(d”,&able);ptable=able;break; /=查询系统void search(struct ShiyanEquip head)int num;char type10,name20;double price;int btime;int otime;int able;char chose3;system(”cls”)
23、;dosystem(”cls”);printf(”* 查询系统 *n”);printf(*No.1:按编号查找 *n”);printf(*No.2:查找统一价格 *n”);printf(*No.3:查找同一类型 n”);printf(*No.4:查找同一名称 *n”);printf(”*No.5:查找按购入日期 *n);printf(”*No。6:查找按报废日期 *n);printf(*No。7:查找按是否可用 *n”);printf(”*No.8:显示全部器材信息 *n);printf(No.:返回上一级菜单 *n”);printf(*n”);scanf(”s”,chose3);switch
24、(chose3)case 1:printf(”=请输入要查找的编号=”);scanf(d,&num);SearchNode_num(head,num);break;case 2:printf(”=请输入想要查看的价格=”);scanf(lf”,price);SearchNode_price(head,price);break;case 3:printf(”=请输入想要查找的类型=);scanf(”%s,type);SearchNode_type(head,type);break;case 4:printf(=请输入想要查看的名称=”);scanf(%s,name);SearchNode_nam
25、e(head,name);break;case 5:printf(”=请输入想要查看的购入时间=”);scanf(”d,&btime);SearchNode_btime(head,btime);break;case 6:printf(”=请输入想要查看的报废时间=);scanf(d”,&otime);SearchNode_otime(head,otime);break;case 7:printf(”=请输入要查看是否可用的器材(0:报废;1:可用)=”);scanf(”%d,&able);SearchNode_able(head,able);break;case 8:SearchNode(he
26、ad);break;case #:system(cls”);return;while ( 1);void SearchNode_num( struct ShiyanEquip head, int num)/按编号查找 FILE *fp; if ( fp = fopen(”result。txt”,w”) = NULL) printf(”=文件打开错误!=n); exit(0); int flag=0; struct ShiyanEquip *pt; if (head = NULL) printf(=抱歉,没有任何信息!=n); for( int i=5;i0;i-)printf(d秒后请重新操作
27、n,i); Sleep(1000); return; for( pt = head; pt ; pt = pt - next) if(ptnum = num) flag=1; printf(”=n); printf(=编号%d n”,pt-num); printf(”=类型%s n,pttype); printf(=名称s n”,pt-name); printf(=价格.1lf n”,ptprice); printf(=购入时间%d n,ptbtime); printf(”=报废时间d n,pt-otime); printf(=是否可用%d n”,pt-able); printf(=n); f
28、printf(fp,”=n”); fprintf(fp,=编号d n,pt-num); fprintf(fp,=类型s n,pt-type); fprintf(fp,”=名称s n,ptname); fprintf(fp,”=价格.1lf n”,ptprice); fprintf(fp,=购入时间%d n,ptbtime); fprintf(fp,”=报废时间%d n”,pt-otime); fprintf(fp,=是否可用d n”,ptable); fprintf(fp,”=n); for( int i=10;i0;i) Sleep(1000); printf(=可以在文件result。tx
29、t中查看更多=n); if ( flag = 0)printf(”=抱歉没有找到您所要查找的器材=n”);for( int i=5;i0;i)printf(d秒后请重新操作n”,i); Sleep(1000); if ( fclose(fp) ) printf(”=文件关闭错误=n); exit(0); void SearchNode_type( struct ShiyanEquip *head, char type)/按类型查找 FILE *fp; if (( fp = fopen(”result。txt”,w)) = NULL) printf(”=文件打开错误!=n); exit(0);
30、int countS=0; struct ShiyanEquip *pt; if (head = NULL) printf(”=抱歉,没有任何信息!=n); for( int i=5;i0;i-)printf(d秒后请重新操作n,i); Sleep(1000); return; for( pt = head; pt ; pt = pt - next) if (strcmp(pttype,type) = 0) countS+; printf(”=n); printf(”=编号%d n”,pt-num); printf(=类型%s n”,pt-type); printf(”=名称s n”,pt-n
31、ame); printf(”=价格%.1lf n,ptprice); printf(”=购入时间d n,pt-btime); printf(”=报废时间d n,pt-otime); printf(=是否可用d n”,ptable); printf(=n”); fprintf(fp,”=n”); fprintf(fp,=编号%d n,pt-num); fprintf(fp,”=类型s n”,pttype); fprintf(fp,”=名称s n,ptname); fprintf(fp,”=价格%。1lf n,pt-price); fprintf(fp,=购入时间%d n,pt-btime); f
32、printf(fp,”=报废时间d n”,pt-otime); fprintf(fp,=是否可用%d n,ptable); fprintf(fp,”=n); for( int i=10;i0;i-) Sleep(1000); if ( countS = 0) printf(=抱歉没有找到您所要查找的器材=n);for( int i=5;i0;i)printf(%d秒后请重新操作n,i); Sleep(1000); else printf(”=共查找到d条信息=n,countS); printf(=可以在文件result。txt中查看更多=n); fprintf(fp,”=共查找到%d条信息=n
33、”,countS); for( int i=5;i0;i)printf(”d秒后请重新操作n,i); Sleep(1000); if ( fclose(fp) ) printf(=文件关闭错误=n”); exit(0); void SearchNode_name( struct ShiyanEquip *head, char name)/按名称查找FILE *fp; if (( fp = fopen(result.txt”,w)) = NULL) printf(=文件打开错误!=n”); exit(0); int countS=0; struct ShiyanEquip pt; if (head = NULL) printf(”=抱歉,没有任何信息!=n); for( int i=5;i0;i)printf(”%d秒后请重新操作n,i); Sleep(1000); return; for( pt = head; pt ; pt = pt next) if (strcmp(pt name,name) = 0) countS+; printf(”=n”); printf(”=编号d n”,pt-num); printf(”=类型s n”,pttype); printf(”=名称s n”,ptname); printf(=价格%.1lf