码迷,mamicode.com
首页 > 编程语言 > 详细

C语言 实验设备管理系统

时间:2018-06-28 23:01:42      阅读:416      评论:0      收藏:0      [点我收藏+]

标签:key   scan   else   cas   rcm   算法   tchar   tty   判断   

简单的思路,简单的算法

题目简述:实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备的查询需要提供查找操作。

结构体定义如下:

typedef struct equipmentInfo
{
  char equipCode[10];  //设备编号
  char equipType[20];  //设备总类
  char equipName[20]; //设备名称
  char equipPrice[20];    //设备价格
  char buyDate[20];   //设备购入日期
  int  scrap;         //是否报废,0表示没有报废,1表示报废
  char scrapDate[20];  //报废日期
}EquInfo;

在此做了六个模块,分别是:实验设备信息输入模块、实验设备信息添加模块、实验设备信息修改模块、实验设备分类统计模块、实验设备查询模块。

函数定义如下:

int Scaninfor();//浏览设备信息
int Inputinformation();//设备信息输入模块
int Addinfor();//设备信息添加模块
int Modifyinfor();//设备信息修改模块
int Classifyinfor();//设备分类统计模块
int Searchinfor();//设备查询模块

设计思路:

1.主函数模块
int main()
{
  提供菜单栏选项;
  用户选择(输入)相应标号进入相应模块;
  通过函数返回的值判断是否结束程序;
}
2.浏览模块
int Scaninfor()
{
  以r模式打开文件并按数据块读取;
  输出读到的内容;
}
3.输入模块
int Inputinformation()
{
  以w模式打开或创建文件(原有数据不保留);
  用户输入内容;
  按数据块将结构体数组写入文件;
  用户返回是否愿意继续操作;
}
4.追加模块
int Addinfor()
{
  以a模式打开文件并按数据块读取;
  用户输入内容;
  fseek找到文件末尾;
  按数据块将用户追加的结构体数组写入文件;
  用户返回是否愿意继续操作;
}
5.修改模块
int Modifyinfor()
{
  以r模式打开文件并按数据块读取;
  用户输入需要修改信息的设备编码;
  找到此编码,用户重新输入;
  以w模式打开文件,重新写入整个结构体数组;
  用户返回是否愿意继续操作;
}
6.分类统计模块
int Classifyinfor()
{
  以r模式打开文件并按数据块读取;
  菜单提供分类方式;
  用户输入相应标号进入相应模块;
  排序对应分类;
  用户输入想要查找的内容;
  查找并统计,输出总数;
  用户返回是否愿意继续操作;
}
7.查询模块
int Searchinfor()
{
  以r模式打开文件并按数据块读取;
  菜单提供用户想要的查询方式;
  选择相应标号进入相应模块;
  用户输入查找内容;
  遍历相应结构体数组变量;
  若与用户内容相同,输出此条信息;
  用户返回是否愿意继续操作;
}

