c程序课程设计--实验室管理系统_第1页
c程序课程设计--实验室管理系统_第2页
c程序课程设计--实验室管理系统_第3页
c程序课程设计--实验室管理系统_第4页
c程序课程设计--实验室管理系统_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上 目 录 1需求分析 . 4 2 总体设计 . 4 2.1程序的总体设计 . 4 2.2数据结构. 5 3 详细设计 . 6 3.1主控模块设计 . 6 3.2实验设备信息录入模块设计 . 7 3.3实验设备信息更改模块设计 . 8 3.4实验设备信息删除模块设计 . 9 4主要函数功能描述 . 10 4.1 添加设备函数addEequipment(). 10 4.2 输入到文件函数 fpintE . 10 4.3 修改设备信息函数changeEquipment() . 10 4.4 删除设备信息函数 deleteEquipment() . 10 5 测试与调试. 1

2、1 6 个人设计小结与心得体会 . 12 参考文献 . 12 致谢 . 13 附件1 程序源代码 . 13 1 前言 现在,科学技术的飞速发展把人类社会推向了一个崭新的时代信息时代。这已是无可争议的事实;信息对社会经济发展的巨大推动作用,使其与物质能源一起并列为现代社会的三大支柱,这已在全社会达到共识。随着对信息作为一种资源来管理的需求日益加强,信息研究领域出现了一种新的管理思想和模式信息管理。 计算机管理以其快捷高效的特点在很多领域已经取代了传统的手工管理方式,尤其是在繁复琐碎的物资设备管理中,计算机管理手段的这一优势更显得十分突出。与传统管理方式相比较,设备管理系统能更加有效的进行信息管理

3、。设备管理系统应用数据库,对信息数据以数据库形式表示,更容易更新和管理。传统的管理方式往往以表格的形式进行管理,一旦数据过于庞大,要对这些数据进行管理时,就要花费大量的时间,而且很容易出错。由于现代信息化的普及化,因此现代信息化的设备管理模式很快取代了传统模式的管理方式。 2 摘 要 在此次课程设计中我们小组的课设题目是实验室设备信息管理系统,我们使用软件Visual C+6.0及C语言来完成此次课程设计。我在课设过程中实现了系统的主菜单,设备信息录入,设备信息修改,设备信息删除等功能。利用开发程序对实验室设备进行方便、有效、合理的管理。 系统使用Visual C+6.0。 关键词:数据库;信

4、息管理;Visual C+6.0 3 1需求分析(1)问题 根据需求,该系统所应包含的信息有以下一些: 实验室设备的基本信息: 实验设备编号、实验设备名称、型号、购入时间、价格 根据需求,该系统所应实现的功能有以下一些: 各种基本数据的录入。如:实验室设备基本信息录入。 各种基本数据的修改与删除。即:允许对已经录入的数据重新进行编辑、修改、删除。例如修改或删除实验室设备指定信息 基于各种数据的查询。例如输入实验室设备名称,查询实验室设备的编号、购入时间、价格。 基于各种数据的排序。即:实验室设备按编号排序。 各种数据的浏览。如:浏览实验室设备所有信息。 (2)系统 采用C语言实现,开发环境为V

5、C,可以运行在操作系统windows98及以上皆可。 (3)运行要求 能不受限制的录入实验室设备信息 界面友好,操作方便,例如删除前需要提示用户是否删除 2 总体设计 2.1程序的总体设计 实验室设备信息管理系统 设备设备设备设备维修显示 功能 信息信息信息查 找 记录所有 选 择 录 入 更 改 删 除 管 理 设 备 图1.程序总体设计图 4 2.2数据结构 根据系统要求,系统中需要保存的数据有设备的信息,其结构如表1: 数据项名称 数据项系统表示 数据类型 数据长度 备注 编号 num 字符串 名称 name 字符串 20 型号 model 字符串 20 购入时间 time 字符串 20

6、 价格 price 字符串 20 表1.结构体 使用C语言创建的结构体如下: typedef shebei /*定义数据结构*/ int num; /编号 char name20; /名称 char model20; /型号 bnm char price20; /价格 char buy_date20; /购买日期 struct equipment *next; char repair_time20; typedef shebei * next; ; 5 3 详细设计 3.1主控模块设计 控制整个程序的运行,通过主函数模块分别调用各个模块,实现各项功能,流程如图2所示。 开始 显示一系列功能选择

7、 提示输入有误,操作失败! 输入n,判断m 否 是否0到7? 是 据n值调用各功能模块函数 结束 图2.主模块流程图 6 3.2实验设备信息录入模块设计 信息输入,在系统中输入相关信息流程图如图3所示。 开始 提示输入编号已有,输入失败! 功能选择设备信息录入 是 输入编号,判断是 否存在? 否 依次输入实验设备信息 提示录入成功 结束 图3.实验设备信息录入模块流程图 7 3.3实验设备信息更改模块设计 修改信息,系统要求用户输入要修改的设备编号,用户只需将设备新的 信息按要求输入即可对信息进行修改,流程图如图4。 开始 功能选择设备信息更改 输入编 号,判 是 否 断是否 存在 输入修改后

