实验室设备管理系统

发布时间:2014-01-12 11:21:30   来源:文档文库   
字号:

作者简介

我是中国地质大学(武汉)计算机学院网络工程专业193131班的甘甜,于大一才开始学习c语言,在学习c语言之前未接触相关语言,对如此抽象的一门学问没什么认识,经过一学期学习,对c语言有了从无到有从浅到深的认识,从理论学习到上机实践,一步步深入了解,但由于学习时间短,难以对这门高深的学问有很深刻的认识,也很难熟练掌握程序设计的技巧,所以编程过程中产生疏漏甚至错误在所难免,望老师谅解,并希望老师批评指正。

摘要

本题主要是要求编一个程序来管理实验室设备,包括增加、修改和查询设备信息。

增加设备就是在原有的文件中写入一个新的信息,修改信息就是把原有信息进行更改,而查询信息就是把文件中的设备信息进行统计,并输出。

本程序有一个主函数、菜单主页面和三个被调函数,三个被调函数分别解觉增加设备、修改设备、查询设备这三个问题。

目录

作者简介

摘要

第一章 题目与概要设计

1.1题目要求

1.2需求分析

1.3概要设计

第二章 详细设计

2.1主函数

2.2功能模块设计

2.2-1信息添加模块

2.2-2信息修改模块

2.2-3信息查询模块

第三章 调试分析与执行结果

3.1主要页面截图

3.2编程中困难及解决办法

第四章 总结与心得

录(程序清单)

第一章 题目与概要设计

1. 题目要求

实验室设备管理系统

实验设备信息包括:设备编号、设备种类(如:微机 打印机 扫描仪 等等)、设备名称、设备价格、设备购入日期、是否报废、报废日期等。试设计一实验设备信息管理系统,使之能提供以下功能:

1)能够完成对设备的录入和修改

2)对设备进行分类统计

3)设备的查询

2.需求分析
实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号 设备种类 设备购入日期 正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜单以实现功能选择。

3.概要设计

1整个系统可设计为实验设备信息添加模块实验设备信息修改模块实验设备查询模块。
2)实验室设备信息结构体,结构体成员包括设备编号 设备种类 设备名称 设备价格 设备购入日期 是否报废 报废日期。

3)功能模块图

1. 主要的结构体为laboratory包括设备的基本信息:编号 种类 名称 价格 购买日期 是否报废 报废日期。主函数用的是switch语句,4个结果分别对应3个函数和退出,便于操作。

2. 被调函数1,解决增加新设备的问题。先打开文件,然后将新的用户信息写入文件中,依次写入设备编号 设备种类 设备名称 设备价格 设备购入日期 是否报废 报废日期。

3. 被调函数2,解决设备信息错误的问题。进行文件的读出操作,先根据设备名称或编号,利用if语句找到并输出原有信息,然后再用switch语句选择要修改的选项。

4. 被调函数3,查询设备信息并输出运算结果。这里主要是进行文件的读和写,运用if语句完成,查询是根据设备名称和编号分类进行,利strcmp语句查找相同名称类。然后输出所有相关结果。

第二章 详细设计

一、模块

1.主函数

void main()

{

FILE *fp;

fp=fopen("LABORATORY.txt","r");

while(fscanf(fp,"%d %s %s %s %s %s %s",&s[N].num,s[N].type,

s[N].devicename,s[N].price,s[N].buytime,s[N].condition,s[N].worthlesstime)!=EOF)N++;

fclose(fp);

menu();

}

2. 菜单

N

Y

void menu()

{int sele,t;

sele=1;

while(sele)

{system("cls");

printf("\n\n");

printf(" ************************************************\n");

printf(" * *\n");

printf(" * 欢迎来到实验室设备管理系统! *\n");

printf(" * *\n");

printf(" * 1.添加信息 *\n");

printf(" * *\n");

printf(" * 2.修改信息 *\n");

printf(" * *\n");

printf(" * 3.查询信息 *\n");

printf(" * *\n");

printf(" * 4.退出 *\n");

printf(" ************************************************\n");

printf("请选择功能序号:");

scanf("%d",&t);

switch(t)

{ case 1:Append();break;

case 2:Modify();break;

case 3:Query();break;

case 4:sele=0;break;

}

printf("\n\n按任意键继续\n");

getch();

}

}

3. 添加模块

