强烈推荐设备管理系统毕业论文报告.docx

上传人:b****5 文档编号:3416031 上传时间:2022-11-22 格式:DOCX 页数:35 大小:227.53KB
下载 相关 举报
强烈推荐设备管理系统毕业论文报告.docx_第1页
第1页 / 共35页
强烈推荐设备管理系统毕业论文报告.docx_第2页
第2页 / 共35页
强烈推荐设备管理系统毕业论文报告.docx_第3页
第3页 / 共35页
强烈推荐设备管理系统毕业论文报告.docx_第4页
第4页 / 共35页
强烈推荐设备管理系统毕业论文报告.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

强烈推荐设备管理系统毕业论文报告.docx

《强烈推荐设备管理系统毕业论文报告.docx》由会员分享,可在线阅读,更多相关《强烈推荐设备管理系统毕业论文报告.docx(35页珍藏版)》请在冰豆网上搜索。

强烈推荐设备管理系统毕业论文报告.docx

强烈推荐设备管理系统毕业论文报告

HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGY

 

C语言程序设计

课程设计报告

 

课设题目:

设备管理系统

专业:

电气工程及其自动化

姓名:

成绩:

完成日期:

2013年6月18日-2013年6月22日

指导教师:

史旅华

1.课程设计目的2

2.需求分析2

2.1要求2

2.2任务描述2

2.3运行环境3

2.4开发工具3

3.总体设计3

3.1系统流设计3

3.2系统模块设计4

4.详细设计5

4.1数据结构设计5

4.2模块接口设计6

4.3以下是几个主要模块的流程图:

7

5.运行结果10

5.1主菜单界面:

10

5.2信息录入界面:

10

5.3信息浏览界面:

11

5.4信息查询界面:

11

5.5信息修改界面:

12

6.程序调试与测试12

6.1程序调试12

6.2程序测试12

7.问题与不足12

8.建议12

9.编程体会12

10.程序源代码:

12

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();*主菜单*

