C语言-实验室设备管理系统精编版
- 格式:doc
- 大小:79.00 KB
- 文档页数:11
二○一五~二○一六学年第一学期电子与信息工程系课程设计报告书课程名称:程序设计基础实践班级:学号:姓名:指导教师:二○一五年十二月1..实验室设备信息管理系统功能(1). 每一条记录包括实验室的设备编号、设备名称、设备型号、设备价格、设备购买日期信息。
(2). 实验设备信息录入:可以一次完成诸多条记录的录入。
(3). 实验设备信息更改:可实现对实验设备信息更改的信息进行适当的修改。
(4). 报废设备信息删除:对实验损毁设备信息予以删除。
(5). 实验设备信息查询:本系统提供两种查询实验设备的方法:1.按器材名称查询.2.按器材编号查询.从而完成按实验设备的查找查找功能,并显示。
(6). 实验设备信息排序:根据实验设备的编号进行排序,以实现实验设备的有序全局查看。
实验设备信息显示功能:完成全部学生记录的显示。
(7). 简单帮助:提供实验室负责人简单的信息。
(8). 保存功能:将学生记录保存在任何自定义的文件中,如保存在:c:\score。
(9). 读取功能:将保存在文件中的学生记录读取出来。
(10). 有一个清晰美观界面来调用各个功能2.设计内容2.1 程序的总体设计整个系统除了主函数外,另外还有11个函数,实现以下功能:实验室设备录入功能、显示功能、查找功能、排序功能、读出与写入取功能。
各个函数的详细设计说明分别如下:2.2 数据结构使用C语言创建的结构体如下:typedef Equipment /*定义数据结构*/{char bianhao; //编号char name[20]; //名称char model[20]; //型号bnmchar price[20]; //价格char buy_date[20]; //购买日期};3 详细设计3.1实验设备管理系统主程序模块设计控制整个程序的运行,通过主函数模块分别调用各个模块,实现各项功能,流程如图1所示。
通过switch进入分支结构从而调用执行不同的函数,以实现菜单选择的功能。
实验设备管理系统c语言版精选文档TTMS system office room 【TTMS16H-TTMS2A-TTMS8Q8-4 .主要代码段分析(1).添加模块主要是实现设备的添加,输入添加的设备个数,然后用for循环语句,循环次数是你输入的设备个数。
循环输出设备的编号,种类名称,用fopen打开文件,w写方式实现首次添加。
int addition() /*添加模块*/{EquInfo news[50];int i,j,c;FILE *fp;system("cls");printf("你想输入多少个设备\n");scanf("%d",&i); /*输入要添加的设备个数*/for(j=0;j<i;j++){ printf("------------------\n");printf("输入设备编号\n");scanf("%s",&news[j].equipCode);printf("输入设备种类\n");scanf("%s",news[j].equipType);……if((fp=fopen("","w"))==NULL) /*打开文件,输入保存*/{printf("不能打开文件!\n");}for (j=0;j<i;j++){ fprintf(fp,"%s %s %s %f %s %d %s",news[j].equipCode,news[j].equipType,news[j].equipName,news[j].equip Price,news[j].buyDate,news[j].scrap,news[j].scrapDate); }fclose(fp);printf("\n-----------------------\n");printf("返回主菜单 \n");printf("1.是\n");printf("2.不,退出\n");scanf("%d",&c);if((fp=fopen("","a"))==NULL)quipCode,newequ[j].equipType,newequ[j].equipName,newequ[j].equip Price,newequ[j].buyDate,newequ[j].scrap,newequ[j].scrapDate);}fclose(fp);四、调试过程(1 .测试数据设计 2 .测试结果分析)(1)测试数据设计:进入主菜单:根据需求操作,按“1”添加信息,以便测试设备个数:2设备编号:1设备各类:abc设备名称:switch设备价格:90购买日期:是否报废:0报废日期:0(2)测试结果分析:1.主菜单函数:根据需求输入相应的操作主菜单2.添加模块:当输入1后,进入添加页面,对设备的各方面信息进行添加添加设备添加后文本中的数据3.修改模块:输入您需要修改的设备编号,如果输入的编号与查找不相同将真的提示返回菜单或退出,正确进入如下键面修改设备信息修改后文本中的信息4.追加模块:输入您需要追加的设备个数,进行设备信息的添加,进入如下所示追加设备追加后文件中的数据5.统计模块:输入设备类型,进行设备信息的统计,进入如下所示分类统计6.搜索模块:选择你需要搜索的方式,可以按编号搜索,也可以按设备名搜索,还可以按设备价格搜索,如下所示按编号搜索按价格搜索按设备名搜索7.退出模块:选择5直接退出系统退出五、总结1 .设计中遇到的问题及解决过程文本中会出现乱码,但不是所有数据都就乱码,而是文件是的其中某一项是乱码,应该不是fread与fprint的问题,后来发现我定义的是char字符串类型,但在输入数据时scanf("%d",&equ[i].buyDate);用的是%d的格式输入。
一、设计目的1.1 设计题目:设计实现一个实验设备管理系统。
实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。
1.2 设计要求(1)能够完成对设备的录入和修改(2)对设备进行分类统计(3)设备的破损耗费和遗损处理(4)设备的查询(5)采用二进制文件方式存储数据,系统以菜单方式工作1.3 系统功能需求分析系统功能需求:设备信息的录入、修改;设备分类统计;设备破损耗费和遗损处理;设备信息查询;二进制文件方式存储数据;菜单方式工作;用户操作流程:运行程序后会弹出菜单界面,根据菜单界面的提示选择需要完成的相应功能即可完成操作。
数据处理流程:通过input函数将用户输入的各信息以二进制文件方式存储数据,后续可根据需要调用change函数、sort函数、search函数以及del函数进行数据的相应处理,最后通过output函数实现数据的输出显示。
二、总体设计实验设备管理系统功能结构图如下所示:三、详细设计3.1 结构体struct equipment_infor//定义结构体包含各设备信息{char ID[20]; //设备编号int sort; //设备种类(1代表微机 2代表打印机 3代表扫描机)char name[20]; //设备名称float price; //设备价格char buy_date[20]; //设备购买日期int state; //设备状态(报废为1,未报废为0)char scrap_date[20]; //设备报废日期}device[NUM];定义结构体数组,其中包含设备所有信息,方便数据信息的录入、输出等。
3.2 主要函数3.2.1 void load()加载已有数据函数void load() //加载已有数据{count=0;FILE* fp_5=fopen("binary.txt","rb");if(fp_5==NULL){return;}for(int i=0;;i++,count++){if(feof(fp_5)!=0){count--;break;}fread(&device[i], sizeof(struct equipment_infor),1,fp_5);}fclose(fp_5);}此函数实现了加载已有信息的功能,能够使得下次运行时上次的数据得以保留,同时计算出了count的值,可提供后续函数for循环的循环条件,一举两得。
C语言程序设计报告1 课程设计题目:实验室设备管理里系统实验设备信息包括:设备编号、设备种类(如:微机打印机扫描仪等等)、设备名称、设备价格、设备购入日期、是否报废、报废日期等。
试设计一实验设备信息管理系统,使之能提供以下功能:(1)能够完成对设备的录入和修改(2)对设备进行分类统计(3)设备的查询2 需求分析实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号设备种类设备购入日期正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜单以实现功能选择。
3总体设计与模块的划分整个系统可设计为实验设备信息输入模块实验设备信息添加模块实验设备信息修改模块实验设备分类统计模块和实验设备查询模块。
4 建立实验设备信息结构体结构体成员包括设备编号设备种类设备名称设备价格设备购入日期是否报废报废日期。
5应用程序功能详细说明程序运行后进入管理系统,显示目录:添加记录、修改记录、显示记录、分类统计、查询记录(1)添加记录系统提示用户在原有的基础上录入新的设备信息。
流程图如下:(2)修改记录系统要求用户输入要修改的设备ID号,这时系统会显示设备的具体信息,用户只需该设备新的信息按要求输入即可对信息进行修改。
流程图如下:(3)显示记录无记录退出,有记录者按要求输出。
流程图如下:(4)统计分类若有资料可以统计,则按要求分类统计输出。
流程图如下:(5)查询记录若信息为空,则不能查询。
流程图如下:(6)结束语通过本次c语言的程序设计,我不仅提高巩固了c语言的基础,也初学习了编写一个实用程序的流程,提高了动手操作能力,也提高了对编程的兴趣。
我相信经过努力后,我的编程能力一定会得到提高。
源程序代码清单:void main(){Node *equip;FILE *fp;int flag;Node *p,*q;printf("\t\t\t\t设备管理系统\n");equip=(Node*)malloc(sizeof(Node));equip->next=NULL;p=equip;fp=fopen("设备管理系统","wb+");q=(Node*)malloc(sizeof(Node));if(fread(q,sizeof(Node),1,fp)) /*将文件的内容放入接点中* /{q->next=NULL;p->next=q;p=q; /*将该接点挂入链表中*/}fclose(fp); /*关闭文件*/while(1){printf("********************目录***********************");printf("\n1添加记录\n");printf("\n2修改记录\n");printf("\n3显示记录\n");printf("\n4统计分类\n");printf(“\n5 查询记录\n”);printf("\n0*-EXIT-*\n");printf("请输入你要操作的序号:");scanf("%d",&flag);switch(flag){case 0: printf("\n>>>>>>>>>>提示:已经退出系统,ByeBye!\n");break;case 1: Add(equip); break; /*增加记录*/case 2: Modify(equip); break;/*修改记录*/case 3: Disp(equip); break;/*显示记录信息*/case 4: Tongji(equip); break;/*统计记录*/case 5:chaxun(equip);break;/*查询记录*/default: printf("\n>>>>>>>>>>提示:输入错误!\n"); break;}}}Struct shebei{ char ID[10]; char name[15]; char kind[15]; char over[15]; char yesno[10]; char time[10]; char price[10];}void Add(Node *equip) /*添加记录*/{Node *p,*r,*s;char id[10]; /*先用于输入ID,也用于判断是否跳出循环*/r=equip;s=equip->next; /*使s为第一个有用的结点*/while(r->next!=NULL) /*这个循环的作用是使r为最后一个有用的结点*/r=r->next; /*将指针置于最末尾*/while(1){printf(">>>>>>>>>>提示:输入0则返回主菜单!\n");printf("\n请你输入设备ID号:");scanf("%s",id);if(strcmp(id,"0")==0) break;p=(Node *)malloc(sizeof(Node)); /*申请空间*/strcpy(p->data.ID,id);printf("\n请输入设备名称:");scanf("%s",p->);printf("\n请输入设备种类:");scanf("%s",p->data.kind);printf("\n请输入报废日期:");scanf("%s",&p->data.over);printf("\n请输入设备是否报废:");scanf("%s",&p->data.yesno);printf("\n请输入设备购买时间:");scanf("%s",&p->data.time);printf("\n请输入设备价格:");scanf("%s",&p->data.price);printf(">>>>>>>>>>提示:已经完成一条记录的添加。
实验设备信息管理系统题目要求:实验设备信息包括:设备编号,设备种类(如微机,打印机,扫描仪等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。
试设计一实验设备信息管理系统,使之能提供以下功能:1.能够完成对设备的录入和修改。
2.对设备进行分类统计。
3.设备的查询。
需求分析:实验室设备信息用文件储存,提供文件的输入输出操作;要能够完成设备的录入和修改工作,需要添加设备的添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备的查询需要提供查找操作,设备的查询可根据设备编号,设备种类,设备名称,设备购入日期等多种方式查询;另外还要提供键盘式选择菜单以实现选择功能。
总体设计:试验设备信息添加输入模块,试验设备信息修改模块,实验设备信息统计模块和试验设备信息查询模块。
建立试验设备信息结构体,结构体成员包括设备编号,设备种类,设备名称,设备价格,设备购入日期,是否报废,报废日期。
我的程序设计如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 50void menu();void add();void modify();void stat();void search();int load();struct equipment{char num[10]; /*设备编号*/char kind[10]; /*设备种类*/char name[10]; /*设备名称*/char money[10]; /*设备价格*/char brithday[10]; /*设备日期*/char bf[10]; /*是否报废*/char badday[10]; /*报废日期*/}eup[N],temp;/* 返回主函数模块 */void menu(){int n;puts("\t\t************************MENU*************************\n\n" );puts("\t\t\t\t 1.tianjia shiyan ");puts("\t\t\t\t 2.xiugai");puts("\t\t\t\t 3.tongji");puts("\t\t\t\t 4.chaxun");puts("\t\t\t\t 5.EXIT");puts("\n\n\t\t****************************************************** ****\n");printf("please choice(1-5):[ ]\b\b");scanf("%d",&n);switch(n){case 1:add();break;case 2:modify();break;case 3:stat();break;case 4:search();break;case 5:exit(0);default:menu();}}void main()/*主函数*/{menu();}/* 追加模块 */void add(){int i;FILE *fp;fp=fopen("eup.txt","a");if((fp=fopen("eup.txt","a"))==NULL){printf("cannot open file\n");}printf("\nshuru:num\tkind\tname\tmoney\tbrithday\tbf\tbadday\n"); scanf("%s",temp.num);scanf("%s",temp.kind);scanf("%s",);scanf("%s",temp.money);scanf("%s",temp.brithday);scanf("%s",temp.bf);scanf("%s",temp.badday);fprintf(fp,"\n%s\t%s\t%s\t%s\t%s\t%s\t%s",temp.num,temp.kind,temp.na me,temp.money,temp.brithday,temp.bf,temp.badday);fclose(fp);printf("\n\n\tSuccessful.^_^\n\n");printf("\n********************************************************** *********************\n");printf("What do you want to do?\n\n");printf("\t1.Continue to add\t2.Back to main menu\t3.Exit\n"); printf("\n********************************************************** *********************\n");printf("\n\nInput your choice(1-3):");scanf("%d",&i);if(i==1){add();}if(i==2){menu();}if(i==3){exit(0);}}/* 修改模块 */void modify(){FILE *fp;int n,k=0,b,c,i,e;char a[10];n=load();for(i=0;i<n;i++){printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\n",eup[i].num,eup[i].kind,eup[i]. name,eup[i].money,eup[i].brithday,eup[i].bf,eup[i].badday);}printf("\nInput the shebei number you want to modify!\n\nThe equ number:");scanf("%s",a);for(i=0;i<n;i++)if(strcmp(a,eup[i].num)==0) /*查找要修改的设备信息*/{k=1;c=i;break;}if(k==0){printf("\n\nsorry meiyou zhaodao!");printf("\t1).zaici chazhao 2).fanhui MENU []\b\b");scanf("%d",&b);if(b==1){modify();}if(b==2){menu();}}if(k==1){printf("\nFind the shebei!\n");printf("\nPlease input the new information:\n");printf("\nnum kind name money brithday bf badday\n"); scanf("%s",eup[c].num);scanf("%s",eup[c].kind);scanf("%s",eup[c].name);scanf("%s",eup[c].money);scanf("%s",eup[c].brithday);scanf("%s",eup[c].bf);scanf("%s",eup[c].badday);}fp=fopen("eup.txt","w");for(i=0;i<n;i++){fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\n",eup[i].num,eup[i].kind,eup [i].name,eup[i].money,eup[i].brithday,eup[i].bf,eup[i].badday);}fclose(fp);printf("\n\n\tSuccessful.^_^\n\n");printf("\n********************************************************** *********************\n");printf("What do you want to do?\n\n");printf("\t1.Continue to modify\t2.Back to main menu\t3.Exit\n"); printf("\n********************************************************** *********************\n");printf("\n\nInput your choice(1-3):");scanf("%d",&e);if(e==1){modify();}if(e==2){menu();}if(e==3){exit(0);}}/* 分类统计模块 */void stat(){int n,i;FILE *fp;fp=fopen("eup.txt","r");if((fp=fopen("eup.txt","r"))==NULL){printf("cannot open file\n");}while(!feof(fp)){fscanf(fp,"\n%s %s %s %s %s %s %s",temp.num,temp.kind,,temp .money,temp.brithday,temp.bf,temp.badday);printf("\n%s\t%s\t%s\t%s\t%s\t%s\t%s",temp.num,temp.kind,,t emp.money,temp.brithday,temp.bf,temp.badday);}fclose(fp);menu();}/* 查找模块 */void search(){int i,n,k=-1,w1,w2,w3;char c[10];n=load();printf("\n\n chazhao yiju:\n\n1).shebei number 2).kind 3).name 4).birthday [ ]\b\b");scanf("%d",&w3);switch(w3){case 1:{printf("\n\nprint yao chazhao de shebei number! num:");scanf("%s",c);for(i=0;i<n;i++)if(strcmp(c,eup[i].num)==0){k=i;printf("\nFind the shebei!\n");printf("\nThe shebei information:\n");printf("\nnum kind name money brithday bf badday\n\n");printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\n",eup[i].num,eup[i].kind,eup[i]. name,eup[i].money,eup[i].brithday,eup[i].bf,eup[i].badday);}if (k!=-1)printf("\n\nSuccessful.^_^.");if (k==-1)printf("Did not find the shebei!\n");printf("\n\t1).Search again 2).Back menu [ ]\b\b"); scanf("%d",&w2);if(w2==2) menu();if(w2==1) search();}break;case 2:{printf("\n\nprint yao chazhao de shebei kind! kind:");scanf("%s",c);for(i=0;i<n;i++)if(strcmp(c,eup[i].kind)==0)k=i;printf("\nFind the shebei!\n");printf("\nThe shebei information:\n");printf("\nnum kind name money brithday bf badday\n\n");printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\n",eup[i].num,eup[i].kind,eup[i]. name,eup[i].money,eup[i].brithday,eup[i].bf,eup[i].badday);}if (k!=-1)printf("\n\nSuccessful.^_^.");if (k==-1)printf("Did not find the shebei!\n");printf("\n\t1).Search again 2).Back menu [ ]\b\b"); scanf("%d",&w2);if(w2==2) menu();if(w2==1) search();}break;case 3:{printf("\n\nprint yao chazhao de shebei name! name:");scanf("%s",c);for(i=0;i<n;i++)if(strcmp(c,eup[i].name)==0){k=i;printf("\nFind the shebei!\n");printf("\nThe shebei information:\n");printf("\nnum kind name money brithday bf badday\n\n");printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\n",eup[i].num,eup[i].kind,eup[i]. name,eup[i].money,eup[i].brithday,eup[i].bf,eup[i].badday);}if (k!=-1)printf("\n\nSuccessful.^_^.");if (k==-1)printf("Did not find the shebei!\n");printf("\n\t1).Search again 2).Back menu [ ]\b\b"); scanf("%d",&w2);if(w2==2) menu();if(w2==1) search();}break;{printf("\n\nprint yao chazhao de shebei birthday! birthday:");scanf("%s",c);for(i=0;i<n;i++)if(strcmp(c,eup[i].brithday)==0){k=i;printf("\nFind the shebei!\n");printf("\nThe shebei information:\n");printf("\nnum kind name money brithday bf badday\n\n");printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\n",eup[i].num,eup[i].kind,eup[i]. name,eup[i].money,eup[i].brithday,eup[i].bf,eup[i].badday);}if (k!=-1)printf("\n\nSuccessful.^_^.");if (k==-1)printf("Did not find the shebei!\n");printf("\n\t1).Search again 2).Back menu [ ]\b\b"); scanf("%d",&w2);if(w2==2) menu();if(w2==1) search();}}}int load(){FILE *fp;int i;if((fp=fopen("eup.txt","r"))==NULL){printf("\nCannot open file\n");return NULL;}for(i=0;!feof(fp);i++)fscanf(fp,"%s %s %s %s %s %s %s\n",eup[i].num,eup[i].kind,eup[i].nam e,eup[i].money,eup[i].brithday,eup[i].bf,eup[i].badday);fclose(fp);return(i);}下面是程序运行的流程图。
二○一五~二○一六学年第一学期电子与信息工程系课程设计报告书课程名称:程序设计基础实践班级:学号:姓名:指导教师:二○一五年十二月1..实验室设备信息管理系统功能(1). 每一条记录包括实验室的设备编号、设备名称、设备型号、设备价格、设备购买日期信息。
(2). 实验设备信息录入:可以一次完成诸多条记录的录入。
(3). 实验设备信息更改:可实现对实验设备信息更改的信息进行适当的修改。
(4). 报废设备信息删除:对实验损毁设备信息予以删除。
(5). 实验设备信息查询:本系统提供两种查询实验设备的方法:1.按器材名称查询.2.按器材编号查询.从而完成按实验设备的查找查找功能,并显示。
(6). 实验设备信息排序:根据实验设备的编号进行排序,以实现实验设备的有序全局查看。
实验设备信息显示功能:完成全部学生记录的显示。
(7). 简单帮助:提供实验室负责人简单的信息。
(8). 保存功能:将学生记录保存在任何自定义的文件中,如保存在:c:\score。
(9). 读取功能:将保存在文件中的学生记录读取出来。
(10). 有一个清晰美观界面来调用各个功能2.设计内容2.1 程序的总体设计整个系统除了主函数外,另外还有11个函数,实现以下功能:实验室设备录入功能、显示功能、查找功能、排序功能、读出与写入取功能。
各个函数的详细设计说明分别如下:2.2 数据结构使用C语言创建的结构体如下:typedef Equipment /*定义数据结构*/{char bianhao; //编号char name[20]; //名称char model[20]; //型号bnmchar price[20]; //价格char buy_date[20]; //购买日期};3 详细设计3.1实验设备管理系统主程序模块设计控制整个程序的运行,通过主函数模块分别调用各个模块,实现各项功能,流程如图1所示。
通过switch进入分支结构从而调用执行不同的函数,以实现菜单选择的功能。
C语言程序设计实习报告试验设备管理系统班级:姓名:学号:指导老师:一课程设计的目的提高程序设计能力,检验课堂教学内容,掌握程序设计的基本方法和调试技能。
二课程设计报告正文1 课程设计题目的原文;实验设备信息包括:设备编号、设备种类(如:微机打印机扫描仪等等)、设备名称、设备价格、设备购入日期、是否报废、报废日期等。
试设计一实验设备信息管理系统,使之能提供以下功能:(1)能够完成对设备的录入和修改(2)对设备进行分类统计(3)设备的查询2 需求分析实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号设备种类设备购入日期正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜单以实现功能选择。
3总体设计与模块的划分整个系统可设计为实验设备信息输入模块实验设备信息添加模块实验设备信息修改模块实验设备分类统计模块和实验设备查询模块。
建立实验设备信息结构体,结构体成员包括设备编号设备种类设备名称设备价格设备购入日期是否报废报废日期。
4 详细设计A 主函数(){*;*;;*p,*q;("\t\t\t\t设备管理系统\n");(*)(());;("设备管理系统","");(*)(());(((),1)) 将文件的内容放入接点中{>;>;; 将该接点挂入链表中}(); 关闭文件(1){("***********************目录("\n1添加记录\n");("\n2修改记录\n");("\n3显示记录\n");("\n4统计分类记录\n");("\n0**\n");("请输入你要操作的序号:");("");(){0: ("\n>>>>>>>>>>提示:已经退出系统!\n");1: (); ; 增加记录2: (); 修改记录3: (); 显示记录信息4: (); 统计记录: ("\n>>>>>>>>>>提示:输入错误!\n"); ;}}}B 各功能模块设计(1)输入模块{ [10]; [15]; [15]; [15]; [10]; [10];};(2)追加模块( *) 添加记录{*p,*r,*s;[10]; 先用于输入,也用于判断是否跳出循环;>; 使s为第一个有用的结点(>) 这个循环的作用是使r为最后一个有用的结点(1){(">>>>>>>>>>提示:输入0则返回主菜单!\n");("\n请你输入设备号:");("");((,"0")0) ;( *)(()); 申请空间(>);("\n请输入设备名称:");("">);("\n请输入设备种类:");("">);("\n请输入报废日期:");("">);("\n请输入设备是否报废:");("">);("\n请输入设备购买时间:");("">);("\n请输入设备价格:");("">);(">>>>>>>>>>提示:已经完成一条记录的添加。
#include <>#include <>#include <>#include <>voidmenu();no,d[tot].dname,d[tot].downer,d[tot].ddpartment,d[tot].damount,d[tot].dt ime,d[tot].dprice)!=EOF){d[tot++].dlt=0;}fclose(fp);}void write(){int i;FILE *fp=fopen("D:\\","w");for (i=0;i<tot;i++)if (!d[i].dlt)fprintf(fp,"%s %s %s %s %s %s %s\n",d[i].dno,d[i].dname,d[i].downer,d[i].ddpart ment,d[i].damount,d[i].dtime,d[i].dprice);fclose(fp);}void menu(){char a;while (1){puts("★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★请选择需要的功能:★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★");puts(" 1.查看所有设备信息\n 2.修改设备信息\n 3.删除设备信息\n 4.增加设备信息\n 5.统计设备信息\n 0.退出系统");a=getch();switch (a){case '0':return;case '1':{lkp();break;}case '2':{chng();break;}case '3':{dlt();break;}case '4':{add();break;}case '5':{count();break;}default:printf("您输入的信息有误!请检查后重新输入\n");}}}void lkp(){system("cls");int i;printf(" 设备号设备名称领用人所属部门数量购买时间价格\n");for(i=0;i<tot;i++){if(d[i].dlt==0)printf("%20s%20s%20s%20s%20s%20s%20s\n",d[i].dno,d[i].dname,d[i].downer,d[i ].ddpartment,d[i].damount,d[i].dtime,d[i].dprice);}}void chng(){system("cls");char s,ch[20];int i,j;printf("请输入您要修改的设备的编号:(0键返回菜单栏)\n");printf(" 设备号设备名称领用人所属部门数量购买时间价格\n");for(i=0;i<tot;i++){printf("%4d.%20s%20s%20s%20s%20s%20s%20s\n",i+1,d[i].dno,d[i].dname,d[i].do wner,d[i].ddpartment,d[i].damount,d[i].dtime,d[i].dprice);}while (1){scanf("%s",ch);i=atoi(ch);if (i>=1 && i<=tot)break;else if(i==0){system("cls");return;}else puts("您输入的信息有误!请检查后重新输入\n");}if(d[i-1].dlt==1){printf("该设备已经被删除!\n");return;}printf("请输入您要修改的内容的编号:\n1.设备号\n2.设备名称\n3.领用人\n4.所属部门\n5.数量\n6.购买时间\n7.价格\n0.返回菜单栏\n");while (1){scanf("%s",ch);j=atoi(ch);if (j>=1 && j<=7)break;else if(i==0){system("cls");return;}else puts("您输入的信息有误!请检查后重新输入\n");}printf("请输入您要修改的信息:\n");switch (j){case 1:{scanf("%s",d[i-1].dno);break;}case 2:{scanf("%s",d[i-1].dname);break;}case 3:{scanf("%s",d[i-1].downer);break;}case 4:{scanf("%s",d[i-1].ddpartment);break;}case 5:{scanf("%s",d[i-1].damount);break;}case 6:{scanf("%s",d[i-1].dtime);break;}case 7:{scanf("%s",d[i-1].dprice);break;}}printf("请问是否要继续修改(Y/N)\n");while (1){getchar();gets(&s);if (s=='Y'||s=='N'||s=='y'||s=='n')break;else puts("您输入的信息有误!请检查后重新输入\n");}if(s=='Y'||s=='y')chng();else if(s=='N'||s=='n')system("cls");}void dlt(){system("cls");char ch[20],s;int i;printf("请输入你要删除的设备的编号:(0键返回菜单烂)\n");printf(" 设备号设备名称领用人所属部门数量购买时间价格\n");for(i=0;i<tot;i++){if(d[i].dlt==0)printf("%4d.%20s%20s%20s%20s%20s%20s%20s\n",i+1,d[i].dno,d[i].dname,d[i].do wner,d[i].ddpartment,d[i].damount,d[i].dtime,d[i].dprice);}while (1){scanf("%s",ch);i=atoi(ch);if (i>=1 && i<=tot)break;else if(i==0){system("cls");return;}else puts("您输入的信息有误!请检查后重新输入\n");}d[i-1].dlt=1;printf("请问是否要继续删除(Y/N)\n");while (1){getchar();gets(&s);if (s=='Y'||s=='N'||s=='y'||s=='n')break;else puts("您输入的信息有误!请检查后重新输入\n");}if(s=='Y'||s=='y')dlt();else if(s=='N'||s=='n')system("cls");}void add(){char s;system("cls");printf("请输入您要添加的设备号:\n");scanf("%s",d[tot].dno);printf("请输入您要添加的设备的名称:\n");scanf("%s",d[tot].dname);printf("请输入您要添加的设备的领用人:\n");scanf("%s",d[tot].downer);printf("请输入您要添加的设备的所属部门:\n");scanf("%s",d[tot].ddpartment);printf("请输入您要添加的设备的数量:\n");scanf("%s",d[tot].damount);printf("请输入您要添加的设备的购买时间:\n");scanf("%s",d[tot].dtime);printf("请输入您要添加的设备的价格:\n");scanf("%s",d[tot].dprice);d[tot].dlt=0;tot+=1;printf("请问是否要继续添加(Y/N)\n");while (1){getchar();gets(&s);if (s=='Y'||s=='N'||s=='y'||s=='n')break;else puts("您输入的信息有误!请检查后重新输入\n");}if(s=='Y'||s=='y')add();else if(s=='N'||s=='n')system("cls");}void count(){system("cls");char ch[20],temp[20],s;int i,j,n;sum=0;printf("请选择统计的方式:\n1.所有设备的总价值。
实验设备管理系统一、设计内容与设计要求1.设计内容:通过该系统实现对力学实验设备信息进行录入、修改、统计、查询、保存等操作的管理。
实验设备信息包括:设备编号,设备种类,设备名称(如烧杯、酒精灯等),设备价格,设备购入日期,是否报废,报废日期等。
主要功能:1)、能够完成对设备的录入和修改2)、对设备进行分类统计3)、设备的破损耗费和遗损处理4)、设备的查询5)、将设备信息保存到文件中2.设计要求:1)、设计正确,方案合理。
2)、界面友好,使用方便。
3)、程序精炼,结构清晰。
4)、设计报告5000字以上,。
5)、上机演示。
#include "stdio.h"#include "stdlib.h"#include "string.h"struct shebei{char ID[10];char name[15];char kind[15];char over[15];char yesno[10];char time[10];char price[10];};typedef struct node{struct shebei data;struct node *next; //建立一个链表。
}Node;void Add(Node *equip) //添加记录{Node *p,*r,*s;char id[10]; //先用于输入ID,也用于判断是否跳出循环r=equip;s=equip->next; //使s为第一个有用的结点while(r->next!=NULL) //这个循环的作用是使r为最后一个有用的结点r=r->next; //将指针置于最末尾while(1){printf(">>>>>>>>>>提示:输入0则返回主菜单!\n");printf("\n请你输入设备ID号:");scanf("%s",id);if(strcmp(id,"0")==0) break;p=(Node *)malloc(sizeof(Node)); //申请空间strcpy(p->data.ID,id);printf("\n请输入设备名称:");scanf("%s",p->);printf("\n请输入设备种类:");scanf("%s",p->data.kind);printf("\n请输入报废日期:");scanf("%s",&p->data.over);printf("\n请输入设备是否报废:");scanf("%s",&p->data.yesno);printf("\n请输入设备购买时间:");scanf("%s",&p->data.time);printf("\n请输入设备价格:");scanf("%s",&p->data.price);printf(">>>>>>>>>>提示:已经完成一条记录的添加。
#include<stdafx.h>#include<stdio.h>#include<string.h>#include<windows.h>#define N 100int m=0;int n=0;/*日期结构体类型*/struct date{int year;int month;int day;};/*设备属性结构体*/struct Equi{char num[10]; /*设备编号*/char name[18]; /*设备名称*/long price; /*设备价格*/struct date buy_time; /*购买时间*/char lab[8]; /*所属实验室*/};/******************************************* ***********************************///函数说明int myprint(); //显示菜单int mycreat(struct Equi*p,int n);//输入设备信息int mydisplay(struct Equi*p,int n);//显示信息int mysch_num(struct Equi*p,int n);//按编号查询int mymodify(struct Equi*p,int n);//修改int myadd(struct Equi*p,int n);//添加int mydelete(struct Equi*p,int n);//删除int mysort(struct Equi*p,int n);//排序//主函数部分******************************************* ************************void main(){system("color B"); //设置背景颜色char choose,yes_no;struct Equi record[N]; //存放设备信息,共100条memset(record,0,sizeof(record));int total; //设备总数do{system("cls"); //清屏myprint(); //显示菜单printf(" 请选择(0-7):");fflush(stdin); //清除缓存choose=getchar();switch(choose){case'1':total=mycreat(record,N);break;case'2':total=mydisplay(record,N);break;case'3':total=mysch_num(record,N);break;case'4':total=mymodify(record,N);break;case'5':total=myadd(record,m);break;case'6':total=mydelete(record,N);break;case'7':total=mysort(record,N);break;case'0': break;default: printf("\n%c为非法选项!\n",choose);getchar();}printf("\n 要继续选择吗?(Y/N)");fflush(stdin);yes_no=getchar();}while(yes_no=='Y'||yes_no == 'y');}//显示菜单信息部分******************************************* **************************int myprint(){system("cls"); //清屏printf("\t\t*************史东飞和金新林的程序*******************\n\n");printf("************************************* *******************************************\ n");printf(" 请输入编号(0-7)\n"); printf("\n");printf(" |1--录入设备信息| \n");printf(" |2--显示设备信息| \n");printf(" |3--查询设备信息| \n");printf(" |4--修改设备信息| \n");printf(" |5--添加设备信息| \n");printf(" |6--删除设备信息| \n");printf(" |7--排序| \n\n");printf(" |0--退出| \n");printf("************************************* *******************************************\ n");return 0;}//输入设备信息部分******************************************* *************************int mycreat(struct Equi*p,int n){system("cls"); //清屏int i=0;printf("请输入要输入的设备总数(<%d): ",n);scanf("%d",&m);while(i<m){printf("\n");printf("请输入第%d个记录:\n",i+1);printf("请输入编号:");do{ gets(p->num);}while(strcmp(p->num,"")==0);printf("请输入名称:");gets(p->name);printf("请输入价格:");scanf("%ld",&p->price);printf("请输入购买日期(yyyy-mm-dd):");scanf("%d-%d-%d",&p->buy_time.year,&p->bu y_time.month,&p->buy_time.day);printf("请输入设备所属实验室:");scanf("%s",p->lab);p++; i++;}return m;}//显示设备信息部分******************************************* **********************************int mydisplay(struct Equi *p,int n){system("cls"); //清屏n=m;printf(" 编号名称价格购买日期所属实验室\n");printf("\n");while(n>0){printf("\t %s\t %2s\t %ld\t%d-%d-%d\t %12s\n",p->num,p->name,p->price,p->buy_time.year,p->buy_time.mont h,p->buy_time.day,p->lab);p++; n--;}return m;}//修改设备信息部分******************************************* *******************************int mymodify(struct Equi *p,int n){system("cls"); //清屏int i;char num[10];mydisplay(p,n);printf("\n请输入要修改记录的编号:");scanf("%s",num);for(i=0;i<m;i++,p++)if(strcmp(num,p->num)==0)break;printf("请输入正确的编号:");fflush(stdin);gets(p->num);printf("请输入正确的名称:");gets(p->name);printf("请输入正确的价格:");scanf("%ld",&p->price);printf("请输入正确的购买日期:");scanf("%d-%d-%d",&p->buy_time.year,&p->bu y_time.month,&p->buy_time.day);printf("请输入正确的所属实验室:");scanf("%s",p->lab);return 0;}//查询(用编号)部分******************************************* **********************************int mysch_num(struct Equi *p,int n){system("cls"); //清屏int i;char nm[10];printf("请输入要查询记录的编号:");scanf("%s",nm);for(i=0;i<m;i++){if(strcmp(nm,p[i].num)==0){printf(" 编号名称价格购买日期所属实验室\n");printf("\t %s\t %2s\t %ld\t%d-%d-%d\t %12s\n",p[i].num,p [i].name,p[i].price,p[i].buy_time.year,p[i].buy_time.m onth,p[i].buy_time.day,p[i].lab);break;}elseprintf("无此设备!\n");}return 0;}// 添加设备信息部分******************************************* *****************************int myadd(struct Equi *p,int n){system("cls"); //清屏int i;char c='y';struct Equi *t=p,*q=p;printf("添加前的记录: ");printf("\n");printf(" 编号名称价格购买日期所属实验室\n");i=0;//显示原有记录while (i<m){printf("\t %s\t %2s\t %ld\t%d-%d-%d\t %12s\n",q->num,q->name,q->price,q->buy_time.year,q->buy_time.mont h,q->buy_time.day,q->lab);i++; q++;}do{p = p+m;printf("请输入新的编号: ");do{gets(p->num);}while(strcmp(p->num,"")==0); //编号不能为空!!!printf("请输入新的名称: ");gets(p->name);printf("请输入新的价格: ");scanf("%ld",&p->price);printf("请输入新的购买日期: ");scanf("%d-%d-%d",&p->buy_time.year,&p->bu y_time.month,&p->buy_time.day);printf("请输入新的所属实验室: ");scanf("%s",&p->lab);printf("添加后的记录: \n");printf(" 编号名称价格购买日期所属实验室\n");for(i=0;i<m+1;i++)printf("\t %s\t %2s\t %ld\t%d-%d-%d\t %12s\n",(t+i)->num ,(t+i)->name,(t+i)->price,(t+i)->buy_time.year,(t+i)-> buy_time.month,(t+i)->buy_time.day,(t+i)->lab);m=m+1;break;}while(c=='y'||c=='Y');return m;}//删除设备信息部分******************************************* ***********************************int mydelete(struct Equi *p,int n){system("cls"); //清屏int i,x;char nm[10];printf("删除前的记录: \n");printf(" 编号名称价格购买日期所属实验室\n");for(i=0;i<m;i++)printf(" \t %s\t %2s\t %ld\t%d-%d-%d\t %12s\n",p[i].num,p [i].name,p[i].price,p[i].buy_time.year,p[i].buy_time.m onth,p[i].buy_time.day,p[i].lab);fflush(stdin);printf("请输入要删除记录的编号: ");gets(nm);for(x=0;x<m;x++){if(strcmp(nm,p[x].num)==0){for(int t=1;t<m;t++) //修改的{p[x+t-1]=p[x+t]; //修改的}break;}}m=m-1;printf("删除后的记录: \n");printf(" 编号名称价格购买日期所属实验室\n");for(i=0;i<m;i++)printf("\t %s\t %2s\t %ld\t%d-%d-%d\t %12s\n",p[i].num,p [i].name,p[i].price,p[i].buy_time.year,p[i].buy_time.m onth,p[i].buy_time.day,p[i].lab);return m;}int mysort(struct Equi*p,int n){system("cls");int i,j,k;char c1,c2;struct Equi temp;printf("排序前的记录: \n");printf(" 编号名称价格购买日期所属实验室\n");for(i=0;i<m;i++)printf("\t %s\t %2s\t %ld\t%d-%d-%d\t %12s\n",p[i].num,p [i].name,p[i].price,p[i].buy_time.year,p[i].buy_time.m onth,p[i].buy_time.day,p[i].lab);fflush(stdin);printf("请确定要重新排序?(y/n)");c1=getchar();if(c1=='y'||c1=='Y'){fflush(stdin);printf("\n按升序(s),还是按降序(j)?");c2=getchar();//按升序if(c2=='s'||c2=='S'){for(i=0;i<m;i++){for(j=i+1;j<m;j++){if(strcmp(p[i].num,p[j].num)>0){temp=p[i];p[i]=p[j];p[j]=temp;}}}printf("排序后的记录: \n");printf(" 编号名称价格购买日期所属实验室\n");for(i=0;i<m;i++)printf("\t %s\t %2s\t %ld\t%d-%d-%d\t %12s\n",p[i].num,p [i].name,p[i].price,p[i].buy_time.year,p[i].buy_time.m onth,p[i].buy_time.day,p[i].lab);}//按降序else if(c2=='j'||c2=='J'){for(i=0;i<m;i++){for(j=i+1;j<m+1;j++)if(strcmp(p[i].num,p[j].num)<0){temp=p[i];p[i]=p[j];p[j]=temp;}}printf("排序后的记录: \n");printf(" 编号名称价格购买日期所属实验室\n");for(i=0;i<m;i++)printf("\t %s\t %2s\t %ld\t%d-%d-%d\t %12s\n",p[i].num,p [i].name,p[i].price,p[i].buy_time.year,p[i].buy_time.m onth,p[i].buy_time.day,p[i].lab);}else{printf("\n非法字符\n");}}else{printf("\n非法字符\n");}return 0;}。
精心整理C语言程序设计报告1 课程设计题目:实验室设备管理里系统实验设备信息包括:设备编号、设备种类(如:微机打印机扫描仪等等)、设备名称、设备价格、设备购入日期、是否报废、报废日期等。
试设计一实验设备信息管理系统,使之能提供以下功能:(1)能够完成对设备的录入和修改(2)对设备进行分类统计(3)设备的查询2 需求分析实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号设备种类设备购入日期正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜单以实现功能选择。
3总体设计与模块的划分整个系统可设计为实验设备信息输入模块实验设备信息添加模块实验设备信息修改模块实验设备分类统计模块和实验设备查询模块。
主函数流程图:N+4 建立实验设备信息结构体 结构体成员包括设备编号 设备名称 部门编号 部门名称 设备价格 设备购买时间 是否报废 报废日期。
5应用程序功能详细说明程序运行后进入管理系统,显示目录:录入设备信息,修改设备信息,查询设备信息,统计设备信息,报废设备信息,退出录入设备信息 系统提示用户在原有的基础上录入新的设备信息。
流程图如下:录入设备信息修改设备信息查询设备信息统计设备信息报废设备信息退出设备管理系统设计开始 显示一系列功能选输入n,判断据n 值调用各功能模结束开始输入设备编号,并将(1)修改记录系统要求用户输入要修改的设备编号,这时系统会显示设备的具体信息,用户只需该设备新的信息按要求输入即可对信息进行修改。
流程图如下:开始判断是否有资料可以没有资料可以统计输入要统计的分类序按输入序号调用各功结束(2)显示记录无记录退出,有记录者按要求输出。
流程图如下:开(3) 统计分类 若有资料可以统计,则按要求分类统计输出。
流程图如下:(4) 查询记录 若信息为空,则不能查询。
西安郵電大学软件课程设计报告题目:实验室设备管理系统院系名称:电子工程学院专业名称:电子信息工程班级:1204班内序号:5学生姓名:诺贝尔杨时间:2013年3月18日至2013年3月29日1.课程设计目的实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。
主要功能:1.录入设备信息2.修改设备信息3.查询设备信息(1)按设备编号查询(2)按设备名称查询4.对设备按种类进行分类统计5.报废设备登记。
6.报废设备统计。
2.设计思路需求分析实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号设备种类设备购入日期正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜单以实现功能选择。
整个系统可设计为实验设备信息输入模块实验设备信息修改模块实验设备分类统计模块实验设备查询模块和实验设备报废信息模块。
建立实验设备信息结构体,结构体成员包括设备编号设备种类设备名称设备价格设备购入日期是否报废报废日期。
3.功能模块图5.程序代码#include""#include""#define null 0int t=0;int mmcsz=0;int mima;int menu();d);if(strcmp(sb[t].id,"0")==0) main();printf("\n请输入设备名称:");scanf("%s",sb[t].name);printf("\n请输入设备种类:");scanf("%s",sb[t].kind);printf("\n请输入报废日期:");scanf("%s",sb[t].over);printf("\n请输入设备是否报废,1、没报废,0、报废:"); scanf("%d",&sb[t].yesno);printf("\n请输入设备购买时间:");scanf("%s",sb[t].time);printf("\n请输入设备价格:");scanf("%s",sb[t].price);printf("提示:已经完成一条记录的添加。
C语言程序设计报告1 课程设计题目:实验室设备管理里系统实验设备信息包括:设备编号、设备种类(如:微机打印机扫描仪等等)、设备名称、设备价格、设备购入日期、是否报废、报废日期等。
试设计一实验设备信息管理系统,使之能提供以下功能:(1)能够完成对设备的录入和修改(2)对设备进行分类统计(3)设备的查询2 需求分析实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号设备种类设备购入日期正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜单以实现功能选择。
3总体设计与模块的划分整个系统可设计为实验设备信息输入模块实验设备信息添加模块实验设备信息修改模块实验设备分类统计模块和实验设备查询模块。
录入设备信息修改设备信息查询设备信息统计设备信息报废设备信息退出设备管理系统设计主函数流程图:N+4 建立实验设备信息结构体结构体成员包括设备编号 设备名称 部门编号 部门名称 设备价格 设备购买时间 是否报废 报废日期。
5应用程序功能详细说明程序运行后进入管理系统,显示目录:录入设备信息,修改设备信息,查询设备信息,统计设备信息,报废设备信息,退出录入设备信息 系统提示用户在原有的基础上录入新的设备信息。
流程图如下:开始输入设备编号,并将指针指向最末尾开始显示一系列功能选择输入n,判断m ,是否0到5据n 值调用各功能模块函数结束(1)修改记录系统要求用户输入要修改的设备编号,这时系统会显示设备的具体信息,用户只需该设备新的信息按要求输入即可对信息进行修改。
流程图如下:开始判断是否有资料可以统计分类没有资料可以统计跳出输入要统计的分类序号按输入序号调用各功能模块函数结束(2)显示记录无记录退出,有记录者按要求输出。
流程图如下:开始没有记录可以显示,跳出有记录者按要求输出结束(3)统计分类若有资料可以统计,则按要求分类统计输出。
流程图如下:开始判断是否有资料可以统计分类没有资料可以统计跳出输入要统计的分类序号按输入序号调用各功能模块函数结束(4)查询记录若信息为空,则不能查询。
流程图如下:开始判断是否有资料为空资料为空跳出输入要查询的分类序号按输入序号调用各功能模块函数结束(6)结束语通过本次c语言的程序设计,我不仅提高巩固了c语言的基础,也初学习了编写一个实用程序的流程,提高了动手操作能力,也提高了对编程的兴趣。
我相信经过努力后,我的编程能力一定会得到提高。
源程序代码清单:void main(){Node *equip;FILE *fp;int flag;Node *p,*q;printf("\t\t\t\t设备管理系统\n");equip=(Node*)malloc(sizeof(Node));equip->next=NULL;p=equip;fp=fopen("设备管理系统","wb+");q=(Node*)malloc(sizeof(Node));if(fread(q,sizeof(Node),1,fp)) /*将文件的内容放入接点中* /{q->next=NULL;p->next=q;p=q; /*将该接点挂入链表中*/}fclose(fp); /*关闭文件*/while(1){printf("********************目录***********************");printf("\n1添加记录\n");printf("\n2修改记录\n");printf("\n3显示记录\n");printf("\n4统计分类\n");printf(“\n5 查询记录\n”);printf("\n0*-EXIT-*\n");printf("请输入你要操作的序号:");scanf("%d",&flag);switch(flag){case 0: printf("\n>>>>>>>>>>提示:已经退出系统,ByeBye!\n");break;case 1: Add(equip); break; /*增加记录*/case 2: Modify(equip); break;/*修改记录*/case 3: Disp(equip); break;/*显示记录信息*/case 4: Tongji(equip); break;/*统计记录*/case 5:chaxun(equip);break;/*查询记录*/default: printf("\n>>>>>>>>>>提示:输入错误!\n"); break;}}}Struct shebei{ char ID[10]; char name[15]; char kind[15]; char over[15]; char yesno[10]; char time[10]; char price[10];}void Add(Node *equip) /*添加记录*/{Node *p,*r,*s;char id[10]; /*先用于输入ID,也用于判断是否跳出循环*/r=equip;s=equip->next; /*使s为第一个有用的结点*/while(r->next!=NULL) /*这个循环的作用是使r为最后一个有用的结点*/r=r->next; /*将指针置于最末尾*/while(1){printf(">>>>>>>>>>提示:输入0则返回主菜单!\n");printf("\n请你输入设备ID号:");scanf("%s",id);if(strcmp(id,"0")==0) break;p=(Node *)malloc(sizeof(Node)); /*申请空间*/strcpy(p->data.ID,id);printf("\n请输入设备名称:");scanf("%s",p->);printf("\n请输入设备种类:");scanf("%s",p->data.kind);printf("\n请输入报废日期:");scanf("%s",&p->data.over);printf("\n请输入设备是否报废:");scanf("%s",&p->data.yesno);printf("\n请输入设备购买时间:");scanf("%s",&p->data.time);printf("\n请输入设备价格:");scanf("%s",&p->data.price);printf(">>>>>>>>>>提示:已经完成一条记录的添加。
\n");p->next=NULL;r->next=p; /*这一步是必需的,将p与先前的链表连起来构成一条新链表*/r=p; /*也是必需的.将r 又重设为新链的最后一个有用结点*/}}void Modify(Node *equip)/*修改*/{Node *p;char find[20];if(!equip->next){printf("\n>>>>>>>>>>提示:没有资料可以修改!\n");return;}printf("请输入要修改的设备ID号:");scanf("%s",find);p=equip->next;N while(p!=NULL){if(strcmp(p->data.ID,find)==0) /*如果找到的话返回的是符合要求*/break;p=p->next;}if(p) /*若找到*/{int x;while(1){printf("完成修改请输入0否则输入任意数再进行修改:");scanf("%d",&x);if(x==0){break;}printf("请输入新设备号(原来是%s ):",p->data.ID);scanf("%s",p->data.ID);printf("请输入新设备名称(原来是%s ):",p->);scanf("%s",p->);printf("请输入新设备设备种类名称(原来是%s ):",p->data.kind);scanf("%s",p->data.kind);printf("请输入新设备报废日期名称(原来是%s ):",p->data.over);scanf("%s",p->data.over);printf("请输入新设备是否报废(原来是%s ):",p->data.yesno);scanf("%s",p->data.yesno);printf("请输入新设备购买时间(原来是%s ):",p->data.kind);scanf("%s",p->data.time);printf("请输入新设备价格(原来是%s ):",p->data.price);scanf("%s",p->data.price);printf("\n>>>>>>>>>>提示:该项记录资料已经成功修改!\n");}}else printf("\n>>>>>>>>>>提示:你要修改的信息不存在!\n");}void Disp(Node *equip)/*输出记录*/{Node *p;p=equip->next;if(!p){printf("\n>>>>>>>>>>提示:没有记录可以显示!\n");return;}printf("\t\t\t\t显示结果\n");printf("设备号码设备名称设备种类报废日期是否报废购买时间价格\n");while(p){printf("\n%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n",p->data.ID,p->,p->data.kind,p-> data.over,p->data.yesno,p->data.time,p->data.price);p=p->next;}}void Tongji(Node *equip)/*统计*/{Node *p;int sel;int flag2=0,ha=0; char find[20];p=equip->next;if(!equip->next) /*若链表为空*/{printf("\n>>>>>>>>>>提示:没有资料可以统计分类!\n");return;}printf(">>>>>>提示:\n===>0退出\n===>1按设备号统计\n===>2按设备名称统计\n");scanf("%d",&sel);if(sel==1){printf("\n输入你要统计分类的设备号:");scanf("%s",find);{if(strcmp(p->data.ID,find)==0){flag2++;}if(flag2==1&&ha!=flag2){ printf("设备号码设备名称设备种类报废日期是否报废购买时间价格\n");printf("\n%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n",p->data.ID,p->,p->data.kind,p-> data.over,p->data.yesno,p->data.time,p->data.price);ha=flag2;}elseif(flag2>ha){printf("\n%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n",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***************按设备号%s统计分类的有%d条记录:************\n\n",find,flag2); }else {printf("\n按设备号%s统计的结果为0个\n\n",find);}}else if(sel==2){printf("\n输入你要统计分类的设备名称:");scanf("%s",find);while(p){if(strcmp(p->,find)==0){flag2++;}if(flag2==1&&ha!=flag2){ printf("设备号码设备名称设备种类报废日期是否报废购买时间价格\n");printf("\n%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n",p->data.ID,p->,p->data.kind,p-> data.over,p->data.yesno,p->data.time,p->data.price);ha=flag2;}elseif(flag2>ha){printf("\n%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n",p->data.ID,p->,p-> data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price);ha=flag2;}p=p->next;}{printf("\n***********按设备名称%s统计的有%d条记录:***************\n\n",find,flag2); }else {printf("\n按设备名称%s统计分类的结果为0个\n\n",find);}}else if(sel==0) return;}(6) 查询模块void chaxun(Node *equip)/*查询*/{Node *p;int sel;int flag2=0,ha=0; char find[20];p=equip->next;if(!equip->next) /*若链表为空*/{printf("\n>>>>>>>>>>提示:资料为空!\n");return;}printf(">>>>>>>提示:\n====>0退出\n====>1按设备号查询\n====>2按设备名称查询\n"); scanf("%d",&sel);if(sel==1){printf("\n输入你要查询的设备号:");scanf("%s",find);while(p){if(strcmp(p->data.ID,find)==0){flag2++;}if(flag2==1&&ha!=flag2){ printf("设备号码设备名称设备种类报废日期是否报废购买时间价格\n");printf("\n%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n",p->data.ID,p->,p->data.kind,p-> data.over,p->data.yesno,p->data.time,p->data.price);ha=flag2;}elseif(flag2>ha){printf("\n%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n",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**************按设备号%s查询有%d条记录:*****************\n\n",find,flag2); }else {printf("\n按设备号%s统计的结果为0个\n\n",find);}}else if(sel==2){printf("\n输入你要查询的设备名称:");scanf("%s",find);while(p){if(strcmp(p->,find)==0){flag2++;}if(flag2==1&&ha!=flag2){ printf("设备号码设备名称设备种类报废日期是否报废购买时间价格\n");printf("\n%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n",p->data.ID,p->,p->data.kind,p-> data.over,p->data.yesno,p->data.time,p->data.price);ha=flag2;}elseif(flag2>ha){printf("\n%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n",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************设备名称%s查询有%d条记录:********************\n\n",find,flag2); }else {printf("\n按设备名称%s查询结果为0个\n\n",find);}}else if(sel==0) return;}11。