void Append()

{

int n,i;

printf("可输入增加的设备数:");

scanf("%d",&n);N=n+N;

printf("现在,请输入相关信息:\n");

for (i=1;i<=n;i++)

{

printf("编号:");

scanf("%d",&s[N-n-1+i].num);

printf("种类:");

scanf("%s",&s[N-n-1+i].type);

printf("名称:");

scanf("%s",&s[N-n-1+i].devicename);

printf("价格:");

scanf("%s",&s[N-n-1+i].price);

printf("购买日期:");

scanf("%s",&s[N-n-1+i].buytime);

printf("是否报废:");

scanf("%s",&s[N-n-1+i].condition);

printf("报废日期:");

scanf("%s",&s[N-n-1+i].worthlesstime);

}

}

4. 修改模块

N

Y

Y N

void Modify()

{ int i,j=-1,d,t;char m[20];

N=M;

printf("\n\n\n");

printf(" ************************************************\n");

printf(" * *\n");

printf(" * *\n");

printf(" * *\n");

printf(" * 1.名称 2.编号 *\n");

printf(" * *\n");

printf(" * *\n");

printf(" * *\n");

printf(" ************************************************\n");

printf("请输入修改选项:");

scanf("%d",&i);

if(i==1)

{

printf("请输入名称:");

scanf("%s",&m);

for(i=0;i

if(strcmp(m,s[i].devicename)==0)

j=i;

}

else if(i==2)

{

printf("请输入编号:");

scanf("%d",&d);

for(i=0;i

if(d==s[i].num)

j=i;

}

if(j==-1)

printf("没有找到!\n");

else{

printf("编号 种类 名称 价格 购买日期 是否报废 报废日期\n");

printf("%-4d %-4s %-4s %-5s %-5s %-8s %-5s ",s[j].num,s[j].type,

s[j].devicename,s[j].price,s[j].buytime,s[j].condition,s[j].worthlesstime);

}

printf("\n\n\n");

printf(" ************************************************\n");

printf(" * *\n");

printf(" * 1.编号 2.种类 *\n");

printf(" * *\n");

printf(" * 3.名称 4.价格 *\n");

printf(" * *\n");

printf(" * 5.购买日期 6.是否报废 *\n");

printf(" * *\n");

printf(" * 7.报废日期 *\n");

printf(" * *\n");

printf(" ************************************************\n");

printf("\n\n请输入要修改的选项: ");

scanf("%d",&t);

switch(t)

{

case 1:printf("编号改为:");scanf("%d",&s[j].num);break;

case 2:printf("种类改为:");scanf("%s",s[j].type);break;

case 3:printf("名称改为:");scanf("%s",s[j].devicename);break;

case 4:printf("价格改为:");scanf("%s",s[j].price);break;

case 5:printf("购买日期改为:");scanf("%s",s[j].buytime);break;

case 6:printf("是否报废改为:");scanf("%s",s[j].condition);break;

case 7:printf("报废日期改为:");scanf("%s",s[j].worthlesstime);break;

}

}

5. 查询模块

N

Y

Y N

void Query()

{int i,j=-1,d,k,t=0;

char m[20];

N=M;

printf("查询模块:");

printf("\n\n\n");

printf(" ************************************************\n");

printf(" * *\n");

printf(" * *\n");

printf(" * *\n");

printf(" * 1.名称 2.编号 *\n");

printf(" * *\n");

printf(" * *\n");

printf(" * *\n");

printf(" ************************************************\n");

printf("\n\n请输入查询选项: ");

scanf("%d",&k);

if(k==1)

{printf("请输入名称:");

scanf("%s",m);

for(i=0;i<3;i++)

if(strcmp(m,s[i].devicename)==0)

j=i;

}

if(k==2)

{

printf("请输入编号:");

scanf("%d",&d);

for(i=0;i<3;i++)

if(d==s[i].num)

j=i;

}

if(j==-1)

{ printf("没有找到!\n");}

if(j!=-1)

{printf("编号 种类 名称 价格 购买日期 是否报废 报废日期\n");

printf("%-4d %-4s %-4s %-5s %-7s %-5s %-5s",s[j].num,s[j].type,

s[j].devicename,s[j].price,s[j].buytime,s[j].condition,s[j].worthlesstime);

}

printf("\n");

system("pause");

menu();

}

第三章 调试分析

一、主要页面截图

1.菜单

6. 添加信息

3.修改信息

1)修改主页面

2)按名称