8、的数据 提示没有设备!请先录 入设备! 结束 图4.实验设备信息更改模块流程图 8 3.4实验设备信息删除模块设计 删除信息,系统要求用户输入要删除的设备编号,输入后即可删除设备 信息,流程图如图5。 开始 提示删除失败,没有找到设备编号! 功能选择设备信息删除 否 输入设备编号,判 读是否存在? 是 提示删除成功 结束 图5.实验设备信息删除模块流程图 9 4主要函数功能描述 4.1 添加设备函数addEequipment() 函数原型:void fprintE(Equipment *head) 功能描述:添加设备信息,如果编号不存在,则输入设备名称、型号、价格、购买日期;如果编号存在,则输

9、入失败。 函数流程图如图3所示。 4.2 输入到文件函数 fpintE 函数原型:void fprintE(Equipment *head) 功能描述:打开"data.txt"文件,将设备当前信息指针指向头部,当设备当前信息不为空,将数目、名称、模型、价格、购买日期按指定格式写入到文本文件中。 4.3 修改设备信息函数changeEquipment()函数原型:void changeEquipment(Equipment *head,int num) 功能描述:先查找设备,如果没有会要求先录入设备,会对设备信息进行修改,包括设备的名称,型号,价格,购买日期,若未找到,会提示

10、操作失败。 函数流程图如图4所示。 4.4 删除设备信息函数 deleteEquipment() 函数原型:void deleteEquipment(Equipment *head,int num) 功能描述:先查找设备,如果没有会要求先录入设备,找到设备后可以删除该设备信息,并提示删除成功。 函数流程图如图5所示。 10 5 测试与调试 1、程序菜单测试 图6 2、设备信息录入测试 测试数据 输入:1 显微镜 111 1234 2013.7 2 望远镜 222 2013.7 图7 3、设备信息更改测试 将设备编号1改为3,型号改为333,价格改为4321,购买时间改为2012.7 图8 4、

11、设备信息删除测试 将设备编号为3的设备信息删除 11 图9 6 个人设计小结与心得体会 经过一周的调查、学习、研究和设计,系统的设计接近了尾声。在这里我将系统设计做如下总结。 1.本系统的功能已经达到设计的要求。系统中各个模块的功能均已实现,为整体 系统的构建奠定了基础。 2.系统模块的功能可以被进一步扩展。 3.系统中模块划分明确,模块功能设计有较强的针对性。 4.系统的设计遵循软件开发的全过程,使我对软件系统的开发过程有了更深刻的 认识。 系统的设计没有完美无缺的,这个系统在某些地方可能存在不足,还需要我们进一步的改进和完善。 参考文献 1 严蔚敏,吴伟民.数据结构(C语言版).北京:清华

12、大学出版社,2007 2 张长海.C语言程设计M.北京:高等教育出版社,2006 3 陈建新,李志敏.数据结构实验指导与课程设计教程.北京:科学出版社,2010 4 吴玉蓉,李劲.数据结构(C语言版).北京:中国水利水电出版社,2008 5 谭浩强 .C语言程设计. 北京:清华大学出版社,2005 6王为青,刘变红. C语言高级编程及实例剖析.北京:人民邮电出版社,2007 7王连相,赵付清.C/C+程序设计教程.北京:中国铁道出版社,2011 12 致谢 在本次课程设计过程中,得到了指导老师张墨逸老师的细心指导与支持。在此特别感谢张墨逸老师的大力帮助同时也特别感谢我的同学他们在我的这次课程设

13、计中给了我很大的帮助。有了张墨逸老师的悉心指导和大力支持,我在总体结构、功能的把握上给予了非常大的帮助,同时给我们提供了非常优越的设计环境,并对我在编程等细节工作上给予了耐心的指导。在此我一并向她表示感谢。通过这次课程设计我还明白了作为一名信息与计算科学专业的学生,我们要会的不仅仅是编写代码,更重要的是要有整体把握系统设计的能力。 附件1 程序源代码 #include <stdio.h>/宏定义函数 #include <malloc.h>/动态存储分配函数头文件 #include <stdlib.h>/调用系统函数 typedef struct equipm

14、ent int num; /编号 char name20; /名称 char model20; /型号 bnm char price20; /价格 char buy_date20; /购买日期 struct equipment *next; char repair_time20; Equipment; void fprintE(Equipment *head); /将设备信息输出到文件 void addEquipment(Equipment *head); /添加设备信息 void deleteEquipment(Equipment *head,int num); /删除设备信息 void c

15、hangeEquipment(Equipment *head,int num); /修改设备信息 void findEquipment(); /设备查找 Equipment* fscanE(); /从文件读取设备信息 void repairEquipment(); / 维修管理 void printList(Equipment *head); /输出设备信息列表 int checkNum(Equipment *head, int num);/检查信息 /将设备信息输出到文件 void addEquipment(Equipment *head) / Equipment *tail = head;

