资源描述
西安郵電大学
软件课程设计报告
题目:
实验室设备管理系统
院系名称
:
电子工程学院
专业名称
:
电子信息工程
班 级
:
1204
班内序号
:
5
学生姓名
:
诺贝尔杨
时间
:
2013年3月18日至2013年3月29日
1。课程设计目的
实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。
主要功能:
1.录入设备信息
2.修改设备信息
3.查询设备信息
(1)按设备编号查询
(2)按设备名称查询
4.对设备按种类进行分类统计
5.报废设备登记.
6.报废设备统计。
2。设计思路
需求分析 实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号 设备种类 设备购入日期 正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜单以实现功能选择.整个系统可设计为实验设备信息输入模块 实验设备信息修改模块 实验设备分类统计模块实验设备查询模块和实验设备报废信息模块.建立实验设备信息结构体,结构体成员包括设备编号 设备种类 设备名称 设备价格 设备购入日期 是否报废 报废日期。
实验报废设备信息模块
实验设备信息输入模块
实验设备信息修改模块
实验设备信息查询模块
实验设备分类统计模块
退
出
实验设备管理系统设计
3.功能模块图
读取数据
主菜单
退出系统
1 录入信息
2 修改信息
3 查询信息
4 分类统计
5 报废登记
6 查询信息
7 报废统计
退出系统
开始
选择
错误退出系统,break;
4.主函数模块流程图
密码
5。程序代码
#include”stdio.h"
#include”string。h"
#define null 0
int t=0;
int mmcsz=0;
int mima;
int menu();//菜单
void lr();//录入信息
void xg();//修改
void cx();//查询
void cx_sbh();//设备号查询
void cx_mc();//设备名称查询
void tj();//统计
void bf();//报废信息
void bf_dj();//报废登记
void bf_tj();//报废统计
void choose();
typedef struct shebei
{
char id[10];
char name[15];
char kind[15];
char over[15];
int yesno;
char time[10];
char price[10];
}shebei;
shebei sb[200];
void lr()//录入信息
{
while(1)
{
printf("提示:输入0则返回主菜单!\n”);
printf("\n请你输入设备ID号:”);
scanf(”%s”,sb[t]。id);
if(strcmp(sb[t].id,”0")==0) main();
printf("\n请输入设备名称:");
scanf(”%s”,sb[t].name);
printf("\n请输入设备种类:”);
scanf(”%s",sb[t]。kind);
printf(”\n请输入报废日期:");
scanf(”%s",sb[t].over);
printf(”\n请输入设备是否报废,1、没报废,0、报废:”);
scanf(”%d”,&sb[t]。yesno);
printf(”\n请输入设备购买时间:”);
scanf(”%s",sb[t]。time);
printf(”\n请输入设备价格:”);
scanf("%s”,sb[t].price);
printf("提示:已经完成一条记录的添加。\n”);
t++;
}
}
void xg()//修改
{
char find[20];
int x;
t=0;
printf("请输入要修改的设备ID号:");
scanf(”%s",find);
while(1)
{
if(strcmp(sb[t].id,find)==0) //如果找到的话返回的是符合要求
{
break;
}
else t++;
}
while(1)
{
printf(”确认修改请输入任意数字否则输入0重新输入设备原id:”);
scanf(”%d”,&x);
if(x==0) break;
else
{
printf(”请输入新设备号(原来是 %s ):",sb[t].id);
scanf("%s",sb[t]。id);
printf(”请输入新设备名称(原来是 %s ):”,sb[t].name);
scanf(”%s",sb[t]。name);
printf(”请输入新设备设备种类名称(原来是 %s ):”,sb[t]。kind);
scanf(”%s”,sb[t]。kind);
printf("请输入新设备报废日期名称(原来是 %s ):”,sb[t]。over);
scanf(”%s",sb[t].over);
printf(”请输入新设备是否报废,1、没报废,0、报废(原来是 %d):",sb[t].yesno);
scanf(”%d",&sb[t].yesno);
printf("请输入新设备购买时间(原来是 %s ):”,sb[t]。time);
scanf(”%s",sb[t].time);
printf("请输入新设备价格(原来是 %s ):”,sb[t]。price);
scanf(”%s”,sb[t].price);
printf("\n提示:该项记录资料已经成功修改!\n”);
printf("退回主菜单请输入0\n");
printf("继续操作请输入1\n");
scanf("%d",&x);
switch(x)
{
case 0:choose();break;
case 1:xg();break;
default:printf(”输入无效,自动返回主菜单\n");choose();break;
}
}
}
}
void cx()//查询
{
int choice;
do
{
printf(”\t\t\t——-—--—-----———-————--———---—————-\n”);
printf("\t\t\t* [1]--——按设备号查找 *\n”);
printf("\t\t\t* [2]-———按设备名称查找 *\n");
printf("\t\t\t* [0]-———退出 *\n”);
printf("\t\t\t*·*·*·*·*·*·*·*·*·*·*·*|\n”);
scanf("%d”,&choice);
getchar();
switch(choice)
{
case 0:menu();break;
case 1:cx_sbh();break;
case 2:cx_mc();break;
default:printf(”输入无效请重新输入\n");cx(); break;
}
}
while(choice!=0);
}
void cx_sbh()//设备号查询
{
int choice;
char find[20];
int t=0;
printf(”请输入您要查询的设备号:");
scanf ("%s”,find);
getchar();
do
{
if(strcmp(sb[t]。id,find)==0&&sb[t].yesno==1) //1表示设备没报废
{
printf(”设备号 设备名称 设备种类 报废日期 是否报废 购买时间 价格\n”);
printf("\n%—13s%—11s%—7s%—10s%—13d%-10s%—5s\n”,sb[t].id,sb[t]。name,sb[t]。kind,sb[t]。over,sb[t].yesno,sb[t]。time,sb[t]。price);
t++;
}
else
t++;
}
while (t〈100);
printf("键入数字1返回主菜单\n");
printf("键入数字任意键返回上层菜单\n”);
scanf(”%d”,&choice);
if (choice==1)
choose();
else cx();
}
void cx_mc()//设备名称查询
{
int choice;
char ming[20];
t=0;
printf("\n输入你要查询的设备名称:”);
scanf(”%s",ming);
do
{
if(strcmp(sb[t]。name,ming)==0&&sb[t].yesno==1) //1表示设备没报废
{
printf(”设备号 设备名称 设备种类 报废日期 是否报废 购买时间 价格\n");
printf(”\n%—13s%-11s%—7s%-10s%—13d%-10s%-5s\n”,sb[t]。id,sb[t].name,sb[t]。kind,sb[t]。over,sb[t]。yesno,sb[t]。time,sb[t].price);
t++;
}
else
t++;
}
while (t<100);
printf(”键入数字1返回主菜单\n”);
printf("键入数字任意键返回上层菜单\n”);
scanf("%d",&choice);
if (choice==1)
choose();
else cx();
}
void tj()//统计
{
int choice;
char tong[20];
printf(”\n输入你要统计的设备种类:”);
scanf("%s",tong);
do
{
if(strcmp(sb[t].kind,tong)==0&&sb[t]。yesno==1) //1表示设备没报废
{
printf("设备号 设备名称 设备种类 报废日期 是否报废 购买时间 价格\n”);
printf("\n%—13s%—11s%-7s%-10s%-13d%—10s%-5s\n",sb[t].id,sb[t]。name,sb[t]。kind,sb[t]。over,sb[t].yesno,sb[t].time,sb[t].price);
t++;
}
else
t++;
}
while (t〈100);
printf(”键入数字1返回主菜单\n”);
printf(”键入数字任意键返回上层菜单\n”);
scanf("%d",&choice);
if (choice==1)
choose() ;
}
void bf() //报废信息
{ int choice;
do
{
printf(”\t\t\t—-————-—————-----————-——————-—--——\n”);
printf("\t\t\t* [1]--——登记报废信息 *\n”);
printf(”\t\t\t* [2]——-—报废设备统计 *\n”);
printf(”\t\t\t* [0]--——退出 *\n”);
printf("\t\t\t*·*·*·*·*·*·*·*·*·*·*·*|\n”);
scanf("%d”,&choice);
getchar();
switch(choice)
{
case 0:menu();break;
case 1:bf_dj();break;
case 2:bf_tj();break;
default:printf(”输入无效请重新输入\n”);bf(); break;
}
}
while(choice!=0);
}
void bf_dj()//报废登记
{
char find[20];
int x;
t=0;
printf(”请输入要登记的设备ID号:”);
scanf(”%s”,find);
while(1)
{
if(strcmp(sb[t].id,find)==0) //如果找到的话返回的是符合要求
{
break;
}
else t++;
}
while(1)
{
printf(”完成登记请输入0否则输入任意数再进行修改:");
scanf(”%d”,&x);
if(x==0) break;
{
printf("请输入新设备是否报废1、没报废,0、报废(原来是 %d ):”,sb[t]。yesno);
scanf("%d”,&sb[t]。yesno);
printf(”\n〉〉〉〉>〉>〉>〉提示:该项记录资料已经成功登记!\n”);
scanf(”%d”,&x);
switch(x)
{
case 0:choose();break;
case 1:bf();break;
default:printf(”输入无效,自动返回主菜单\n”);choose();break;
}
}
}
}
void bf_tj()//报废统计
{
int choice;
char find[20];
t=0;
printf("\n输入你要统计的报废设备种类:”);
scanf("%s”,find);
do
{
if(strcmp(sb[t].kind,find)==0&&sb[t].yesno==0) //0表示设备报废
{
printf("设备号 设备名称 设备种类 报废日期 是否报废 购买时间 价格\n");
printf("\n%—13s%—11s%-7s%-10s%—13d%—10s%—5s\n",sb[t].id,sb[t].name,sb[t]。kind,sb[t]。over,sb[t]。yesno,sb[t]。time,sb[t]。price);
t++;
}
else
t++;
}
while (t〈3);
printf(”键入数字1返回主菜单\n”);
printf(”键入数字任意键返回上层菜单\n”);
scanf("%d”,&choice);
if (choice==1)
choose();
}
int menu(int choice)
{
printf(”\n\n\n”);
printf(”\t\t\t-———-———-—---—————-—-———--—-—-—-\n”);
printf(”\t\t\t+ 实验设备管理系统 |\n”);
printf(”\t\t\t—--—-—-———-—---—-——---———-—————-\n”);
printf(”\t\t\t+ [1]—-——录入设备信息 |\n”);
printf("\t\t\t+ [2]——-—修改设备信息 |\n”);
printf(”\t\t\t+ [3]—-—-查询设备信息 |\n”);
printf(”\t\t\t+ [4]——--统计设备信息 |\n”);
printf(”\t\t\t+ [5]——-—报废设备信息 |\n");
printf("\t\t\t+ [0]---—*—EXIT—* |\n”);
printf(”\t\t\t+*·*·*·*·*·*·*·*·*·*·|\n");
printf(”\t\t\t———--—-—---——-—-—————-———————---\n”);
printf("请输入你要操作的序号:");
scanf(”%d”, &choice);
return choice;
}
void choose()
{
int choice;
choice=1;
choice=menu(choice);
do{
switch (choice)
{
case 0: printf(”\n提示:你已经退出系统\n\t\t 再见!\n"); break;
case 1: lr(); break;
case 2: xg(); break;
case 3: cx(); break;
case 4: tj(); break;
case 5: bf(); break;
default: printf(”提示:输入错误!\n”); break;
}
}
while(choice!=0);
}
main()
{char s[20];
int i;
if(mmcsz==0)
{printf("请输入登录密码:”);//密码为:1314
mmcsz++;
for(i=0;i<4;i++)
{
s[i]=getch();
printf(”*");
}
s[4]=’\0';
if(strcmp(s,"1314”)==0)
choose();
else
printf("密码错误\n”);
}
else
choose();
}
6.程序运行结果
7。编程中遇到的困难和解决方法
在编程的过程中,很容易出现很多个个问题,就时少大括号“}"、等号“==”。按照计算机所指出的错误位置寻找是不容易找出错误的.直到整个程序看了一遍后才会发现是一个大括号的问题。通常少的是“{”或着“}",错误位置会出现在缺少括号位置之后的其他大括号出现的地方.只要这种情况发生后,往前找是否有大括号缺失就可以将问题很快解决了。还有就是一些变量没有搞清楚是什么类型的,导致程序出错,有时少一个地址符号就出现一大堆错误,我在这上面吃了很多亏……
另外在帮同学修改程序的过程中,也遇到过一个问题。在头文件后定义了子函数,可是之后忘了编写子函数,在纠错时,有的是不会发现错误的,但是连接过程中就会报告出错。我觉得在以后的编程过程中,最好用什么函数写什么函数,后者在写完一个子函数后再在头文件底下声明……
8。心得体会
C语言实习基本上由老师引导,自己很多都靠自学,不明白的问老师,自学能力得到了很大的培养。在实习过程中,我感觉到一点,程序是不能一气呵成的。至少一气呵成的程序不会尽善尽美。程序编写要一步一步的完成。首先,对于要编的程序要有一个总体思路.要明确想要什么。只要把思路理清楚了,程序就好编写了。把程序分割成几个块,即多个函数,一块一块的编写。然后将分散的函数用另外的函数连接起来或者用main函数连接。到这一步,程序也就初步编成了,之后便是调试,检查错误.最后我觉得还可以对于已经编写好的程序进行一些修改添加,使它更加人性化。
在C语言的实习过程中,让我巩固了C语言的基础知识,以前从来没有这样编过完整的程序,实习让我有这样的一个机会,自己独立编写程序。我觉得自己说学的东西不多,但是可以将它们运用出来。在这次实习中,王燕老师对我的帮助对我最难忘。题目本身是很简单的,在老师的教学风格影响下,我在编写完最初程序后,有自己添加了很多功能。程序可以跟数学方法如此紧密的结合。这是非常有意思的事情.王燕老师给过我很多启迪,因此,我要感谢她。最后,我还要感谢给我帮助的同学,在一些程序问题上,我和同学交流经验,他们帮我检查错误,学到了很多在书本上学不到的东西。
总之,我真诚的感谢在这次实习中给过我帮助的人!
9。参考文献
《C语言实例解析精粹》(人民邮电出版社)
《C语言程序设计》(电子科技大学出版社)
《C语言程序设计》(第二版)(科学出版社)
13
展开阅读全文