3)按编号

4.查询信息

1)查询主页面

2)按名称

3)按编号

二、编程中困难及解决办法

到大学才开始接触C语言,加之第一次面对这样系统性的大题,我有点束手无策了。后来在老师和同学们的提点下,我参阅了相关书籍,才慢慢理清思路,编好这个程序。

在设计程序的过程中,遇到以下几点问题

1.结构体定义的时候,把字符型定义成了整型且未规定长度,导致输入数据超过长度,文件因内存原因而无法读,后来通过同学的指正以及参考同学编出的类似系统,问题才得到解决。

2.编译主函数的时候,粗心的少了输入文件fscanf,使文件打开之后又直接关闭,而不能写入。好在后来还是检查出来并改正了。

3.编写查询模块时,错误的将字符赋值比较,导致编译时就出错。后来strcmp语句让输入名与设备名称比较,从而查找相关信息。

4.在运用scanf输入时,错误的将数组前面也带了&,后来又查看书籍温习相关知识,才改正过来。

5.在写完程序后,出现了很多个错误,让人感到非常泄气,后来经同学提点帮助,自己又从头到尾一遍一遍的检查,才逐次改正

第四章 总结与心得

短短几天的课程设计,真的有让我学到很多从开始的茫然不知所措,到后来的有点头绪,再到一点点编出各个部分函数,最终拼成一个完整的函数,并一点点解决程序中出现的问题。当看到程序最终成功的做完时,心中真的有一种成功的幸福感,那是属于自己的第一件作品,它见证了自己的成长,见证了自己的辛勤与汗水。

最难忘怀的是改程序的时候,程序因为一点点小问题就会运行不了,之前只是因为少了一半括号,让我一遍又一遍地找,很考验耐性。由此可见,严谨真的很重要。学习和练习C程序的设计是一个漫长的过程,这几天的学习只是让我们接触到了C语言程序设计,只是肤浅的了解了它的一些基本操作,我们学习C语言需要不断的练习积累才能使我们的水平提高,虽然学习C语言有时很枯燥,我们需要认真的对待它,虽然编写一个程序需要很长的时间,因此我们需要耐心,最重要的是,我们需要独立的思考和编写程序。这样才能提高我们的C语言设计的能力,更好的运用它解决一些问题。

最后,非常感谢在编程过程中给我批评指正的老师和同学们。

附录(程序清单)

#include

#include

#include "stdlib.h"

#define M 20

int N=0;

struct laboratory

{

int num; /*编号*/

char type[20]; /*种类*/

char devicename[20]; /*名称*/

char price[20]; /*价格*/

char buytime[20]; /*购买日期*/

char condition[6]; /*是否报废*/

char worthlesstime[20]; /*报废日期*/

}s[M];

void Re_file();

void Append();

void Modify();

void Query();

void menu(); /* s[M]中的每个数组元素对应一个设备*/

/*******************************主函数*******************************/

void main()

{

FILE *fp;

fp=fopen("LABORATORY.txt","r");

while(fscanf(fp,"%d %s %s %s %s %s %s",&s[N].num,s[N].type,

s[N].devicename,s[N].price,s[N].buytime,s[N].condition,s[N].worthlesstime)!=EOF)N++;

fclose(fp);

menu();

}

void menu()

{int sele,t;

sele=1;

while(sele)

{system("cls");

printf("\n\n");

printf(" ************************************************\n");

printf(" * *\n");

printf(" * 欢迎来到实验室设备管理系统! *\n");

printf(" * *\n");

printf(" * 1.添加信息 *\n");

printf(" * *\n");

printf(" * 2.修改信息 *\n");

printf(" * *\n");

printf(" * 3.查询信息 *\n");

printf(" * *\n");

printf(" * 4.退出 *\n");

printf(" ************************************************\n");

printf("请选择功能序号:");

scanf("%d",&t);

switch(t)

{ case 1:Append();break;

case 2:Modify();break;

case 3:Query();break;

case 4:sele=0;break;

}

printf("\n\n按任意键继续\n");

getch();

}

}

/*******************************添加模块*******************************/

void Append()

