C语言 实验设备管理系统

简单的思路,简单的算法

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

结构体定义如下:

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 }

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

时间: 2024-10-11 00:05:34

C语言 实验设备管理系统的相关文章

C语言实验——一元二次方程Ⅱ

C语言实验--一元二次方程Ⅱ Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 169  Solved: 131 [Submit][Status][Web Board] Description 求一元二次方程ax2+bx+c=0的解.a,b,c为任意实数. Input 输入数据有一行,包括a b c的值. Output 按以下格式输出方程的根x1和x2.x1和x2之间有一个空格. x1 x2 (1)如果x1和x2为实根,则以x1>=x2输出. (2)如

IT 资产管理系统/设备管理系统 B/S 结构

IT 资产管理系统/设备管理系统 企业永远在面临着--追踪一个动态的资产,资产天天都在变,如果用手工统计是跟不上的.设备的管理不规范,到底谁领用了设备,设备在哪里成为一个企业的一大困惑.这些难题让企业的IT领导工作难上加难. 同时企业也面临一系列资产管理的具体问题:如何更好地利用现有终端设备?如何更好地利用现有网络设备?到底现在库存里头还有多少设备?现在设备够用吗?需要买新的吗?有多少设备已经报废了?企业买了哪些软件?这些软件在哪?某一个厂家的设备好不好用,返修率高吗?这些年来的资产投入有多大?

sdut oj 1163 C语言实验——排列 (当初不会递归生成排列,这个题目现在才补上 刘汝佳给出了写法 *【模板】 当然有生成全排列的函数存在 )

C语言实验——排列 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 有4个互不相同的数字,请按序输出由其中三个不重复数字组成的排列. 输入 4个整数. 输出 所有排列,输出顺序见样例. 示例输入 1 2 3 4 示例输出 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 1 2 4 1 4 2 2 1 4 2 4 1 4 1 2 4 2 1 1 3 4 1 4 3 3 1 4 3 4 1 4 1 3 4

设备管理系统对企业的重要性

1.设备管理系统的背景分析 设备管理系统是企业内部的信息管理系统,是连接企业内部各生产部门的桥梁与纽带,起着核心作用.目前企业设备自动化管理水平不是很高.大多数设备管理办法是设备的采购进来以后,将设备的基本情况和相关信息登记存档,然后将档案存档.以后的档案基本就没人维护,如设备修改.删除情况.设备的当前运行状态等信息本不会呈现在管理工作人员面前,由于散乱.复杂.查找和整理不便,即设备跟踪信息不能及时体现在设备的档案上.某些企业采用专门人工整点,对设备的跟踪信息即使能记录在案,但无形中增加了繁重的

rwkj 1332 C语言实验四(函数):题目1、数字根

C语言实验四(函数):题目1.数字根 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte总提交:305            测试通过:185 描述 正整数的数字根是将数位上的数字求和进行计算而来.如果各位数字之和为一位的整数,那么这个整数就是这个数的数字根:如果之后为多位数,那么重复运用此规则进行计算直至求出一个一位数.例如12,那么它的数字根就为1+2=3:例如39那么它的数字根就为3+9=12,1+2=3,最终为3. 输入 每行输入

SDUT 1177 C语言实验——时间间隔

C语言实验--时间间隔 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Description 从键盘输入两个时间点(24小时制),输出两个时间点之间的时间间隔,时间间隔用"小时:分钟:秒"表示.如:3点5分25秒应表示为--03:05:25.假设两个时间在同一天内,时间先后顺序与输入无关. Input 输入包括两行.第一行为时间点1.第二行为时间点2. Output 以"小时

使用用基于WebGL架构的3D可视化平台ThingJS搭建-设备管理系统

国内高层建筑不断兴建,它的特点是高度高.层数多.体量大.面积可达几万平方米到几十万平方米.这些建筑都是一个个庞然大物,高高的耸立在地面上,这是它的外观,而随之带来的内部的建筑设备也是大量的.为了提高设备利用率,合理地使用能源,加强对建筑设备状态的监视等,自然地就提出了楼宇自动化控制系统.下面我们将用ThingJS平台来模拟一个设备管理系统. 第一步,利用CampusBuilder搭建模拟场景.CampusBuilder的模型库有各种各样的模型,使我们搭建出的场景更逼真.使用CampusBuild

C语言实验报告(三)

C语言实验报告(三) 实验项目: 4.3.1:if语句的应用 4.3.2:switch-case的应用 4.3.3:switch-case嵌套if语句的应用 4.3.4:switch-case结构嵌套的应用 4.3.5:分析程序 项目实训:计算器的实现 姓名:徐志平 实验地点:家  实验时间:2020.3.28 一.实验目的与要求 1.掌握C语言逻辑值的表示方法(0代表“假”,1代表“真”) 2.学会正确地使用关系表达式和逻辑表达式 3.掌握各种形式的if语句语法和使用方法.if语句中if和el

C语言学生学籍管理系统源码,有实验报告噢!

设计一个学生成绩管理系统,对上学期的本班的学习成绩进行管理,具有查询和检索功能,并且能够对指定文件操作,也可将多个文件组成一个文件?. A . ??设计内容 1 .每一条记录包括一个学生的学号.姓名.性别.各门课成绩(上学期的科目).平均成绩. 2 .输入功能:可以一次完成若干条记录的输入. 3 .显示功能:完成全部学生记录的显示. 4 .查找功能:完成按姓名或学号查找学生记录,并显示. 5 .排序功能:按学生平均成绩进行排序. 6 .插入功能:按 学号顺序插入 一条学生记录. 7 .将学生记录