源代码:

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <math.h>
  4 #include <string.h>
  5 #include <conio.h>
  6 #define N 20
  7 typedef struct equipmentInfo
  8 {
  9   char equipCode[10];  //设备编号
 10   char equipType[20];  //设备总类
 11   char equipName[20]; //设备名称
 12   char equipPrice[20];    //设备价格
 13   char buyDate[20];   //设备购入日期
 14   int  scrap;         //是否报废,0表示没有报废,1表示报废
 15   char scrapDate[20];  //报废日期
 16 }EquInfo;
 17 EquInfo equip[N];
 18 int Scaninfor();//浏览设备信息
 19 int Inputinformation();//设备信息输入模块
 20 int Addinfor();//设备信息添加模块
 21 int Modifyinfor();//设备信息修改模块
 22 int Classifyinfor();//设备分类统计模块
 23 int Searchinfor();//设备查询模块
 24 int i = 0;
 25 int main()
 26 {
 27     printf("*************************************\n");
 28     printf("*****  输入对应数字标号选择菜单\t*****\n");
 29     printf("*****\t[0]  浏览实验设备信息\t*****\n");
 30     printf("*****\t[1]  输入实验设备信息\t*****\n");
 31     printf("*****\t[2]  添加实验设备信息\t*****\n");
 32     printf("*****\t[3]  修改实验设备信息\t*****\n");
 33     printf("*****\t[4]  设备信息分类统计\t*****\n");
 34     printf("*****\t[5]  查询实验设备信息\t*****\n");
 35     printf("*****\t[6]  退出          \t*****\n");
 36     printf("*************************************\n");
 37     int menu,t;
 38     do
 39     {
 40         printf("请输入数字标号:\n");
 41         scanf("%d",&menu);
 42     }while(menu < 0 || menu > 6);
 43     switch(menu)
 44     {
 45         case 0:
 46             t = Scaninfor();break;
 47         case 1:
 48             t = Inputinformation();break;
 49         case 2:
 50             t = Addinfor();break;
 51         case 3:
 52             t = Modifyinfor();break;
 53         case 4:
 54             t = Classifyinfor();break;
 55         case 5:
 56             t = Searchinfor();break;
 57         case 6:
 58             exit(0);break;
 59         default:
 60             printf("INPUT ERROR !");
 61     }
 62     getchar();
 63     if(t == 48)
 64         return 0;
 65     else
 66         main();
 67 }
 68 int Scaninfor()
 69 {
 70     FILE *fp;
 71     int j,k;
 72     char a;
 73     if((fp = fopen("equipInfor.txt","r")) == NULL)
 74     {
 75         printf("Failure to open equipInfor.txt!\n");
 76         exit(0);
 77     }
 78     for(k = 0;!feof(fp);k++)
 79     {
 80         fread(&equip[k], sizeof(EquInfo), 1, fp);
 81     }
 82     printf("code\ttype           \tname\tprice\tbuydate        \tscrap\tscrapdate\n\n\n");
 83     for(j = 0;j < k-1;j++)
 84     {
 85         printf("%s\t%s\t%s\t%s\t%s\t%d\t%s\n\n",equip[j].equipCode, equip[j].equipType, equip[j].equipName, equip[j].equipPrice, equip[j].buyDate, equip[j].scrap, equip[j].scrapDate);
 86     }
 87     fclose(fp);
 88     printf("press 0 to exit or other key to return menu:\n");
 89     scanf(" %c",&a);
 90     return a;
 91 }
 92 int Inputinformation()
 93 {
 94     int n;
 95     char a;
 96     printf("Please input the number of equipments:");
 97     scanf("%d",&n);
 98     getchar();
 99     printf("Please input the equipCode, equipType, equipName,");
100     printf(" equipPrice, buyDate, scrap(no 0 or yes 1), scrapDate:\n");
101     do
102     {
103         printf("please input the information of %d:\n",i+1);
104         strcpy(equip[i].scrapDate, "no scrap");
105         printf("please input the equipCode:\n");
106         gets(equip[i].equipCode);
107         printf("please input the equipType:\n");
108         gets(equip[i].equipType);
109         printf("please input the equipName:\n");
110         gets(equip[i].equipName);
111         printf("please input the equipPrice:\n");
112         gets(equip[i].equipPrice);
113         printf("please input the buyDate:\n");
114         gets(equip[i].buyDate);
115         printf("please input is(1) or not(0) scrap:\n");
116         scanf("%d",&equip[i].scrap);
117         getchar();
118         if(equip[i].scrap == 1)
119         {
120             printf("please input the scrap date:\n");
121             gets(equip[i].scrapDate);
122         }
123         i++;
124     }while(i < n);
125     FILE *fp;
126     if((fp = fopen("equipInfor.txt","w")) == NULL)
127     {
128         printf("Failure to open equipInfor.txt!\n");
129         exit(0);
130     }
131     fwrite(equip, sizeof(EquInfo), n, fp);
132     fclose(fp);
133     printf("press 0 to exit or other key to return menu:\n");
134     scanf(" %c",&a);
135     return a;
136 }
137 int Addinfor()
138 {
139     int k = 0,j;
140     FILE *fp;
141     if((fp = fopen("equipInfor.txt","a")) == NULL)
142     {
143         printf("Failure to open equipInfor.txt!\n");
144         exit(0);
145     }
146     int n;
147     char a;
148     printf("Please input the number of the adding equipments:");
149     scanf("%d",&n);
150     getchar();
151     printf("Please input the equipCode,equipType,equipName,");
152     printf("equipPrice,buyDate,scrap(no 0 or yes 1),scrapDate:\n");
153     do
154     {
155         printf("please input the adding information of %d:\n",k+1);
156         strcpy(equip[k].scrapDate, "no scrap");
157         printf("please input the equipCode:\n");
158         gets(equip[k].equipCode);
159         printf("please input the equipType:\n");
160         gets(equip[k].equipType);
161         printf("please input the equipName:\n");
162         gets(equip[k].equipName);
163         printf("please input the equipPrice:\n");
164         gets(equip[k].equipPrice);
165         printf("please input the buyDate:\n");
166         gets(equip[k].buyDate);
167         printf("please input is(1) or not(0) scrap:\n");
168         scanf("%d",&equip[k].scrap);
169         getchar();
170         if(equip[k].scrap == 1)
171         {
172             printf("please input the scrap date:\n");
173             gets(equip[k].scrapDate);
174         }
175         k++;
176     }while(k < n);
177     fseek(fp,0,SEEK_END);
178     for(j = 0;j<n;j++)
179         fwrite(&equip[j], sizeof(EquInfo), 1, fp);
180     fclose(fp);
181     printf("press 0 to exit or other key to return menu:\n");
182     scanf(" %c",&a);
183     return a;
184 }
185 int Modifyinfor()
186 {
187     FILE *fp;
188     int k,j,a,b,l;
189     char c;
190     char code[20];
191     getchar();
192     printf("please input the equipCode of the equipment which you want to modify:\n");
193     gets(code);
194     if((fp = fopen("equipInfor.txt","r")) == NULL)
195     {
196         printf("Failure to open equipInfor.txt!\n");
197         exit(0);
198     }
199     for(k = 0;!feof(fp);k++)
200     {
201         fread(&equip[k], sizeof(EquInfo), 1, fp);
202     }
203     for(j = 0;j < k;j++)
204     {
205         a = strcmp(equip[j].equipCode,code);
206         if(a == 0)
207         {
208             printf("please modify(re-input) the information:\n");
209             strcpy(equip[j].scrapDate, "no scrap");
210             printf("please input the equipCode:\n");
211             gets(equip[j].equipCode);
212             printf("please input the equipType:\n");
213             gets(equip[j].equipType);
214             printf("please input the equipName:\n");
215             gets(equip[j].equipName);
216             printf("please input the equipPrice:\n");
217             gets(equip[j].equipPrice);
218             printf("please input the buyDate:\n");
219             gets(equip[j].buyDate);
220             printf("please input is(1) or not(0) scrap:\n");
221             scanf("%d",&equip[j].scrap);
222             getchar();
223             if(equip[j].scrap == 1)
224             {
225                 printf("please input the scrap date:\n");
226                 gets(equip[j].scrapDate);
227             }
228             //k = j;
229             break;
230         }
231     }
232     if(a)
233         printf("don‘t find the equipCode that you input\n");
234     fclose(fp);
235     if((fp = fopen("equipInfor.txt","w")) == NULL)
236     {
237         printf("Failure to open equipInfor.txt!\n");
238         exit(0);
239     }
240     for(l = 0;l < k-1;l++)
241         fwrite(&equip[l], sizeof(EquInfo), 1, fp);
242     fclose(fp);
243     printf("press 0 to exit or other key to return menu:\n");
244     scanf(" %c",&c);
245     return a;
246 }
247 int Classifyinfor()
248 {
249     char a;
250     FILE *fp;
251     int q,count = 0,j,k;
252     int total;
253     char s[N],temp[N],*te;
254     printf("*****\t[1] 设备种类\t*****\n");
255     printf("*****\t[2] 设备名称\t*****\n");
256     printf("*****\t[3] 购买日期\t*****\n");
257     printf("请输入你想要的分类方式:");
258     scanf("%d",&q);
259     getchar();
260     if((fp = fopen("equipInfor.txt","r")) == NULL)
261     {
262         printf("Failure to open equipInfor.txt!\n");
263         exit(0);
264     }
265     for(total = 0;!feof(fp);total++)
266     {
267         fread(&equip[total], sizeof(EquInfo), 1, fp);
268     }
269     switch(q)
270     {
271         case 1:
272             printf("please input the equipType:\n");
273             gets(s);
274             for(j = 0;j < total-1;j++)
275             {
276                 for(k = 1;k < total;k++)
277                 {
278                     if(strcmp(equip[k].equipType,equip[j].equipType) < 0)
279                     {
280                         strcpy(temp, equip[k].equipType);
281                         strcpy(equip[k].equipType, equip[j].equipType);
282                         strcpy(equip[j].equipType, temp);
283                     }
284                 }
285             }
286             for(j = 0;j < total;j++)
287             {
288                 if(strcmp(s,equip[j].equipType) == 0)
289                 {
290                     count++;
291                 }
292             }
293             printf("%s类型的实验仪器有%d台\n",s,count);
294             break;
295         case 2:
296             printf("please input the equipName:\n");
297             gets(s);
298             for(j = 0;j < total - 1;j++)
299             {
300                 for(k = 1;k < total;k++)
301                 {
302                     if(strcmp(temp,equip[j].equipName) < 0)
303                     {
304                         strcpy(temp, equip[k].equipName);
305                         strcpy(equip[k].equipName, equip[j].equipName);
306                         strcpy(equip[j].equipName, temp);
307                     }
308                 }
309             }
310             for(j = 0;j < total;j++)
311             {
312                 if(strcmp(s,equip[j].equipName) == 0)
313                 {
314                     count++;
315                 }
316             }
317             printf("%s名称的仪器有%d台\n",s,count);
318             break;
319         case 3:
320             printf("please input the buyDate:\n");
321             gets(s);
322             for(j = 0;j < total - 1;j++)
323             {
324                 for(k = 1;k < total;k++)
325                 {
326                     if(strcmp(s, equip[j].buyDate) < 0)
327                     {
328                         strcpy(temp, equip[k].buyDate);
329                         strcpy(equip[k].buyDate, equip[j].buyDate);
330                         strcpy(equip[j].buyDate, temp);
331                     }
332                 }
333             }
334             for(j = 0;j < total;j++)
335             {
336                 if(strcmp(s,equip[j].buyDate) == 0)
337                 {
338                     count++;
339                 }
340             }
341             printf("%s日期购买的仪器有%d台\n",s,count);
342             break;
343         default:
344             printf("INPUT ERROR !\n");
345     }
346     printf("press 0 to exit or other key to return menu:\n");
347     scanf(" %c",&a);
348     return a;
349 }
350 int Searchinfor()
351 {
352     int n,m,k;
353     char a;
354     FILE *fp;
355     printf("*************************************\n");
356     printf("*****\t[1]  按设备编号查询\t*****\n");
357     printf("*****\t[2]  按设备种类查询\t*****\n");
358     printf("*****\t[3]  按设备名称查询\t*****\n");
359     printf("*****\t[4]  按设备购入日期查询\t*****\n");
360     printf("*****\t[5]  按设备状态查询\t*****\n");
361     printf("*************************************\n");
362     printf("请输入所需要的查询方式:");
363     scanf("%d",&n);
364     getchar();
365     if((fp = fopen("equipInfor.txt","r")) == NULL)
366     {
367         printf("Failure to open equipInfor.txt!\n");
368         exit(0);
369     }
370     for(k = 0;!feof(fp);k++)
371     {
372         fread(&equip[k], sizeof(EquInfo), 1, fp);
373     }
374     int j,flag,sc;
375     switch(n)
376     {
377         case 1:
378             flag = 0;
379             char code[N];
380             printf("please input the equipCode:");
381             gets(code);
382             for(j = 0;j < k-1;j++)
383             {
384                 if(strcmp(equip[j].equipCode, code) == 0)
385                 {
386                     printf("%s\t%s\t%s\t%s\t%s\t%d\t%s\n",equip[j].equipCode, equip[j].equipType, equip[j].equipName, equip[j].equipPrice, equip[j].buyDate, equip[j].scrap, equip[j].scrapDate);
387                     flag = 1;
388                 }
389             }
390             if(!flag)
391                 printf("not find !");
392             break;
393         case 2:
394             flag = 0;
395             char type[N];
396             printf("please input the equipType:");
397             gets(type);
398             for(j = 0;j < k-1;j++)
399             {
400                 if(strcmp(equip[j].equipType, type) == 0)
401                 {
402                     printf("%s\t%s\t%s\t%s\t%s\t%d\t%s\n",equip[j].equipCode, equip[j].equipType, equip[j].equipName, equip[j].equipPrice, equip[j].buyDate, equip[j].scrap, equip[j].scrapDate);
403                     flag = 1;
404                 }
405             }
406             if(!flag)
407                 printf("not find !");
408             break;
409         case 3:
410             flag = 0;
411             char name[N];
412             printf("please input the equipName:");
413             gets(name);
414             for(j = 0;j < k-1;j++)
415             {
416                 if(strcmp(equip[j].equipName, name) == 0)
417                 {
418                     printf("%s\t%s\t%s\t%s\t%s\t%d\t%s\n",equip[j].equipCode, equip[j].equipType, equip[j].equipName, equip[j].equipPrice, equip[j].buyDate, equip[j].scrap, equip[j].scrapDate);
419                     flag = 1;
420                 }
421             }
422             if(!flag)
423                 printf("not find !");
424             break;
425         case 4:
426             flag = 0;
427             char date[N];
428             printf("please input the buyDate:");
429             gets(date);
430             for(j = 0;j < k-1;j++)
431             {
432                 if(strcmp(equip[j].buyDate, date) == 0)
433                 {
434                     printf("%s\t%s\t%s\t%s\t%s\t%d\t%s\n",equip[j].equipCode, equip[j].equipType, equip[j].equipName, equip[j].equipPrice, equip[j].buyDate, equip[j].scrap, equip[j].scrapDate);
435                     flag = 1;
436                 }
437             }
438             if(!flag)
439                 printf("not find !");
440             break;
441         case 5:
442             flag = 0;
443             printf("please input the scrap:");
444             scanf("%d",&sc);
445             for(j = 0;j < k-1;j++)
446             {
447                 if(equip[j].scrap == sc)
448                 {
449                     printf("%s\t%s\t%s\t%s\t%s\t%d\t%s\n",equip[j].equipCode, equip[j].equipType, equip[j].equipName, equip[j].equipPrice, equip[j].buyDate, equip[j].scrap, equip[j].scrapDate);
450                     flag = 1;
451                 }
452             }
453             if(!flag)
454                 printf("not find !");
455             break;
456         default:
457             printf("INPUT ERROR !");
458     }
459     printf("press 0 to exit or other key to return menu\n");
460     scanf(" %c",&a);
461     return a;
462 }

 

C语言 实验设备管理系统

标签:key   scan   else   cas   rcm   算法   tchar   tty   判断   

原文地址:https://www.cnblogs.com/zcl843264327/p/9240893.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!