#includestdio.h#includestdlib.h#includestring.hintNUM;structshebei{intID;charname[100];charkind[50];intover;charyesno[50];inttime;intprice;};typedefstructnode{structshebeidata;structnode*next;//建立一个链表。}Node;Node*readData(){FILE*fp;if((fp=fopen(D:\\设备管理系统.txt,r))==NULL)/*从文件只读数据*/{fp=fopen(D:\\设备管理系统.txt,w+);}Node*p1,*p2,*head;head=(Node*)malloc(sizeof(structshebei));p1=(Node*)malloc(sizeof(structshebei));/*开辟节点*/if((fread(p1,sizeof(structshebei),1,fp))==1)/*判断能否读出第一条信息*/{head=p1;}else{head=NULL;}while(feof(fp)==0)/*当未到结尾时feof(fp)==0*/{p2=(Node*)malloc(sizeof(structshebei));/*开辟下一个节点*/fread(p2,sizeof(structshebei),1,fp);p1-next=p2;p1=p2;}p1-next=NULL;/*封死列表*/fclose(fp);printf(文件读取成功!!!);returnhead;/*返回*/}voidwriteData(Node*equip){FILE*fp;Node*p;p=equip-next;if(p==NULL){printf(无设备记录!!!);}else{fp=fopen(D:\\设备管理系统.txt,w);fprintf(fp,%d\n,NUM);for(p=equip-next;p!=NULL;p=p-next){fprintf(fp,%-13d%-11s%-7s%-10d%-13s%-10d%-5d,p-data.ID,p-data.name,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price);}fclose(fp);printf(存放成功!!!!\n文件存放在D:\\设备管理系统\n);}}voidAdd(Node*equip)//添加记录{Node*p,*r,*s;intid;//先用于输入ID,也用于判断是否跳出循环r=equip;s=equip-next;//使s为第一个有用的结点while(r-next!=NULL)//这个循环的作用是使r为最后一个有用的结点r=r-next;//将指针置于最末尾while(1){printf(提示:输入0则返回主菜单!\n);printf(\n请你输入设备ID号:);scanf(%d,&id);if(id==0){break;}p=(Node*)malloc(sizeof(Node));//申请空间p-data.ID=id;printf(\n请输入设备名称:);scanf(%s,p-data.name);printf(\n请输入设备种类:);scanf(%s,p-data.kind);printf(\n请输入报废日期:);scanf(%d,&p-data.over);printf(\n请输入设备是否报废:);scanf(%s,&p-data.yesno);printf(\n请输入设备购买时间:);scanf(%d,&p-data.time);printf(\n请输入设备价格:);scanf(%d,&p-data.price);printf(提示:已经完成一条记录的添加。\n);NUM++;Node*p0,*p1;if(equip==NULL){equip=p;p-next=NULL;}if(p-data.IDequip-data.ID){p-next=equip;equip=p;}p1=equip;while((p-data.IDp1-data.ID)&&(p1-next!=NULL)){p0=p1;p1=p1-next;}if(p-data.IDp1-data.ID){p-next=p1;p0-next=p;}else{p1-next=p;p-next=NULL;}}}voidModify(Node*equip)//修改{Node*p;intfind;if(!equip-next){printf(\n提示:没有资料可以修改!\n);return;}printf(请输入要修改的设备ID号:);scanf(%d,&find);p=equip-next;while(p!=NULL){if(p-data.ID==find)//如果找到的话返回的是符合要求break;p=p-next;}if(p)//若找到{intx;while(1){printf(完成修改请输入0否则输入任意数再进行修改:);scanf(%d,&x);if(x==0){break;}printf(请输入新设备号(原来是%d):,p-data.ID);scanf(%d,&p-data.ID);printf(请输入新设备名称(原来是%s):,p-data.name);scanf(%s,p-data.name);printf(请输入新设备设备种类名称(原来是%s):,p-data.kind);scanf(%s,p-data.kind);printf(请输入新设备报废日期名称(原来是%d):,p-data.over);scanf(%d,&p-data.over);printf(请输入新设备是否报废(原来是%s):,p-data.yesno);scanf(%s,p-data.yesno);printf(请输入新设备购买时间(原来是%d):,p-data.kind);scanf(%d,&p-data.time);printf(请输入新设备价格(原来是%d):,p-data.price);scanf(%d,&p-data.price);printf(\n提示:该项记录资料已经成功修改!\n);}}elseprintf(\n提示:你要修改的信息不存在!\n);}voidDisp(Node*equip)//输出记录{Node*p;p=equip-next;if(p==NULL){printf(\n提示:没有记录可以显示!\n);return;}printf(\t\t\t\t显示结果\n);printf(设备号设备名称设备种类报废日期是否报废购买时间价格\n);while(p!=NULL){printf(\n%-13d%-11s%-7s%-10d%-13s%-10d%-5d\n,p-data.ID,p-data.name,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price);p=p-next;}}voidsearch(Node*equip)/*数据查询函数*/{Node*p;p=equip-next;intfind;if(!p){printf(\n提示:没有记录可以显示!\n);return;}else{printf(请输入要查询设备设备的ID:);scanf(%d,&find);while(p){if(p-data.ID==find){printf(\t\t\t\t显示结果\n);printf(设备号设备名称设备种类报废日期是否报废购买时间价格\n);printf(\n%-13d%-11s%-7s%-10d%-13s%-10d%-5d\n,p-data.ID,p-data.name,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price);break;}p=p-next;}}printf(----------------------------------------\n没有您要查找的设备了...\n);}voiddelet(Node*equip)/*删除函数*/{intnum;Node*p,*pre;if(equip-next==NULL){printf(无可操作的设备信息!\n);}else{printf(请输入要删除的设备的ID:);scanf(%d,&num);if(equip-data.ID==num){p=equip;equip=equip-next;printf(删除成功!!:\n);}else{{pre=equip;p=pre-next;while(p!=NULL&&p-data.ID!=num){pre=p;p=p-next;}if(p-data.ID==num){pre-next=p-next;printf(删除成功!!:);}free(p);}}}}voidhelp(){printf(在主界面输入1-7的数字\n再按回车键可以进入到相应的功能界面进行操作\n另外:系统保存的文件存放在D:\\设备管理系统,请勿随便删除!!!\n);}voidmain(){Node*equip;FILE*fp;intflag;Node*p,*q;printf(\t\t\t\t实验室设备管理系统.txt\n);equip=(Node*)malloc(sizeof(Node));equip-next=NULL;p=equip;if((fp=fopen(D:\\设备管理系统.txt,r))==NULL)/*从文件只读数据*/{fp=fopen(D:\\设备管理系统.txt,w+);}q=(Node*)malloc(sizeof(Node));if(fread(q,sizeof(Node),1,fp))//将文件的内容放入接点中{q-next=NULL;p-next=q;p=q;//将该接点挂入链表中}fclose(fp);//关闭文件while(1){system(cls);printf(**************************************目录**************************************);printf(\n1添加记录\n);printf(\n2修改记录\n);printf(\n3显示记录\n);printf(\n4查询设备\n);printf(\n5删除设备记录\n);printf(\n6记录的装载\n);printf(\n7文件的读取\n);printf(\n8简单的帮助\n);printf(\n0*-EXIT-*\n);printf(请输入你要操作的序号:\n);printf(提示:输入0则返回主菜单!\n);scanf(%d,&flag);switch(flag){case0:system(cls);printf(\n提示:已经退出系统,ByeBye!\n);break;case1:system(cls);Add(equip);break;//增加记录case2:system(cls);Modify(equip);break;//修改记录case3:system(cls);Disp(equip);break;//显示记录信息case4:system(cls);search(equip);break;//查询记录case5:system(cls);delet(equip);br