void menu_select(intsel,structinformation**(structinformation***(structinformation*(structinformation**_menu(structinformation**scanf_add(structinformation*();*显示购买和报废设备信息记录*

void show_menu(structinformation***()为入口,调用intmain_menu()函数,显示欢迎进入课程设计名称,直接进入主菜单界面,然后系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。

4.3以下是几个主要模块的流程图:

1)主菜单函数:

图1主函数流程图

2)购买设备函数:

 

3)信息修改函数:

5.运行结果

5.1主菜单界面:

图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.编程体会

通过这次大规模的编程,我发现了自己的许多不足,我的各个重点都掌握的不牢固,导致我花费了大量的时间去复习,当我复习完了再开始编程已经比别人慢了一大步,我发现程序的每一步都紧密相关着,然后我在老师与同学的帮助下,终于完成了本次编程。

10.程序源代码:

#include

inttm_mday;

};

*定义设备结构体*

#endif

structequipment{

intID;

charname[20];

}e[10];

*定义部门结构体*

structdepartment{

intnum;

charname[20];

}d[4];

*购买和报废信息结构体*

structinformation{

intID;*设备名称*

intnum;*部门编号*

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");

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

exit(0);

}

}

*显示主菜单界面*

intmain_menu()

{

inti;

printf("\1**********欢迎使用设备管理系统********************\1\n");

printf("\1***1.查询设备信息***\1\n");

printf("\1***2.查询部门信息***\1\n");

printf("\1***3.购买设备***\1\n");

printf("\1***4.报废设备***\1\n");

printf("\1***5.设备的购买历史查询***\1\n");

printf("\1***6.设备的报废历史查询***\1\n");

printf("\1***7.剩余使用次数***\1\n");

printf("\1***8.显示全部信息***\1\n");

printf("\1***9.设备信息报表***\1\n");

printf("\1***0.退出菜单***\1\n");

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

while

(1)

{

printf("请选择你所需要的操作序号(0~9):

");

do{

scanf("%d",&i);

if(i<0||i>9)

printf("输入有误,请重新输入(0~9):

");

rewind(stdin);

}while(i<0||i>9);

system("cls");

break;

}

returni;

}

*读取显示设备信息*

voidload_equipment()

{

FILE*fp;

structequipment*pt1=e;

system("cls");

if((fp=fopen("设备名称.txt","r"))==NULL)

{

printf("打开错误!

\n");

exit(0);

}

printf("**********************************设备信息界面*******************************");

printf("\n\t设备编号(1~10)设备名\n");

while(!

feof(fp))

{

fscanf(fp,"%d%s",&pt1->ID,&pt1->name);

printf("\n\t\t%d\t\t%s",pt1->ID,pt1->name);

pt1++;

}

if(fclose(fp))

{

printf("不能关闭文件!

!

!

\n");

exit(0);

}

printf("\n\n********************************导入成功*********************************\n");

printf("\n按Enter键返回");

getchar();

system("cls");

}

*读取显示部门信息*

voidload_department()

{

FILE*fp;

structdepartment*pt1=d;

system("cls");

if((fp=fopen("部门名称.txt","r"))==NULL)

{

printf("打开错误!

\n");

exit(0);

}

printf("*********************************部门信息界面**************************");

printf("\n\t\t部门编号(1~4)部门名称\n");

while(!

feof(fp))

{

fscanf(fp,"%d%s",&pt1->num,&pt1->name);

printf("\n\t\t%d\t\t%s",pt1->num,pt1->name);

pt1++;

}

if(fclose(fp))

{

printf("不能关闭文件!

!

!

\n");

exit(0);

}

printf("\n\n*******************************导入成功*****************************\n");

printf("\n按Enter键返回");

getchar();

system("cls");

}

*记录购买设备的信息*

voidsave_buy(structinformation**temp,*p=*)malloc(sizeof(structinformation));*开辟一个新单元*

while(p->next!

=NULL)

p=p->next;

printf("\n设备编号部门编号购买日期设备状态(1买-1废)设备数量报废数量单价总价\n");

printf("请输入设备编号(1~10):

");

do{

scanf("%d",&temp->ID);

if(temp->ID<=0||temp->ID>10)

printf("输入的设备编号有误,请重新输入(1~10):

");

rewind(stdin);

}while(temp->ID<=0||temp->ID>10);

printf("请输入部门编号(1~4):

");

do{

scanf("%d",&temp->num);

if(temp->num<=0||temp->num>4)

printf("输入的部门编号有误,请重新输入(1~4):

");

rewind(stdin);

}while(temp->num<=0||temp->num>4);

{

time_ttval;

structtm*data;

tval=time(NULL);

data=localtime(&tval);

printftime(p->date);

printf("\n当前时间(从系统调用)为:

%s\n",p->date);

temp->date[0]=(data->tm_year+1900)1000+'0';

temp->date[1]=(data->tm_year+1900)100%10+'0';

temp->date[2]=(data->tm_year+1900)10%100+'0';

temp->date[3]=(data->tm_year+1900)%10+'0';

temp->date[4]='-';

temp->date[5]=(data->tm_mon+1)10+'0';

temp->date[6]=(data->tm_mon+1)%10+'0';

temp->date[7]='-';

temp->date[8]=(data->tm_mday)10+'0';

temp->date[9]=(data->tm_mday)%10+'0';

temp->date[10]='\0';

}*将日期装换为字符型存入*

temp->style=1;

printf("请输入购买设备数量(整数):

");

do{

scanf("%d",&temp->number);

if(temp->number<=0)

printf("输入的购买设备数量有误,请重新输入购买设备数量(整数):

");

rewind(stdin);

}while(temp->number<=0);

temp->number1=0;

temp->price=1*temp->ID;

printf("请输入设备单价:

");

do{

scanf("%lf",&temp->price);

if(temp->price<=0)

printf("输入的设备单价有误,请重新输入设备单价:

");

rewind(stdin);

}while(temp->price<=0);

temp->sum=(temp->number)*(temp->price);

printf("设备需要总价:

%.2lf\n\n",temp->sum);

p->next=temp;

temp->next=NULL;

getchar();

load((structinformation*,s=0,o=0,g=0;

structinformation*temp,*p=*)malloc(sizeof(structinformation));

w=temp;

while(p->next!

=NULL)

p=p->next;

printf("\n设备编号部门编号购买日期设备状态(1买-1废)设备数量报废数量单价总价\n");

printf("请输入设备编号(1~10):

");

do{

scanf("%d",&m);

if(m<=0||m>10)

printf("输入的设备编号有误,请重新输入(1~10):

");

rewind(stdin);

}while(m<=0||m>10);

printf("请输入部门编号(1~4):

");

do{

scanf("%d",&n);

if(n<=0||n>4)

printf("输入的部门编号有误,请重新输入(1~4):

");

rewind(stdin);

}while(n<=0||n>4);printf("\n请输入报废日期,格式为(YYYY-MM-DD):

");

do{

address:

scanf("%s",date2);

if(judge_date(date2)==0)

printf("\n您输入的日期格式不正确,请重新输入(YYYY-MM-DD):

");

}while(judge_date(date2)==0);

if(strcmp(p->date,date2)>=0){

printf("\n>>>>>>>>提示:

输入时间不能小于购买时间!

请重新输入:

");

date2[0]='\0';

gotoaddress;

}

strcpy(p->date1,date2);

if((fp=fopen("购买报废记录.txt","r+"))==NULL)

{

printf("打开错误!

\n");

exit(0);

}

while(!

feof(fp))

{

fscanf(fp,"%d%d%s%d%d%d%lf%lf\n",&w->ID,&w->num,w->date,&w->style,&w->number,&w->number1,&w->price,&w->sum);

if(w->ID==m&&w->num==n)

{s=s+w->number;

o=o+w->number1;

g=s-o;}

}

printf("剩余使用数量:

%d",g);

q=g;

temp->ID=m;

temp->num=n;

{

time_ttval;

structtm*data;

tval=time(NULL);

data=localtime(&tval);

printftime(p->date);

printf("\n当前时间(从系统调用)为:

%s\n",p->date);

temp->date[0]=(data->tm_year+1900)1000+'0';

temp->date[1]=(data->tm_year+1900)100%10+'0';

temp->date[2]=(data->tm_year+1900)10%100+'0';

temp->date[3]=(data->tm_year+1900)%10+'0';

temp->date[4]='-';

temp->date[5]=(data->tm_mon+1)10+'0';

temp->date[6]=(data->tm_mon+1)%10+'0';

temp->date[7]='-';

temp->date[8]=(data->tm_mday)10+'0';

temp->date[9]=(data->tm_mday)%10+'0';

temp->date[10]='\0';

}*将日期装换为字符型存入*

temp->style=-1;

temp->number=0;

printf("请输入报废设备数量

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1