{

int n,i;

printf("可输入增加的设备数:");

scanf("%d",&n);N=n+N;

printf("现在,请输入相关信息:\n");

for (i=1;i<=n;i++)

{

printf("编号:");

scanf("%d",&s[N-n-1+i].num);

printf("种类:");

scanf("%s",&s[N-n-1+i].type);

printf("名称:");

scanf("%s",&s[N-n-1+i].devicename);

printf("价格:");

scanf("%s",&s[N-n-1+i].price);

printf("购买日期:");

scanf("%s",&s[N-n-1+i].buytime);

printf("是否报废:");

scanf("%s",&s[N-n-1+i].condition);

printf("报废日期:");

scanf("%s",&s[N-n-1+i].worthlesstime);

}

}

/*******************************修改模块*******************************/

void Modify()

{ int i,j=-1,d,t;char m[20];

N=M;

printf("\n\n\n");

printf(" ************************************************\n");

printf(" * *\n");

printf(" * *\n");

printf(" * *\n");

printf(" * 1.名称 2.编号 *\n");

printf(" * *\n");

printf(" * *\n");

printf(" * *\n");

printf(" ************************************************\n");

printf("请输入修改选项:");

scanf("%d",&i);

if(i==1)

{

printf("请输入名称:");

scanf("%s",&m);

for(i=0;i

if(strcmp(m,s[i].devicename)==0)

j=i;

}

else if(i==2)

{

printf("请输入编号:");

scanf("%d",&d);

for(i=0;i

if(d==s[i].num)

j=i;

}

if(j==-1)

printf("没有找到!\n");

else{

printf("编号 种类 名称 价格 购买日期 是否报废 报废日期\n");

printf("%-4d %-4s %-4s %-5s %-5s %-8s %-5s ",s[j].num,s[j].type,

s[j].devicename,s[j].price,s[j].buytime,s[j].condition,s[j].worthlesstime);

}

printf("\n\n\n");

printf(" ************************************************\n");

printf(" * *\n");

printf(" * 1.编号 2.种类 *\n");

printf(" * *\n");

printf(" * 3.名称 4.价格 *\n");

printf(" * *\n");

printf(" * 5.购买日期 6.是否报废 *\n");

printf(" * *\n");

printf(" * 7.报废日期 *\n");

printf(" * *\n");

printf(" ************************************************\n");

printf("\n\n请输入要修改的选项: ");

scanf("%d",&t);

switch(t)

{

case 1:printf("编号改为:");scanf("%d",&s[j].num);break;

case 2:printf("种类改为:");scanf("%s",s[j].type);break;

case 3:printf("名称改为:");scanf("%s",s[j].devicename);break;

case 4:printf("价格改为:");scanf("%s",s[j].price);break;

case 5:printf("购买日期改为:");scanf("%s",s[j].buytime);break;

case 6:printf("是否报废改为:");scanf("%s",s[j].condition);break;

case 7:printf("报废日期改为:");scanf("%s",s[j].worthlesstime);break;

}

}

/*******************************查询模块*******************************/

void Query()

{int i,j=-1,d,k,t=0;

char m[20];

N=M;

printf("查询模块:");

printf("\n\n\n");

printf(" ************************************************\n");

printf(" * *\n");

printf(" * *\n");

printf(" * *\n");

printf(" * 1.名称 2.编号 *\n");

printf(" * *\n");

printf(" * *\n");

printf(" * *\n");

printf(" ************************************************\n");

printf("\n\n请输入查询选项: ");

scanf("%d",&k);

if(k==1)

{printf("请输入名称:");

scanf("%s",m);

for(i=0;i<3;i++)

if(strcmp(m,s[i].devicename)==0)

j=i;

}

if(k==2)

{

printf("请输入编号:");

scanf("%d",&d);

for(i=0;i<3;i++)

if(d==s[i].num)

j=i;

}

if(j==-1)

{ printf("没有找到!\n");}

if(j!=-1)

{printf("编号 种类 名称 价格 购买日期 是否报废 报废日期\n");

printf("%-4d %-4s %-4s %-5s %-7s %-5s %-5s",s[j].num,s[j].type,

s[j].devicename,s[j].price,s[j].buytime,s[j].condition,s[j].worthlesstime);

}

printf("\n");

system("pause");

menu();

}

本文来源:https://www.2haoxitong.net/k/doc/988c0bbfbceb19e8b8f6ba96.html

《实验室设备管理系统.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式