强烈推荐设备管理系统毕业论文报告Word格式文档下载.docx
《强烈推荐设备管理系统毕业论文报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《强烈推荐设备管理系统毕业论文报告Word格式文档下载.docx(35页珍藏版)》请在冰豆网上搜索。
9.编程体会12
10.程序源代码:
11.参考文献13
12.用户使用手册13
1.课程设计目的
1)通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
2)通过课程设计,进一步掌握C语言中重要的数据结构。
掌握并熟练运用指针、链表、结构体、文件等数据结构。
3)通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。
4)通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。
5)通过课程设计,加强了自己的程序分析能力。
2.需求分析
2.1要求
1)遵循软件开发过程的基本规范;
能灵活应用,初步具备运用C程序解决实际问题的能力。
2)运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。
3)学会利用数组、结构体、链表进行相关信息表示。
4)功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述
5)各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。
6)所设计的C程序较好的可读性和可靠性;
程序书写风格规范,注释清晰。
7)界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。
8)程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。
9)学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。
10)掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。
11)C语言课程设计报告的内容反应实际设计过程,且符合格式要求,无抄袭现象。
2.2任务描述
此系统以设备、部门为背景,提供对设备、部门的购买、报废、查找、统计等功能。
具体功能实现如下:
1)购买:
输入设备编号、部门编号(购买),购买日期、设备数量,完成购买的功能:
需要判断设备编号、部门编号是否存在,设备数量是否大于0,购须通过调用系统时间获得。
2)报废:
输入设备编号、部门编号(报废),报废日期、设备数量,完成报废功能:
需要判断设备编号、部门编号是否存在,设备数量是否大于0小于该部门当前正使用设备数量。
报废日期格式是否合法(格式为:
YYYY-MM-DD,查询指定设备编号购买历史
3)指定部门报废设备的历史
4)统计指定日期公司各设备可以使用的数量
5)所有数据符合实际应用要求
2.3运行环境
1)WindowsXP7系统
2)VC++6.0编译环境
2.4开发工具
C语言
3.总体设计
3.1系统流设计
本系统的功能模块如图1所示,主要有以下模块:
图1系统功能模块图
3.2系统模块设计
1)主菜单界面:
构造函数intmain_menu(),实现课程设计名称的显示,实现欢迎使用设备管理系统的显示,系统主菜单的显示。
2)读取显示设备信息:
构造函数voidload_equipment(),实现设备信息的读取及显示。
3)读取显示部门信息:
构造函数voidload_department(),实现部门信息的读取及显示。
记录购买设备的信息:
构造函数voidsave_buy(structinformation***(structinformation*(structinformation*(structinformation*(structinformation**
{
intID;
intnum;
chardata[11];
chardata1[11];
intstyle;
doubleprice;
intnumber;
intnumber1;
doublesum;
structinformation*next;
};
4.2模块接口设计
1)所有函数模块声明如下:
void
load(structinformation*_menu();
*主菜单*
menu_select(intsel,structinformation**(structinformation***(structinformation*(structinformation**_menu(structinformation**scanf_add(structinformation*();
*显示购买和报废设备信息记录*
show_menu(structinformation***()为入口,调用intmain_menu()函数,显示欢迎进入课程设计名称,直接进入主菜单界面,然后系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。
1)主菜单函数:
图1主函数流程图
2)购买设备函数:
3)信息修改函数:
5.运行结果
图5主菜单界面
输入功能选择,系统自动进入相应功能界面。
5.2设备信息界面:
图6设备信息界面
5.3部门信息界面:
图7部门信息界面
5.4购买历史查询信息界面:
从键盘中输入选择,可以按设备编号和部门编号进行查询,并显示结果。
图8通过设备编号查询的结果
5.5报废历史查询信息界面:
从键盘中输入选择,可以按设备编号和部门编号进行查询,并显示结果。
图9通过设备编号查询的结果
5.6显示全部信息界面:
图10显示全部信息界面
5.7设备信息报表:
6.程序调试与测试
6.1程序调试
1.购买设备
从键盘输入需要购买的设备以及购买设备的编号。
2.报废设备
从键盘输入需要报废的设备信息。
6.2程序测试
1.购买信息
从键盘输入需要查询的方式。
2.报废信息
7.问题与不足
(1)需求分析中存在的问题所有数据符合实际应用要求这一项没做好,导致所有数据都能随意输入,无论多大的数字都不会报错。
(2)概要设计中不存在什么问题。
(3)详细设计中存在的问题有不少地方都缺少报错,比如说输入设备数量时就算输入了英文也没有报错,反而把那个英文直接当做了1来处理。
(4)代码编制中存在的问题结构不够精炼,有些拖泥带水,缺少实际经验。
(5)调试和测试中不存在什么问题。
8.建议
对于签到,每次签到都会有好多人代签,这导致了签到的无意义,我觉得取消签到或者严格查签到才能解决。
9.编程体会
通过这次大规模的编程,我发现了自己的许多不足,我的各个重点都掌握的不牢固,导致我花费了大量的时间去复习,当我复习完了再开始编程已经比别人慢了一大步,我发现程序的每一步都紧密相关着,然后我在老师与同学的帮助下,终于完成了本次编程。
#include<
stdio.;
inttm_mday;
*定义设备结构体*
#endif
structequipment{
intID;
charname[20];
}e[10];
*定义部门结构体*
structdepartment{
intnum;
}d[4];
*购买和报废信息结构体*
structinformation{
*设备名称*
*部门编号*
chardate[11];
*购买日期*
chardate1[11];
*报废日期*
intstyle;
*设备类型*
doubleprice;
*单价*
intnumber;
*购买数量*
intnumber1;
*报废数量*
doublesum;
*总价*
structinformation*next;
*函数的声明*
voidload(structinformation*_menu();
*主菜单*
voidmenu_select(intsel,structinformation**(structinformation***(structinformation*(structinformation**_menu(structinformation**scanf_add(structinformation*();
*显示购买和报废设备信息记录*
voidshow_menu(structinformation***(_menu("
);
printf("
*********谢谢使用!
**********\n"
****\n"
****XXX****\n"
exit(0);
}
}
*显示主菜单界面*
intmain_menu()
inti;
printf("
\1**********欢迎使用设备管理系统********************\1\n"
\1***1.查询设备信息***\1\n"
\1***2.查询部门信息***\1\n"
\1***3.购买设备***\1\n"
\1***4.报废设备***\1\n"
\1***5.设备的购买历史查询***\1\n"
\1***6.设备的报废历史查询***\1\n"
\1***7.剩余使用次数***\1\n"
\1***8.显示全部信息***\1\n"
\1***9.设备信息报表***\1\n"
\1***0.退出菜单***\1\n"
\1**************************************************\1\n"
while
(1)
{
printf("
请选择你所需要的操作序号(0~9):
"
do{
scanf("
%d"
&
i);
if(i<
0||i>
9)
printf("
输入有误,请重新输入(0~9):
rewind(stdin);
}while(i<
9);
system("
cls"
break;
returni;
}
*读取显示设备信息*
voidload_equipment()
{
FILE*fp;
structequipment*pt1=e;
system("
if((fp=fopen("
设备名称.txt"
"
r"
))==NULL)
{
打开错误!
\n"
exit(0);
printf("
**********************************设备信息界面*******************************"
\n\t设备编号(1~10)设备名\n"
while(!
feof(fp))
fscanf(fp,"
%d%s"
pt1->
ID,&
name);
\n\t\t%d\t\t%s"
pt1->
ID,pt1->
pt1++;
if(fclose(fp))
不能关闭文件!
!
exit(0);
\n\n********************************导入成功*********************************\n"
\n按Enter键返回"
getchar();
*读取显示部门信息*
voidload_department()
structdepartment*pt1=d;
部门名称.txt"
*********************************部门信息界面**************************"
\n\t\t部门编号(1~4)部门名称\n"
num,&
\n\t\t%d\t\t%s"
num,pt1->
\n\n*******************************导入成功*****************************\n"
*记录购买设备的信息*
voidsave_buy(structinformation**temp,*p=*)malloc(sizeof(structinformation));
*开辟一个新单元*
while(p->
next!
=NULL)
p=p->
next;
\n设备编号部门编号购买日期设备状态(1买-1废)设备数量报废数量单价总价\n"
请输入设备编号(1~10):
do{
scanf("
temp->
ID);
if(temp->
ID<
=0||temp->
ID>
10)
printf("
输入的设备编号有误,请重新输入(1~10):
rewind(stdin);
}while(temp->
10);
请输入部门编号(1~4):
num);
num<
num>
4)
输入的部门编号有误,请重新输入(1~4):
4);
time_ttval;
structtm*data;
tval=time(NULL);
data=localtime(&
tval);
printftime(p->
date);
\n当前时间(从系统调用)为:
%s\n"
p->
temp->
date[0]=(data->
tm_year+1900)1000+'
0'
;
date[1]=(data->
tm_year+1900)100%10+'
date[2]=(data->
tm_year+1900)10%100+'
date[3]=(data->
tm_year+1900)%10+'
date[4]='
-'
date[5]=(data->
tm_mon+1)10+'
date[6]=(data->
tm_mon+1)%10+'
date[7]='
date[8]=(data->
tm_mday)10+'
date[9]=(data->
tm_mday)%10+'
date[10]='
\0'
}*将日期装换为字符型存入*
temp->
style=1;
请输入购买设备数量(整数):
number);
number<
=0)
printf("
输入的购买设备数量有误,请重新输入购买设备数量(整数):
=0);
number1=0;
price=1*temp->
ID;
请输入设备单价:
%lf"
price);
price<
输入的设备单价有误,请重新输入设备单价:
sum=(temp->
number)*(temp->
设备需要总价:
%.2lf\n\n"
temp->
sum);
p->
next=temp;
next=NULL;
load((structinformation*,s=0,o=0,g=0;
structinformation*temp,*p=*)malloc(sizeof(structinformation));
w=temp;
m);
if(m<
=0||m>
}while(m<
n);
if(n<
=0||n>
}while(n<
printf("
\n请输入报废日期,格式为(YYYY-MM-DD):
address:
scanf("
%s"
date2);
if(judge_date(date2)==0)
\n您输入的日期格式不正确,请重新输入(YYYY-MM-DD):
}while(judge_date(date2)==0);
if(strcmp(p->
date,date2)>
=0){
\n>
>
提示:
输入时间不能小于购买时间!
请重新输入:
date2[0]='
gotoaddress;
strcpy(p->
date1,date2);
购买报废记录.txt"
r+"
%d%d%s%d%d%d%lf%lf\n"
w->
num,w->
date,&
style,&
number,&
number1,&
price,&
if(w->
ID==m&
&
num==n)
{s=s+w->
number;
o=o+w->
number1;
g=s-o;
剩余使用数量:
g);
q=g;
ID=m;
num=n;
%s\n"
}*将日期装换为字符型存入*
style=-1;
number=0;
请输入报废设备数量