《C语言课程设计报告》.docx
《《C语言课程设计报告》.docx》由会员分享,可在线阅读,更多相关《《C语言课程设计报告》.docx(25页珍藏版)》请在冰点文库上搜索。
《C语言课程设计报告》
YangtzeUniversityCollegeofArtsandScience
学生实习手册
(课程设计报告)
学部:
理工学部
专业:
电子信息工程
班级:
电信5111
姓名:
xx
学号:
xxxxxxx
课程名称:
C语言程序设计课设
指导教师:
杜红、呙明辉
实习时间:
2012年7月6日至2012年7月15日
一、题目
实验设备管理系统设计
二、设计目的
设备信息包括:
设备编号、设备种类(如:
微机打印机扫描仪等等)、设备名字、设备价格、设备购入日期、是否报废、报废日期、维修费、处理方式。
本课将要设计的程序需要实现以下功能:
(1)录入设备信息
(2)对设备信息进行查询(以不同的方式查询)
(3)对设备信息的修改(只修该需要修改的项)
(4)对设备进行分类统计
(5)对设备以编号的大小进行排序
(6)删除设备信息
三、总体设计
程序设计组成框图、流程图
1.程序的主题部分。
2.修改功能的框图结构。
3.删除功能的框图结构。
四、详细设计
主函数被定义了结构体,方便以后函数调用。
结构体定义了两个,前者
structEquipment
{
charnumber[20];//设备编号//
chartype[20];//设备种类//
charname[20];//设备名称//
intprice;//设备价格//
chardate[20];//购入日期//
charstate[10];//是否报废//
charworrydate[10];//报废日期//
intrepair;//破损耗费//
chardispose[10];//处理方法//
};中的设备种类为不同设备的数目,后者
structStr
chartype[10];//设备的类型//
intnum;//类型的数量//
};某种设备的数目。
二者不同,因此要分开定义。
在主函数下有有六个模块,分别为:
录入模块、查询模块、修改模块、分类模块、排序模块、删除模块。
此外,还有一些单独定义的函数,如查找、读取、存储等。
1.录入模块:
录入模块中,先通过prinf来显示示例和提示,再通过scanf来输入相关数据。
并在结尾用了save,此函数保证了数据的存入(此存入非存入到内存中,而是通过建立文件的方式存储,保证了关闭程序后录入的数据仍然存在)。
数据会被存在一开始定义的数组之中。
而save(ep,2)中的2表明数据录入后不会覆盖原来的数据。
2.查询模块:
查询模块中,有四种查询方式。
这就运用了switch进行选择查询。
当然,之前会调用存有数据的数组equipment,这使用到了get。
在以编号查询的选项中,使用了查找函数,即find。
在以种类、名称查询的选项中,使用到了if和strcmp,用来比较字符串是否一致。
全部查询时,亦运用了if、strcmp,及“!
”、“&&”,是所有数据全部显示。
为了可以重复查找,用到了reset2(程序中定义的一种重置,作用是将以前的输入清除,方便再次操作,后不赘述)。
3.修改模块:
运用find查找要修改的数据。
switch用来选择修改的部分。
这一模块的头部定义了revise(修改)函数,此函数功能类似程序中的查找功能(即find)。
修改后的数据将直接覆盖原来对应的数据。
修改成功。
4.分类模块:
此模块定义了assort,通过对不同设备种类的对比,甄别出相同的种类,如果相同,则程序中的temp会自加1,这样便统计出了这个种类设备的数量。
这其中还运用了strcpy,作用是,如果某种设备只有一个,那么就相当于只选取了所有设备种类中的这个种类(这个种类代表的数字当然是1了),统计结果就是这种设备只有一个。
5.排序模块:
排序功能是以设备编号的大小排序来实现的。
选取数据的编号,通过比大小的方式来排列,即“冒泡”排序。
然后再让整体数据根据排序后的编号进行排列。
6.删除模块:
输入编号,通过find查找到该组数据。
然后用reset2将此组数据清零。
最后还要将此组已经清零的数据放到整个数组尾部,这样,该组数据就已经在形式上被删除了。
五、运行结果及分析
1.运行程序,显示主菜单。
2.输入功能编号1,进行对数据的录入。
3.输入功能编号2,进入查询功能。
程序设定有四种查询方式,输入1、2、3、4中任意数字进入相应的查询方式。
4.输入数字编号3,进入设备信息的修改功能。
输入要修改的设备的编号,按数字键提示进行相应项的修改。
修改完成后,输入数字键0,退出修改功能。
5.输入数字编号4,显示当前设备的分类情况。
6.输入数字编号5,进入排序功能。
各设备的编号将按照从小到大的顺序排列,设备信息也将一并显示出来。
7.输入数字编号6,进入删除功能。
输入想要删除的设备的编号,即可删除该设备的信息。
8.输入数字编号7后,按任意键即可退出程序。
六、调试与测试
程序是由一个小组具体分工后合作完成的,因此在将各个功能合并到一起的时候,经常会出现很多错误。
因此要进行一系列的查错和排错工作,即调试。
这就需要用到断点功能及“//”“/**/”符号。
其中断点可以用来在某一个特定位置终止程序。
“//”可以让该行禁用,而“/**/”可以让在其中的程序禁用。
在程序片段组合时,如果之前程序运行的很好,加入一部分后便出错,就必须通过一些调试的手段检查出错在哪里,然后通过不断更改来消除错误,最终达到准确无误。
程序完全做好后,虽然在编译的时候可能不会出现bug,但在运行时有可能会遇到错误,或者可以运行,但有些功能却存在缺陷。
测试程序,便可以寻找到相应的缺陷和错误,便于及时修改,使程序达到预期目标。
七、课程设计心得及体会
本次课程设计,让我得到了很大的提高。
尤其是在上机编程方面,以往上机的时间不长,而且很多时间都是参照书中的例子写一段很短的程序,而此次的课设,编制的是一个比较大的程序,我们小组本次的程序有三百多行,而以前我们连一个一百行的程序都没编制过,这对我们形成了很大的挑战。
本次的编程中,通过上网、看书查资料,我们接触到了很多很生疏,甚至从来都没有接触
过知识,使得我们学到了很多,而且同学之间的合作,增强了我们之间的默契,有利于培养合作的精神,也有利于我们将来的学习和工作。
在编制程序方面,我觉得,程序是不能一蹴而就的。
至少一蹴而就的程序不会尽善尽美。
程序编写要一步一步的完成。
首先,对于要编的程序要有一个总体思路。
要明确想要什么。
只要把思路理清楚了,程序就好编写了。
把程序分割成几个块,即多个函数,一块一块的编写。
然后将分散的函数用另外的函数连接起来或者用main函数连接。
到这一步,程序也就初步编成了,之后便是调试,检查错误。
最后我觉得还可以对于已经编写好的程序进行一些修改添加,使它更加人性化。
优化程序的阶段是很重要的。
最后,编程是要一步一步地去完成的,在追求自己梦想的时候也是一样,只有先踏出基础的一步,才能迈向更高远的一步,才能在在追逐梦想的道路上走的更远!
八、源程序清单和执行结果:
#include
#defineN100//定义最多存100组//
#defineM10
charnumber[20];//设备编号
chartype[20];//设备种类
charname[20];//设备名称
intprice;//设备价格
chardate[10];//购入日期
charstate[10];//是否报废
charworrydate[10];//报废日期
intrepair;//破损耗费
chardispose[10];//处理方法
};
chartype[10];//定义结构体//
intnum;
//查找
intfind(structEquipment*ep,char*num)
inti;
for(i=0;i{if(strcmp(num,ep[i].number)==0)//在查询,删除,修改中都要用到,单独定义,调用//{returni;//根据编号寻找用户需要的数据//}}printf("输入的编号不存在!\n");return-1;}//录入模块voidwrite(structEquipment*ep){voidsave(structEquipment*ep,int);inti,a;voidreset2(structEquipment*ep);//将录入模块重置,防止出错//reset2(ep);printf("请输入要输入的设备的个数:");scanf("%d",&a);printf("\n请输入每个设备的编号,种类,名字,价格,购入日期,是否报废,报废日期,维修费,处理方式:\n");printf("示例:1000微机联想A950002004/9/8是2012/9/7650闲置\n");printf("提示:请以空格键作为间隔符!!!!!\n\n");for(i=0;i{scanf("%s%s%s%d%s%s%s%d%s",ep[i].number,ep[i].type,ep[i].name,&ep[i].price\ep[i].date,ep[i].state,ep[i].worrydate,&ep[i].repair,ep[i].dispose);}save(ep,2);//保存操作数据//}//查询模块voidshow(structEquipment*ep){inti,a,t,k=0;chartemp[10];voidget(structEquipment*ep);voidreset2(structEquipment*ep);//重置此模块//reset2(ep);get(ep);//查询前先从文件中读取数据//printf("1.按编号查询2.按名称查询3.按种类查询4.全部查询\n");printf("请输入功能编号:");//选择查询类型//scanf("%d",&a);printf("\n");switch(a){case1:{printf("请输入设备的编号:");scanf("%s",temp);t=find(ep,temp);//用find查找用户所要操作的数据//printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[t].number,ep[t].type,ep[t].name,ep[t].price,ep[t].date,ep[t].state,ep[t].worrydate\ep[t].repair,ep[t].dispose);}break;case2:{printf("请输入设备的名称:");scanf("%s",temp);for(i=0;strcmp(ep[i].name,"\0")!=0&&i{if(strcmp(ep[i].name,temp)==0){k=1;printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate\ep[i].repair,ep[i].dispose);}}if(k==0)printf("输入设备的名称不存在!");}break;case3:{printf("请输入设备的种类:");scanf("%s",temp);for(i=0;strcmp(ep[i].type,"\0")!=0&&i{if(strcmp(ep[i].type,temp)==0){k=1;printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate\ep[i].repair,ep[i].dispose);}}if(k==0)printf("输入设备的种类不存在!");}break;case4:{for(i=0;strcmp(ep[i].number,"\0")!=0&&i{printf("\n编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}}break;default:printf("输入错误!\n");}}//读取voidget(structEquipment*ep){inti;FILE*fp;fp=fopen("equipment.dat","rb");//以只读方式打开二进制文件,只能读数据,文件必须存在//if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;i{fscanf(fp,"%s%s%s%d%s%s%s%d%s",ep[i].number,ep[i].type,ep[i].name,&ep[i].price\ep[i].date,ep[i].state,ep[i].worrydate,&ep[i].repair,ep[i].dispose);}fclose(fp);}//存储voidsave(structEquipment*ep,inta){inti;switch(a){case1:{FILE*fp;fp=fopen("equipment.dat","wb");//以只写方式打开二进制文件,文件不存在则新建一个,存在则覆盖//if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;strcmp(ep[i].number,"\0")!=0&&i{fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}fclose(fp);};break;case2:{FILE*fp;fp=fopen("equipment.dat","ab");//以追加方式打开二进制文件,向已存文件的末尾添加数据(原数据不会被覆盖//)if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;strcmp(ep[i].number,"\0")!=0&&i{fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}fclose(fp);};break;}}//修改模块voidrevise(structEquipment*ep,structStr*str){inti,t,k;chartemp[10];voidreset2(structEquipment*ep);reset2(ep);//重置此模块,清0//get(ep);//读取数据//printf("请输入要修改设备的编号:");scanf("%s",temp);t=find(ep,temp);//用find查找用户所要操作的数据//printf("原设备的信息:\n");printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[t].number,ep[t].type,ep[t].name,ep[t].price,ep[t].date,ep[t].state,ep[t].worrydate,ep[t].repair,ep[t].dispose);for(i=0;i{while(1){printf("\n请选择要修改内容的功能号:\n(1-编号\n2-种类\n3-名称\n4-价格\\n5-购入日期\n6-是否报废\n7-报废日期\n8-维修费\n9-处理方法\n0-保存并退出)\n");scanf("%d",&k);switch(k){case1:printf("设备新的编号为:");scanf("%s",ep[t].number);break;case2:printf("设备新的种类为:");scanf("%s",ep[t].type);break;case3:printf("设备新的名称为:");scanf("%s",ep[t].name);break;case4:printf("设备新的价格为:");scanf("%d",&ep[t].price);break;case5:printf("设备的购入日期:");scanf("%s",ep[t].date);break;case6:printf("设备是否保废:");scanf("%s",ep[t].state);break;case7:printf("设备的报废日期:");scanf("%s",ep[t].worrydate);break;case8:printf("设备的维修费为:");scanf("%d",&ep[t].repair);break;case9:printf("设备的处理方法:");scanf("%s",ep[t].dispose);break;case0:printf("EXIT!\n");str[i].num=0;save(ep,1);return;break;//default:printf("您已选择返回主菜单!!");break;}printf("修改成功!\n");}}//修改后自动保存//}//分类模块voidassort(structEquipment*ep,structStr*str){inti=0,j=0,temp=0;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&i{temp=0;for(j=0;(strcmp(str[j].type,"\0")!=0)&&j{if(strcmp(str[j].type,ep[i].type)==0){str[j].num++;temp=1;}}if(temp==0){strcpy(str[j].type,ep[i].type);str[j].num++;}}for(i=0;(strcmp(str[i].type,"\0")!=0)&&i{printf("%s的数目为:%d\n",str[i].type,str[i].num);}save(ep,1);}//排序voidorder(structEquipment*ep){inti,n,j;structEquipmentt;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&in=i-1;for(i=0;ifor(j=0;jif(strcmp(ep[j].number,ep[j+1].number)>0){t=ep[j];ep[j]=ep[j+1];ep[j+1]=t;}for(i=0;strcmp(ep[i].number,"\0")!=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
if(strcmp(num,ep[i].number)==0)//在查询,删除,修改中都要用到,单独定义,调用//
returni;//根据编号寻找用户需要的数据//
}
printf("输入的编号不存在!
\n");
return-1;
//录入模块
voidwrite(structEquipment*ep)
voidsave(structEquipment*ep,int);
inti,a;
voidreset2(structEquipment*ep);//将录入模块重置,防止出错//
reset2(ep);
printf("请输入要输入的设备的个数:
");
scanf("%d",&a);
printf("\n请输入每个设备的编号,种类,名字,价格,购入日期,是否报废,报废日期,维修费,处理方式:
printf("示例:
1000微机联想A950002004/9/8是2012/9/7650闲置\n");
printf("提示:
请以空格键作为间隔符!
!
\n\n");
for(i=0;i{scanf("%s%s%s%d%s%s%s%d%s",ep[i].number,ep[i].type,ep[i].name,&ep[i].price\ep[i].date,ep[i].state,ep[i].worrydate,&ep[i].repair,ep[i].dispose);}save(ep,2);//保存操作数据//}//查询模块voidshow(structEquipment*ep){inti,a,t,k=0;chartemp[10];voidget(structEquipment*ep);voidreset2(structEquipment*ep);//重置此模块//reset2(ep);get(ep);//查询前先从文件中读取数据//printf("1.按编号查询2.按名称查询3.按种类查询4.全部查询\n");printf("请输入功能编号:");//选择查询类型//scanf("%d",&a);printf("\n");switch(a){case1:{printf("请输入设备的编号:");scanf("%s",temp);t=find(ep,temp);//用find查找用户所要操作的数据//printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[t].number,ep[t].type,ep[t].name,ep[t].price,ep[t].date,ep[t].state,ep[t].worrydate\ep[t].repair,ep[t].dispose);}break;case2:{printf("请输入设备的名称:");scanf("%s",temp);for(i=0;strcmp(ep[i].name,"\0")!=0&&i{if(strcmp(ep[i].name,temp)==0){k=1;printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate\ep[i].repair,ep[i].dispose);}}if(k==0)printf("输入设备的名称不存在!");}break;case3:{printf("请输入设备的种类:");scanf("%s",temp);for(i=0;strcmp(ep[i].type,"\0")!=0&&i{if(strcmp(ep[i].type,temp)==0){k=1;printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate\ep[i].repair,ep[i].dispose);}}if(k==0)printf("输入设备的种类不存在!");}break;case4:{for(i=0;strcmp(ep[i].number,"\0")!=0&&i{printf("\n编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}}break;default:printf("输入错误!\n");}}//读取voidget(structEquipment*ep){inti;FILE*fp;fp=fopen("equipment.dat","rb");//以只读方式打开二进制文件,只能读数据,文件必须存在//if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;i{fscanf(fp,"%s%s%s%d%s%s%s%d%s",ep[i].number,ep[i].type,ep[i].name,&ep[i].price\ep[i].date,ep[i].state,ep[i].worrydate,&ep[i].repair,ep[i].dispose);}fclose(fp);}//存储voidsave(structEquipment*ep,inta){inti;switch(a){case1:{FILE*fp;fp=fopen("equipment.dat","wb");//以只写方式打开二进制文件,文件不存在则新建一个,存在则覆盖//if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;strcmp(ep[i].number,"\0")!=0&&i{fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}fclose(fp);};break;case2:{FILE*fp;fp=fopen("equipment.dat","ab");//以追加方式打开二进制文件,向已存文件的末尾添加数据(原数据不会被覆盖//)if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;strcmp(ep[i].number,"\0")!=0&&i{fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}fclose(fp);};break;}}//修改模块voidrevise(structEquipment*ep,structStr*str){inti,t,k;chartemp[10];voidreset2(structEquipment*ep);reset2(ep);//重置此模块,清0//get(ep);//读取数据//printf("请输入要修改设备的编号:");scanf("%s",temp);t=find(ep,temp);//用find查找用户所要操作的数据//printf("原设备的信息:\n");printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[t].number,ep[t].type,ep[t].name,ep[t].price,ep[t].date,ep[t].state,ep[t].worrydate,ep[t].repair,ep[t].dispose);for(i=0;i{while(1){printf("\n请选择要修改内容的功能号:\n(1-编号\n2-种类\n3-名称\n4-价格\\n5-购入日期\n6-是否报废\n7-报废日期\n8-维修费\n9-处理方法\n0-保存并退出)\n");scanf("%d",&k);switch(k){case1:printf("设备新的编号为:");scanf("%s",ep[t].number);break;case2:printf("设备新的种类为:");scanf("%s",ep[t].type);break;case3:printf("设备新的名称为:");scanf("%s",ep[t].name);break;case4:printf("设备新的价格为:");scanf("%d",&ep[t].price);break;case5:printf("设备的购入日期:");scanf("%s",ep[t].date);break;case6:printf("设备是否保废:");scanf("%s",ep[t].state);break;case7:printf("设备的报废日期:");scanf("%s",ep[t].worrydate);break;case8:printf("设备的维修费为:");scanf("%d",&ep[t].repair);break;case9:printf("设备的处理方法:");scanf("%s",ep[t].dispose);break;case0:printf("EXIT!\n");str[i].num=0;save(ep,1);return;break;//default:printf("您已选择返回主菜单!!");break;}printf("修改成功!\n");}}//修改后自动保存//}//分类模块voidassort(structEquipment*ep,structStr*str){inti=0,j=0,temp=0;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&i{temp=0;for(j=0;(strcmp(str[j].type,"\0")!=0)&&j{if(strcmp(str[j].type,ep[i].type)==0){str[j].num++;temp=1;}}if(temp==0){strcpy(str[j].type,ep[i].type);str[j].num++;}}for(i=0;(strcmp(str[i].type,"\0")!=0)&&i{printf("%s的数目为:%d\n",str[i].type,str[i].num);}save(ep,1);}//排序voidorder(structEquipment*ep){inti,n,j;structEquipmentt;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&in=i-1;for(i=0;ifor(j=0;jif(strcmp(ep[j].number,ep[j+1].number)>0){t=ep[j];ep[j]=ep[j+1];ep[j+1]=t;}for(i=0;strcmp(ep[i].number,"\0")!=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
scanf("%s%s%s%d%s%s%s%d%s",ep[i].number,ep[i].type,ep[i].name,&ep[i].price\
ep[i].date,ep[i].state,ep[i].worrydate,&ep[i].repair,ep[i].dispose);
save(ep,2);//保存操作数据//
//查询模块
voidshow(structEquipment*ep)
inti,a,t,k=0;
chartemp[10];
voidget(structEquipment*ep);
voidreset2(structEquipment*ep);//重置此模块//
get(ep);//查询前先从文件中读取数据//
printf("1.按编号查询2.按名称查询3.按种类查询4.全部查询\n");
printf("请输入功能编号:
");//选择查询类型//
printf("\n");
switch(a)
case1:
printf("请输入设备的编号:
scanf("%s",temp);
t=find(ep,temp);//用find查找用户所要操作的数据//
printf("编号:
%s\n种类:
%s\n名称:
%s\n价格:
%d\n购入日期:
%s\n是否报废:
%s\n报废日期:
%s\n维修费:
%d\n处理方式:
%s\n"\
ep[t].number,ep[t].type,ep[t].name,ep[t].price,ep[t].date,ep[t].state,ep[t].worrydate\
ep[t].repair,ep[t].dispose);
break;
case2:
printf("请输入设备的名称:
for(i=0;strcmp(ep[i].name,"\0")!
=0&&i{if(strcmp(ep[i].name,temp)==0){k=1;printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate\ep[i].repair,ep[i].dispose);}}if(k==0)printf("输入设备的名称不存在!");}break;case3:{printf("请输入设备的种类:");scanf("%s",temp);for(i=0;strcmp(ep[i].type,"\0")!=0&&i{if(strcmp(ep[i].type,temp)==0){k=1;printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate\ep[i].repair,ep[i].dispose);}}if(k==0)printf("输入设备的种类不存在!");}break;case4:{for(i=0;strcmp(ep[i].number,"\0")!=0&&i{printf("\n编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}}break;default:printf("输入错误!\n");}}//读取voidget(structEquipment*ep){inti;FILE*fp;fp=fopen("equipment.dat","rb");//以只读方式打开二进制文件,只能读数据,文件必须存在//if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;i{fscanf(fp,"%s%s%s%d%s%s%s%d%s",ep[i].number,ep[i].type,ep[i].name,&ep[i].price\ep[i].date,ep[i].state,ep[i].worrydate,&ep[i].repair,ep[i].dispose);}fclose(fp);}//存储voidsave(structEquipment*ep,inta){inti;switch(a){case1:{FILE*fp;fp=fopen("equipment.dat","wb");//以只写方式打开二进制文件,文件不存在则新建一个,存在则覆盖//if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;strcmp(ep[i].number,"\0")!=0&&i{fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}fclose(fp);};break;case2:{FILE*fp;fp=fopen("equipment.dat","ab");//以追加方式打开二进制文件,向已存文件的末尾添加数据(原数据不会被覆盖//)if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;strcmp(ep[i].number,"\0")!=0&&i{fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}fclose(fp);};break;}}//修改模块voidrevise(structEquipment*ep,structStr*str){inti,t,k;chartemp[10];voidreset2(structEquipment*ep);reset2(ep);//重置此模块,清0//get(ep);//读取数据//printf("请输入要修改设备的编号:");scanf("%s",temp);t=find(ep,temp);//用find查找用户所要操作的数据//printf("原设备的信息:\n");printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[t].number,ep[t].type,ep[t].name,ep[t].price,ep[t].date,ep[t].state,ep[t].worrydate,ep[t].repair,ep[t].dispose);for(i=0;i{while(1){printf("\n请选择要修改内容的功能号:\n(1-编号\n2-种类\n3-名称\n4-价格\\n5-购入日期\n6-是否报废\n7-报废日期\n8-维修费\n9-处理方法\n0-保存并退出)\n");scanf("%d",&k);switch(k){case1:printf("设备新的编号为:");scanf("%s",ep[t].number);break;case2:printf("设备新的种类为:");scanf("%s",ep[t].type);break;case3:printf("设备新的名称为:");scanf("%s",ep[t].name);break;case4:printf("设备新的价格为:");scanf("%d",&ep[t].price);break;case5:printf("设备的购入日期:");scanf("%s",ep[t].date);break;case6:printf("设备是否保废:");scanf("%s",ep[t].state);break;case7:printf("设备的报废日期:");scanf("%s",ep[t].worrydate);break;case8:printf("设备的维修费为:");scanf("%d",&ep[t].repair);break;case9:printf("设备的处理方法:");scanf("%s",ep[t].dispose);break;case0:printf("EXIT!\n");str[i].num=0;save(ep,1);return;break;//default:printf("您已选择返回主菜单!!");break;}printf("修改成功!\n");}}//修改后自动保存//}//分类模块voidassort(structEquipment*ep,structStr*str){inti=0,j=0,temp=0;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&i{temp=0;for(j=0;(strcmp(str[j].type,"\0")!=0)&&j{if(strcmp(str[j].type,ep[i].type)==0){str[j].num++;temp=1;}}if(temp==0){strcpy(str[j].type,ep[i].type);str[j].num++;}}for(i=0;(strcmp(str[i].type,"\0")!=0)&&i{printf("%s的数目为:%d\n",str[i].type,str[i].num);}save(ep,1);}//排序voidorder(structEquipment*ep){inti,n,j;structEquipmentt;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&in=i-1;for(i=0;ifor(j=0;jif(strcmp(ep[j].number,ep[j+1].number)>0){t=ep[j];ep[j]=ep[j+1];ep[j+1]=t;}for(i=0;strcmp(ep[i].number,"\0")!=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
if(strcmp(ep[i].name,temp)==0)
k=1;
ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate\
ep[i].repair,ep[i].dispose);
if(k==0)
printf("输入设备的名称不存在!
case3:
printf("请输入设备的种类:
for(i=0;strcmp(ep[i].type,"\0")!
=0&&i{if(strcmp(ep[i].type,temp)==0){k=1;printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate\ep[i].repair,ep[i].dispose);}}if(k==0)printf("输入设备的种类不存在!");}break;case4:{for(i=0;strcmp(ep[i].number,"\0")!=0&&i{printf("\n编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}}break;default:printf("输入错误!\n");}}//读取voidget(structEquipment*ep){inti;FILE*fp;fp=fopen("equipment.dat","rb");//以只读方式打开二进制文件,只能读数据,文件必须存在//if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;i{fscanf(fp,"%s%s%s%d%s%s%s%d%s",ep[i].number,ep[i].type,ep[i].name,&ep[i].price\ep[i].date,ep[i].state,ep[i].worrydate,&ep[i].repair,ep[i].dispose);}fclose(fp);}//存储voidsave(structEquipment*ep,inta){inti;switch(a){case1:{FILE*fp;fp=fopen("equipment.dat","wb");//以只写方式打开二进制文件,文件不存在则新建一个,存在则覆盖//if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;strcmp(ep[i].number,"\0")!=0&&i{fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}fclose(fp);};break;case2:{FILE*fp;fp=fopen("equipment.dat","ab");//以追加方式打开二进制文件,向已存文件的末尾添加数据(原数据不会被覆盖//)if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;strcmp(ep[i].number,"\0")!=0&&i{fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}fclose(fp);};break;}}//修改模块voidrevise(structEquipment*ep,structStr*str){inti,t,k;chartemp[10];voidreset2(structEquipment*ep);reset2(ep);//重置此模块,清0//get(ep);//读取数据//printf("请输入要修改设备的编号:");scanf("%s",temp);t=find(ep,temp);//用find查找用户所要操作的数据//printf("原设备的信息:\n");printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[t].number,ep[t].type,ep[t].name,ep[t].price,ep[t].date,ep[t].state,ep[t].worrydate,ep[t].repair,ep[t].dispose);for(i=0;i{while(1){printf("\n请选择要修改内容的功能号:\n(1-编号\n2-种类\n3-名称\n4-价格\\n5-购入日期\n6-是否报废\n7-报废日期\n8-维修费\n9-处理方法\n0-保存并退出)\n");scanf("%d",&k);switch(k){case1:printf("设备新的编号为:");scanf("%s",ep[t].number);break;case2:printf("设备新的种类为:");scanf("%s",ep[t].type);break;case3:printf("设备新的名称为:");scanf("%s",ep[t].name);break;case4:printf("设备新的价格为:");scanf("%d",&ep[t].price);break;case5:printf("设备的购入日期:");scanf("%s",ep[t].date);break;case6:printf("设备是否保废:");scanf("%s",ep[t].state);break;case7:printf("设备的报废日期:");scanf("%s",ep[t].worrydate);break;case8:printf("设备的维修费为:");scanf("%d",&ep[t].repair);break;case9:printf("设备的处理方法:");scanf("%s",ep[t].dispose);break;case0:printf("EXIT!\n");str[i].num=0;save(ep,1);return;break;//default:printf("您已选择返回主菜单!!");break;}printf("修改成功!\n");}}//修改后自动保存//}//分类模块voidassort(structEquipment*ep,structStr*str){inti=0,j=0,temp=0;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&i{temp=0;for(j=0;(strcmp(str[j].type,"\0")!=0)&&j{if(strcmp(str[j].type,ep[i].type)==0){str[j].num++;temp=1;}}if(temp==0){strcpy(str[j].type,ep[i].type);str[j].num++;}}for(i=0;(strcmp(str[i].type,"\0")!=0)&&i{printf("%s的数目为:%d\n",str[i].type,str[i].num);}save(ep,1);}//排序voidorder(structEquipment*ep){inti,n,j;structEquipmentt;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&in=i-1;for(i=0;ifor(j=0;jif(strcmp(ep[j].number,ep[j+1].number)>0){t=ep[j];ep[j]=ep[j+1];ep[j+1]=t;}for(i=0;strcmp(ep[i].number,"\0")!=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
if(strcmp(ep[i].type,temp)==0)
printf("输入设备的种类不存在!
case4:
for(i=0;strcmp(ep[i].number,"\0")!
=0&&i{printf("\n编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}}break;default:printf("输入错误!\n");}}//读取voidget(structEquipment*ep){inti;FILE*fp;fp=fopen("equipment.dat","rb");//以只读方式打开二进制文件,只能读数据,文件必须存在//if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;i{fscanf(fp,"%s%s%s%d%s%s%s%d%s",ep[i].number,ep[i].type,ep[i].name,&ep[i].price\ep[i].date,ep[i].state,ep[i].worrydate,&ep[i].repair,ep[i].dispose);}fclose(fp);}//存储voidsave(structEquipment*ep,inta){inti;switch(a){case1:{FILE*fp;fp=fopen("equipment.dat","wb");//以只写方式打开二进制文件,文件不存在则新建一个,存在则覆盖//if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;strcmp(ep[i].number,"\0")!=0&&i{fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}fclose(fp);};break;case2:{FILE*fp;fp=fopen("equipment.dat","ab");//以追加方式打开二进制文件,向已存文件的末尾添加数据(原数据不会被覆盖//)if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;strcmp(ep[i].number,"\0")!=0&&i{fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}fclose(fp);};break;}}//修改模块voidrevise(structEquipment*ep,structStr*str){inti,t,k;chartemp[10];voidreset2(structEquipment*ep);reset2(ep);//重置此模块,清0//get(ep);//读取数据//printf("请输入要修改设备的编号:");scanf("%s",temp);t=find(ep,temp);//用find查找用户所要操作的数据//printf("原设备的信息:\n");printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[t].number,ep[t].type,ep[t].name,ep[t].price,ep[t].date,ep[t].state,ep[t].worrydate,ep[t].repair,ep[t].dispose);for(i=0;i{while(1){printf("\n请选择要修改内容的功能号:\n(1-编号\n2-种类\n3-名称\n4-价格\\n5-购入日期\n6-是否报废\n7-报废日期\n8-维修费\n9-处理方法\n0-保存并退出)\n");scanf("%d",&k);switch(k){case1:printf("设备新的编号为:");scanf("%s",ep[t].number);break;case2:printf("设备新的种类为:");scanf("%s",ep[t].type);break;case3:printf("设备新的名称为:");scanf("%s",ep[t].name);break;case4:printf("设备新的价格为:");scanf("%d",&ep[t].price);break;case5:printf("设备的购入日期:");scanf("%s",ep[t].date);break;case6:printf("设备是否保废:");scanf("%s",ep[t].state);break;case7:printf("设备的报废日期:");scanf("%s",ep[t].worrydate);break;case8:printf("设备的维修费为:");scanf("%d",&ep[t].repair);break;case9:printf("设备的处理方法:");scanf("%s",ep[t].dispose);break;case0:printf("EXIT!\n");str[i].num=0;save(ep,1);return;break;//default:printf("您已选择返回主菜单!!");break;}printf("修改成功!\n");}}//修改后自动保存//}//分类模块voidassort(structEquipment*ep,structStr*str){inti=0,j=0,temp=0;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&i{temp=0;for(j=0;(strcmp(str[j].type,"\0")!=0)&&j{if(strcmp(str[j].type,ep[i].type)==0){str[j].num++;temp=1;}}if(temp==0){strcpy(str[j].type,ep[i].type);str[j].num++;}}for(i=0;(strcmp(str[i].type,"\0")!=0)&&i{printf("%s的数目为:%d\n",str[i].type,str[i].num);}save(ep,1);}//排序voidorder(structEquipment*ep){inti,n,j;structEquipmentt;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&in=i-1;for(i=0;ifor(j=0;jif(strcmp(ep[j].number,ep[j+1].number)>0){t=ep[j];ep[j]=ep[j+1];ep[j+1]=t;}for(i=0;strcmp(ep[i].number,"\0")!=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
printf("\n编号:
ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);
default:
printf("输入错误!
//读取
voidget(structEquipment*ep)
FILE*fp;
fp=fopen("equipment.dat","rb");//以只读方式打开二进制文件,只能读数据,文件必须存在//
if(fp==NULL)
printf("cannotopenthisfile!
exit(0);
for(i=0;i{fscanf(fp,"%s%s%s%d%s%s%s%d%s",ep[i].number,ep[i].type,ep[i].name,&ep[i].price\ep[i].date,ep[i].state,ep[i].worrydate,&ep[i].repair,ep[i].dispose);}fclose(fp);}//存储voidsave(structEquipment*ep,inta){inti;switch(a){case1:{FILE*fp;fp=fopen("equipment.dat","wb");//以只写方式打开二进制文件,文件不存在则新建一个,存在则覆盖//if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;strcmp(ep[i].number,"\0")!=0&&i{fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}fclose(fp);};break;case2:{FILE*fp;fp=fopen("equipment.dat","ab");//以追加方式打开二进制文件,向已存文件的末尾添加数据(原数据不会被覆盖//)if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;strcmp(ep[i].number,"\0")!=0&&i{fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}fclose(fp);};break;}}//修改模块voidrevise(structEquipment*ep,structStr*str){inti,t,k;chartemp[10];voidreset2(structEquipment*ep);reset2(ep);//重置此模块,清0//get(ep);//读取数据//printf("请输入要修改设备的编号:");scanf("%s",temp);t=find(ep,temp);//用find查找用户所要操作的数据//printf("原设备的信息:\n");printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[t].number,ep[t].type,ep[t].name,ep[t].price,ep[t].date,ep[t].state,ep[t].worrydate,ep[t].repair,ep[t].dispose);for(i=0;i{while(1){printf("\n请选择要修改内容的功能号:\n(1-编号\n2-种类\n3-名称\n4-价格\\n5-购入日期\n6-是否报废\n7-报废日期\n8-维修费\n9-处理方法\n0-保存并退出)\n");scanf("%d",&k);switch(k){case1:printf("设备新的编号为:");scanf("%s",ep[t].number);break;case2:printf("设备新的种类为:");scanf("%s",ep[t].type);break;case3:printf("设备新的名称为:");scanf("%s",ep[t].name);break;case4:printf("设备新的价格为:");scanf("%d",&ep[t].price);break;case5:printf("设备的购入日期:");scanf("%s",ep[t].date);break;case6:printf("设备是否保废:");scanf("%s",ep[t].state);break;case7:printf("设备的报废日期:");scanf("%s",ep[t].worrydate);break;case8:printf("设备的维修费为:");scanf("%d",&ep[t].repair);break;case9:printf("设备的处理方法:");scanf("%s",ep[t].dispose);break;case0:printf("EXIT!\n");str[i].num=0;save(ep,1);return;break;//default:printf("您已选择返回主菜单!!");break;}printf("修改成功!\n");}}//修改后自动保存//}//分类模块voidassort(structEquipment*ep,structStr*str){inti=0,j=0,temp=0;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&i{temp=0;for(j=0;(strcmp(str[j].type,"\0")!=0)&&j{if(strcmp(str[j].type,ep[i].type)==0){str[j].num++;temp=1;}}if(temp==0){strcpy(str[j].type,ep[i].type);str[j].num++;}}for(i=0;(strcmp(str[i].type,"\0")!=0)&&i{printf("%s的数目为:%d\n",str[i].type,str[i].num);}save(ep,1);}//排序voidorder(structEquipment*ep){inti,n,j;structEquipmentt;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&in=i-1;for(i=0;ifor(j=0;jif(strcmp(ep[j].number,ep[j+1].number)>0){t=ep[j];ep[j]=ep[j+1];ep[j+1]=t;}for(i=0;strcmp(ep[i].number,"\0")!=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
fscanf(fp,"%s%s%s%d%s%s%s%d%s",ep[i].number,ep[i].type,ep[i].name,&ep[i].price\
fclose(fp);
//存储
voidsave(structEquipment*ep,inta)
fp=fopen("equipment.dat","wb");//以只写方式打开二进制文件,文件不存在则新建一个,存在则覆盖//
=0&&i{fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}fclose(fp);};break;case2:{FILE*fp;fp=fopen("equipment.dat","ab");//以追加方式打开二进制文件,向已存文件的末尾添加数据(原数据不会被覆盖//)if(fp==NULL){printf("cannotopenthisfile!\n");exit(0);}for(i=0;strcmp(ep[i].number,"\0")!=0&&i{fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}fclose(fp);};break;}}//修改模块voidrevise(structEquipment*ep,structStr*str){inti,t,k;chartemp[10];voidreset2(structEquipment*ep);reset2(ep);//重置此模块,清0//get(ep);//读取数据//printf("请输入要修改设备的编号:");scanf("%s",temp);t=find(ep,temp);//用find查找用户所要操作的数据//printf("原设备的信息:\n");printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[t].number,ep[t].type,ep[t].name,ep[t].price,ep[t].date,ep[t].state,ep[t].worrydate,ep[t].repair,ep[t].dispose);for(i=0;i{while(1){printf("\n请选择要修改内容的功能号:\n(1-编号\n2-种类\n3-名称\n4-价格\\n5-购入日期\n6-是否报废\n7-报废日期\n8-维修费\n9-处理方法\n0-保存并退出)\n");scanf("%d",&k);switch(k){case1:printf("设备新的编号为:");scanf("%s",ep[t].number);break;case2:printf("设备新的种类为:");scanf("%s",ep[t].type);break;case3:printf("设备新的名称为:");scanf("%s",ep[t].name);break;case4:printf("设备新的价格为:");scanf("%d",&ep[t].price);break;case5:printf("设备的购入日期:");scanf("%s",ep[t].date);break;case6:printf("设备是否保废:");scanf("%s",ep[t].state);break;case7:printf("设备的报废日期:");scanf("%s",ep[t].worrydate);break;case8:printf("设备的维修费为:");scanf("%d",&ep[t].repair);break;case9:printf("设备的处理方法:");scanf("%s",ep[t].dispose);break;case0:printf("EXIT!\n");str[i].num=0;save(ep,1);return;break;//default:printf("您已选择返回主菜单!!");break;}printf("修改成功!\n");}}//修改后自动保存//}//分类模块voidassort(structEquipment*ep,structStr*str){inti=0,j=0,temp=0;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&i{temp=0;for(j=0;(strcmp(str[j].type,"\0")!=0)&&j{if(strcmp(str[j].type,ep[i].type)==0){str[j].num++;temp=1;}}if(temp==0){strcpy(str[j].type,ep[i].type);str[j].num++;}}for(i=0;(strcmp(str[i].type,"\0")!=0)&&i{printf("%s的数目为:%d\n",str[i].type,str[i].num);}save(ep,1);}//排序voidorder(structEquipment*ep){inti,n,j;structEquipmentt;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&in=i-1;for(i=0;ifor(j=0;jif(strcmp(ep[j].number,ep[j+1].number)>0){t=ep[j];ep[j]=ep[j+1];ep[j+1]=t;}for(i=0;strcmp(ep[i].number,"\0")!=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\
ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);
fp=fopen("equipment.dat","ab");//以追加方式打开二进制文件,向已存文件的末尾添加数据(原数据不会被覆盖//)
=0&&i{fprintf(fp,"%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name\ep[i].price,ep[i].date,ep[i].state,ep[i].worrydate,ep[i].repair,ep[i].dispose);}fclose(fp);};break;}}//修改模块voidrevise(structEquipment*ep,structStr*str){inti,t,k;chartemp[10];voidreset2(structEquipment*ep);reset2(ep);//重置此模块,清0//get(ep);//读取数据//printf("请输入要修改设备的编号:");scanf("%s",temp);t=find(ep,temp);//用find查找用户所要操作的数据//printf("原设备的信息:\n");printf("编号:%s\n种类:%s\n名称:%s\n价格:%d\n购入日期:%s\n是否报废:%s\n报废日期:%s\n维修费:%d\n处理方式:%s\n"\ep[t].number,ep[t].type,ep[t].name,ep[t].price,ep[t].date,ep[t].state,ep[t].worrydate,ep[t].repair,ep[t].dispose);for(i=0;i{while(1){printf("\n请选择要修改内容的功能号:\n(1-编号\n2-种类\n3-名称\n4-价格\\n5-购入日期\n6-是否报废\n7-报废日期\n8-维修费\n9-处理方法\n0-保存并退出)\n");scanf("%d",&k);switch(k){case1:printf("设备新的编号为:");scanf("%s",ep[t].number);break;case2:printf("设备新的种类为:");scanf("%s",ep[t].type);break;case3:printf("设备新的名称为:");scanf("%s",ep[t].name);break;case4:printf("设备新的价格为:");scanf("%d",&ep[t].price);break;case5:printf("设备的购入日期:");scanf("%s",ep[t].date);break;case6:printf("设备是否保废:");scanf("%s",ep[t].state);break;case7:printf("设备的报废日期:");scanf("%s",ep[t].worrydate);break;case8:printf("设备的维修费为:");scanf("%d",&ep[t].repair);break;case9:printf("设备的处理方法:");scanf("%s",ep[t].dispose);break;case0:printf("EXIT!\n");str[i].num=0;save(ep,1);return;break;//default:printf("您已选择返回主菜单!!");break;}printf("修改成功!\n");}}//修改后自动保存//}//分类模块voidassort(structEquipment*ep,structStr*str){inti=0,j=0,temp=0;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&i{temp=0;for(j=0;(strcmp(str[j].type,"\0")!=0)&&j{if(strcmp(str[j].type,ep[i].type)==0){str[j].num++;temp=1;}}if(temp==0){strcpy(str[j].type,ep[i].type);str[j].num++;}}for(i=0;(strcmp(str[i].type,"\0")!=0)&&i{printf("%s的数目为:%d\n",str[i].type,str[i].num);}save(ep,1);}//排序voidorder(structEquipment*ep){inti,n,j;structEquipmentt;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&in=i-1;for(i=0;ifor(j=0;jif(strcmp(ep[j].number,ep[j+1].number)>0){t=ep[j];ep[j]=ep[j+1];ep[j+1]=t;}for(i=0;strcmp(ep[i].number,"\0")!=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
//修改模块
voidrevise(structEquipment*ep,structStr*str)
inti,t,k;
voidreset2(structEquipment*ep);
reset2(ep);//重置此模块,清0//
get(ep);//读取数据//
printf("请输入要修改设备的编号:
printf("原设备的信息:
ep[t].number,ep[t].type,ep[t].name,ep[t].price,ep[t].date,ep[t].state,ep[t].worrydate,ep[t].repair,ep[t].dispose);
for(i=0;i{while(1){printf("\n请选择要修改内容的功能号:\n(1-编号\n2-种类\n3-名称\n4-价格\\n5-购入日期\n6-是否报废\n7-报废日期\n8-维修费\n9-处理方法\n0-保存并退出)\n");scanf("%d",&k);switch(k){case1:printf("设备新的编号为:");scanf("%s",ep[t].number);break;case2:printf("设备新的种类为:");scanf("%s",ep[t].type);break;case3:printf("设备新的名称为:");scanf("%s",ep[t].name);break;case4:printf("设备新的价格为:");scanf("%d",&ep[t].price);break;case5:printf("设备的购入日期:");scanf("%s",ep[t].date);break;case6:printf("设备是否保废:");scanf("%s",ep[t].state);break;case7:printf("设备的报废日期:");scanf("%s",ep[t].worrydate);break;case8:printf("设备的维修费为:");scanf("%d",&ep[t].repair);break;case9:printf("设备的处理方法:");scanf("%s",ep[t].dispose);break;case0:printf("EXIT!\n");str[i].num=0;save(ep,1);return;break;//default:printf("您已选择返回主菜单!!");break;}printf("修改成功!\n");}}//修改后自动保存//}//分类模块voidassort(structEquipment*ep,structStr*str){inti=0,j=0,temp=0;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&i{temp=0;for(j=0;(strcmp(str[j].type,"\0")!=0)&&j{if(strcmp(str[j].type,ep[i].type)==0){str[j].num++;temp=1;}}if(temp==0){strcpy(str[j].type,ep[i].type);str[j].num++;}}for(i=0;(strcmp(str[i].type,"\0")!=0)&&i{printf("%s的数目为:%d\n",str[i].type,str[i].num);}save(ep,1);}//排序voidorder(structEquipment*ep){inti,n,j;structEquipmentt;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&in=i-1;for(i=0;ifor(j=0;jif(strcmp(ep[j].number,ep[j+1].number)>0){t=ep[j];ep[j]=ep[j+1];ep[j+1]=t;}for(i=0;strcmp(ep[i].number,"\0")!=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
while
(1)
printf("\n请选择要修改内容的功能号:
\n(1-编号\n2-种类\n3-名称\n4-价格\
\n5-购入日期\n6-是否报废\n7-报废日期\n8-维修费\n9-处理方法\n0-保存并退出)\n");
scanf("%d",&k);
switch(k)
printf("设备新的编号为:
scanf("%s",ep[t].number);break;
printf("设备新的种类为:
scanf("%s",ep[t].type);break;
printf("设备新的名称为:
scanf("%s",ep[t].name);break;
printf("设备新的价格为:
scanf("%d",&ep[t].price);break;
case5:
printf("设备的购入日期:
scanf("%s",ep[t].date);break;
case6:
printf("设备是否保废:
scanf("%s",ep[t].state);break;
case7:
printf("设备的报废日期:
scanf("%s",ep[t].worrydate);break;
case8:
printf("设备的维修费为:
scanf("%d",&ep[t].repair);break;
case9:
printf("设备的处理方法:
scanf("%s",ep[t].dispose);break;
case0:
printf("EXIT!
str[i].num=0;
save(ep,1);
return;break;
//default:
printf("您已选择返回主菜单!
");break;
printf("修改成功!
//修改后自动保存//
//分类模块
voidassort(structEquipment*ep,structStr*str)
inti=0,j=0,temp=0;
get(ep);
=0&&i{temp=0;for(j=0;(strcmp(str[j].type,"\0")!=0)&&j{if(strcmp(str[j].type,ep[i].type)==0){str[j].num++;temp=1;}}if(temp==0){strcpy(str[j].type,ep[i].type);str[j].num++;}}for(i=0;(strcmp(str[i].type,"\0")!=0)&&i{printf("%s的数目为:%d\n",str[i].type,str[i].num);}save(ep,1);}//排序voidorder(structEquipment*ep){inti,n,j;structEquipmentt;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&in=i-1;for(i=0;ifor(j=0;jif(strcmp(ep[j].number,ep[j+1].number)>0){t=ep[j];ep[j]=ep[j+1];ep[j+1]=t;}for(i=0;strcmp(ep[i].number,"\0")!=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
temp=0;
for(j=0;(strcmp(str[j].type,"\0")!
=0)&&j{if(strcmp(str[j].type,ep[i].type)==0){str[j].num++;temp=1;}}if(temp==0){strcpy(str[j].type,ep[i].type);str[j].num++;}}for(i=0;(strcmp(str[i].type,"\0")!=0)&&i{printf("%s的数目为:%d\n",str[i].type,str[i].num);}save(ep,1);}//排序voidorder(structEquipment*ep){inti,n,j;structEquipmentt;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&in=i-1;for(i=0;ifor(j=0;jif(strcmp(ep[j].number,ep[j+1].number)>0){t=ep[j];ep[j]=ep[j+1];ep[j+1]=t;}for(i=0;strcmp(ep[i].number,"\0")!=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
if(strcmp(str[j].type,ep[i].type)==0)
str[j].num++;
temp=1;
if(temp==0)
strcpy(str[j].type,ep[i].type);
for(i=0;(strcmp(str[i].type,"\0")!
=0)&&i{printf("%s的数目为:%d\n",str[i].type,str[i].num);}save(ep,1);}//排序voidorder(structEquipment*ep){inti,n,j;structEquipmentt;voidreset2(structEquipment*ep);reset2(ep);get(ep);for(i=0;strcmp(ep[i].number,"\0")!=0&&in=i-1;for(i=0;ifor(j=0;jif(strcmp(ep[j].number,ep[j+1].number)>0){t=ep[j];ep[j]=ep[j+1];ep[j+1]=t;}for(i=0;strcmp(ep[i].number,"\0")!=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
printf("%s的数目为:
%d\n",str[i].type,str[i].num);
//排序
voidorder(structEquipment*ep)
inti,n,j;
structEquipmentt;
=0&&in=i-1;for(i=0;ifor(j=0;jif(strcmp(ep[j].number,ep[j+1].number)>0){t=ep[j];ep[j]=ep[j+1];ep[j+1]=t;}for(i=0;strcmp(ep[i].number,"\0")!=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
n=i-1;
for(i=0;ifor(j=0;jif(strcmp(ep[j].number,ep[j+1].number)>0){t=ep[j];ep[j]=ep[j+1];ep[j+1]=t;}for(i=0;strcmp(ep[i].number,"\0")!=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
for(j=0;jif(strcmp(ep[j].number,ep[j+1].number)>0){t=ep[j];ep[j]=ep[j+1];ep[j+1]=t;}for(i=0;strcmp(ep[i].number,"\0")!=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
if(strcmp(ep[j].number,ep[j+1].number)>0)
t=ep[j];
ep[j]=ep[j+1];
ep[j+1]=t;
=0&&iprintf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
printf("%s%s%s%d%s%s%s%d%s\n",ep[i].number,ep[i].type,ep[i].name,ep[i].price,ep[i].date,ep[i].state
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2