#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>typedef struct equipment{int num;   //编号char name[20];  //名称char model[20];     //型号char factory[20];   //厂家char buy_date[20];  //购买日期struct equipment *next;char repair_time[20];
}Equipment;void fprintE(Equipment *head);  //将设备信息输出到文件
void addEquipment(Equipment *head);     //添加设备
void deleteEquipment(Equipment *head,int num);  //删除设备
void changeEquipment(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;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("请输入设备名称:");scanf("%s",&newnode->name);printf("请输入设备型号:");scanf("%s",&newnode->model);printf("请输入设备厂家:");scanf("%s",&newnode->factory);printf("请输入设备购买日期:");scanf("%s",&newnode->buy_date);tail->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,"%d\n",current->num);fprintf(fp,"%s\n",current->name);fprintf(fp,"%s\n",current->model);fprintf(fp,"%s\n",current->factory);fprintf(fp,"%s\n",current->buy_date);//printf("%d %s %s %s %s ",current->num,current->name,current->model,current->factory,current->buy_date);current = 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 = current_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 *current = head->next;while(current && (current->num!=num)){current = current->next;}if(current!=NULL){printf("请输入更新后的数据:\n");printf("请输入设备编号:");scanf("%d",¤t->num);printf("请输入设备名称:");scanf("%s",¤t->name);printf("请输入设备型号:");scanf("%s",¤t->model);printf("请输入设备厂家:");scanf("%s",¤t->factory);printf("请输入设备购买日期:");scanf("%s",¤t->buy_date);fprintE(head);}else{printf("操作失败,没有找到设备编号!");}
}//设备查找
void 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("编号:%d\n",head->num);printf("名称:%s\n",head->name);printf("型号:%s\n",head->model);printf("厂家:%s\n",head->factory);printf("生产日期:%s\n",head->buy_date);return;}head = head->next;}printf("查找失败,没有找到设备编号!");}//从文件读取设备信息
Equipment* fscanE(){Equipment *head1 = (Equipment*)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,"%d\n",&newnode->num);fscanf(fp,"%s\n",newnode->name);fscanf(fp,"%s\n",newnode->model);fscanf(fp,"%s\n",newnode->factory);fscanf(fp,"%s\n",newnode->buy_date);current->next = newnode;newnode->next = NULL;current = current->next;}close(fp);return head1;
}//维修信息管理
void repairEquipment(){int num;int oper;char time[16];printf("请输入维修操作(1~2):\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",&time);fprintf(fp,"%d\n",num);fprintf(fp,"%s\n",time);fflush(fp);close(fp);printf("记录成功!");break;}case 2:{int t = 0;printf("请输入查找编号:");scanf("%d",&num);int rnum;FILE *fp = fopen("myfile.txt","r");while(!feof(fp)){fscanf(fp,"%d\n",&rnum);fscanf(fp,"%s\n",&time);if(rnum==num){printf("编号:%d,维修时间:%s\n",rnum,time);t = 1;}}if(t==0){printf("查询错误,没有找到维修记录!");}close(fp);break;}default:{printf("输入有误,操作失败!");}}
}//输出设备信息列表
void printList(Equipment *head){if(head->next==NULL){printf("没有设备,请先录入设备!");return;}Equipment *current = head->next;printf("=====================================================\n");printf("    编号  名称  型号      厂家      生产日期  \n");while(current){printf("\t%d\t%s\t%s\t%s\t%s\n",current->num,current->name,current->model,current->factory,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(){Equipment *head = (Equipment*)malloc(sizeof(Equipment));head->next = NULL;int num = -1;while(num!=0){printf("~~~~~~~~~~~~~欢迎进入实验室设备管理系统!~~~~~~~~~~~\n");printf("\n~~~~~~~~~~请输入您选择的操作(0~7):~~~~~~~~~~~~~~\n");printf("1.设备信息录入\t2.设备信息更改\t");printf("3.设备信息删除\n4.设备查找\t5.维修记录管理\t6.显示所有设备\n\t7.关于\t\t\t0.退出\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");scanf("%d",&num);int num1;system("cls");switch(num){case 0:{break;}case 1:{addEquipment(head);break;}case 2:{printf("请输入更改信息的设备编号:");scanf("%d",&num1);getchar();changeEquipment(head,num1);break;}case 3:{printf("请输入需要删除的设备编号:");scanf("%d",&num1);getchar();deleteEquipment(head,num1);break;}case 4:{findEquipment();break;}case 5:{repairEquipment();break;}case 6:{printList(head);break;}case 7:{printf("*************************************\n");printf("\t实验名称:实验室设备管理系统\n");printf("\t系统版本:2.0\n");printf("\t系统作者:pisces_hao\n");printf("*************************************\n");break;}default:{printf("输入有误,操作失败!");}}system("Pause");system("cls");}return 0;
}

实验室设备管理系统(C语言实现)相关推荐

  1. C语言实验室设备管理系统

    C语言实验室设备管理系统 设计主界面 主界面中分为9个选项,设备信息录入,设备信息更改,删除,查找,维修记录管理,显示所有设备,使用手册,关于系统,退出,用户可进行功能选择 设备信息录入 包括设备编号 ...

  2. 数据结构课程设计--实验室设备管理系统(c语言)

    #include <stdio.h> //标准输入输出函数库 #include <stdlib.h> //标准函数库 #include <string.h> //字 ...

  3. C语言课程设计-实验室设备管理系统

    设计要求 实验室设备管理系统应包含各种设备的全部信息,每台设备为一条记录(同一时间同一部门购买的若干台相同设备可作为1条记录),包括设备号.设备名称.领用人.所属部门.数量.购买时间.价格等.能够完成 ...

  4. asp毕业设计—— 基于asp+access的实验室设备管理系统设计与实现(毕业论文+程序源码)——实验室设备管理系统

    基于asp+access的实验室设备管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的实验室设备管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...

  5. Java计算机毕业设计实验室设备管理系统演示录像2020源码+系统+数据库+lw文档

    Java计算机毕业设计实验室设备管理系统演示录像2020源码+系统+数据库+lw文档 Java计算机毕业设计实验室设备管理系统演示录像2020源码+系统+数据库+lw文档 本源码技术栈: 项目架构:B ...

  6. c语言实验报告管理系统,C语言实验报告-学生信息资管理系统.doc

    C语言实验报告-学生信息资管理系统 C语言实验报告 院系: 数学与计算科学学院 班级: 信息与计算科学2班 姓名: 学号: 2011年12月21日 一.问题描述 编写一个信息管理系统,包括姓名.性别. ...

  7. 基于Javaweb实现实验室设备管理系统

    项目编号:BS-XX-013 本项目基于JSP/Servlet技术实现开发,开发工具采用IDEA或ECLIPSE,数据库采用MYSQL数据库. 首次使用,需要进入src/com/util/DBOK 修 ...

  8. c语言程序设计家庭收支类,家庭支出管理系统—c语言程序设计

    家庭支出管理系统-c语言程序设计 (38页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 程序设计报告( 2015 / 2016 学年 ...

  9. c语言编程员工信息排序,员工工资管理系统(c语言编程)

    <员工工资管理系统(c语言编程)>由会员分享,可在线阅读,更多相关<员工工资管理系统(c语言编程)(6页珍藏版)>请在人人文库网上搜索. 1.include #include# ...

  10. 用c语言编写图书成绩管理系统,学生成绩管理系统(c语言编写).doc

    学生成绩管理系统(c语言编写) C程序 学生管理系统 /* Note:Your choice is C IDE */ #include "stdio.h" #include&quo ...

最新文章

  1. A - Supercentral Point CodeForces - 165A
  2. dealloc 的水,很深?
  3. ogre研究之第一个程序(二)
  4. 如何给腾讯云域名申请免费的SSL证书
  5. 七牛直播云服务技术揭秘
  6. 程序员常用的泛型机制究竟怎么玩?
  7. 4个Shell小技巧,帮你提高机器学习生产效率
  8. 配置MAC地址表实现绑定和过滤
  9. svn之回滚到指定版本
  10. jzoj 3456 恭介的法则
  11. C# 装箱和拆箱,以及使用场景
  12. python匠心之作——集合
  13. 2022最常用且好用的IDEA插件
  14. STM32的串口传输文件和点阵汉字的字模读取与显示
  15. 列表中的导航菜单的制作
  16. win7双击计算机 出现windows无法访问指定设备,win7系统提示“Windows无法访问指定设备路径或文件”的解决方法...
  17. 数据分析~案例:中国五大城市PM2.5数据分析
  18. 系统首页优化-合并数据请求并发处理数据
  19. 基于樽海鞘算法的极限学习机(ELM)回归预测-附代码
  20. 下载iTunes12.6.3(商业版)-内置App Store

热门文章

  1. win10设置计算机关机时间,最新版:如何在Win10计算机上设置计划的关机时间? Windows 10计算机设置定时关机命令...
  2. Your Uninstaller! 注册码
  3. 锂电池容量电压对照表_商业化磷酸铁锂电池PK三元锂电池 谁更胜一筹?
  4. VTK学习之激光点云动态库封装(排水管道)
  5. 第6章 分支语句和逻辑运算符
  6. 高通SM660平台GPS 简介
  7. 学习逆向知识之用于游戏外挂的实现.第三讲,通过游戏外挂.分析红色警戒金钱基址.以及确定基址小技巧....
  8. 瞬态二极管,有哪些?
  9. scp构造端口_scp端口号(scp默认端口号)
  10. 基础二:晶体与各向异性