16、指针指向头部 while(tail->next!=NULL) tail = tail->next;/当尾部不为空时,继续 Equipment *newnode = (Equipment*)malloc(sizeof(Equipment);/动态分配空间 printf("请输入设备编号:"); scanf("%d",&newnode->num);/输出数据 if(checkNum(head,newnode->num) printf("输入编号已有,输入失败!"); return; printf("

17、;请输入设备名称:"); scanf("%s",&newnode->name); printf("请输入设备型号:"); scanf("%s",&newnode->model); printf("请输入设备价格:"); scanf("%s",&newnode->price); 13 printf("请输入设备购买日期:"); scanf("%s",&newnode->buy_date); t

18、ail->next = newnode; newnode->next = NULL; fprintE(head); printf("录入成功!"); /将链表输入到文件 void fprintE(Equipment *head) FILE *fp=fopen("data.txt","w"); Equipment *current = head->next; while(current) fprintf(fp,"%dn",current->num); fprintf(fp,"%sn&

19、quot;,current->name); fprintf(fp,"%sn",current->model); fprintf(fp,"%sn",current->price); fprintf(fp,"%sn",current->buy_date); /printf("%d %s %s %s %s ",current->num,current->name,current->model,current->price,current->buy_date); cur

20、rent = current->next; fclose(fp); /删除设备信息 void deleteEquipment(Equipment *head,int num) if(head->next=NULL) printf("没有设备!请先录入设备!"); return; Equipment *current = head; Equipment *current_next = current->next; while(current_next) if(current_next->num=num) current->next = curre

21、nt_next->next; printf("删除成功!"); fprintE(head); return; current = current->next; current_next = current_next->next; printf("删除失败,没有找到设备编号!"); /修改设备信息 void changeEquipment(Equipment *head,int num) if(head->next=NULL) printf("没有设备!请先录入设备!"); return; Equipment *

22、current = head->next; while(current && (current->num!=num) current = current->next; if(current!=NULL) printf("请输入修改后的数据:n"); printf("请输入设备编号:"); scanf("%d",&current->num); printf("请输入设备名称:"); scanf("%s",&current->name);

23、 printf("请输入设备型号:"); scanf("%s",&current->model); printf("请输入设备价格:"); scanf("%s",&current->price); printf("请输入设备购买日期:"); scanf("%s",&current->buy_date); fprintE(head); 14 else printf("操作失败,没有找到设备编号!"); /设备查找 v

24、oid findEquipment() Equipment *head = fscanE(); if(head->next=NULL) printf("没有设备!请先录入设备!"); return; int num; printf("请输入查找设备的编号:"); scanf("%d",&num); while(head) if(head->num=num) printf("编号为%d的信息为:n",num); printf("编号:%dn",head->num); pr

25、intf("名称:%sn",head->name); printf("型号:%sn",head->model); printf("价格:%sn",head->price); printf("购买日期:%sn",head->buy_date); return; head = head->next; printf("查找失败,没有找到设备编号!"); /从文件读取设备信息 Equipment* fscanE() Equipment *head1 = (Equipment

26、*)malloc(sizeof(Equipment); head1->next = NULL; Equipment *current = head1; FILE *fp = fopen("data.txt","r"); while(!feof(fp) Equipment *newnode = (Equipment*)malloc(sizeof(Equipment); fscanf(fp,"%dn",&newnode->num); fscanf(fp,"%sn",newnode->name)

27、; fscanf(fp,"%sn",newnode->model); fscanf(fp,"%sn",newnode->price); fscanf(fp,"%sn",newnode->buy_date); current->next = newnode; newnode->next = NULL; current = current->next; fclose(fp); return head1; /维修信息管理 void repairEquipment() int num; int oper;

28、char time16; printf("请输入维修操作(12):n1.记录t2.查找n"); scanf("%d",&oper); getchar(); switch(oper) case 1: FILE *fp = fopen("myfile.txt","a"); printf("请输入维修编号:"); scanf("%d",&num); printf("请输入维修时间(xxxx-xx-xx):"); scanf("%s&qu

29、ot;,&time); fprintf(fp,"%dn",num); fprintf(fp,"%sn",time); 15 fflush(fp); fclose(fp); printf("记录成功!"); break; case 2: int t = 0; printf("请输入查找编号:"); scanf("%d",&num); int rnum; FILE *fp = fopen("myfile.txt","r"); while(!fe

30、of(fp) fscanf(fp,"%dn",&rnum); fscanf(fp,"%sn",&time); if(rnum=num) printf("编号:%d,维修时间:%sn",rnum,time); t = 1; if(t=0) printf("查询错误,没有找到维修记录!"); fclose(fp); break; default: printf("输入有误,操作失败!"); /输出设备信息列表 void printList(Equipment *head) if(he

31、ad->next=NULL) printf("没有设备,请先录入设备!"); return; Equipment *current = head->next; printf("=n"); printf(" 编号 名称 型号 价格 购买日期 n"); while(current) printf("t%dt%st%st%st%sn",current->num,current->name,current->model,current->price,current->buy_date); current = current->next; printf("=n"); /检查设备编号是否相同 int checkNum(Equipment *head, int num) if(head->next=NULL) return 0; Equipment *current = head->next; while(current) if(current->num = num) return 1; current = current->next; return 0; int main() Equ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论