收藏 分销(赏)

设备管理系统课程设计报告-大学论文.doc

上传人:胜**** 文档编号:2685632 上传时间:2024-06-04 格式:DOC 页数:38 大小:603KB 下载积分:10 金币
下载 相关 举报
设备管理系统课程设计报告-大学论文.doc_第1页
第1页 / 共38页
设备管理系统课程设计报告-大学论文.doc_第2页
第2页 / 共38页


点击查看更多>>
资源描述
设备管理系统 HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGY C语言程序设计 课程设计报告 课设题目: 设备管理系统 专 业: 电气工程及其自动化 班 级: T1223-08 姓 名: 成 绩: 完成日期: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,购买日期格式是否合法(格式为:YYYY-MM-DD,如2009-01-02))购买时间必须通过调用系统时间获得。 2) 报废:输入设备编号、部门编号(报废),报废日期、设备数量,完成报废功能:需要判断设备编号、部门编号是否存在,设备数量是否大于0小于该部门当前正使用设备数量。报废日期格式是否合法(格式为:YYYY-MM-DD,如2009-01-02)) 3) 查询指定设备编号购买历史 4) 指定部门报废设备的历史 5) 统计指定日期公司各设备可以使用的数量 6) 所有数据符合实际应用要求 2.3运行环境 1) WindowsXP/7系统 2) VC++6.0编译环境 2.4开发工具 C语言 3.总体设计 3.1系统流设计 本系统的功能模块如图1所示,主要有以下模块: 课程名称界面 程序欢迎界面 主菜单界面 查询部门信息 剩余使用次数 购买设备 报废设备 设备的购买历史查询 设备的报废历史查询 退出系统 通过设备编号查询 通过部门编号查询 通过设备编号查询 通过部门编号查询 查询设备信息 显示全部信息 设备信息列表 显示设备信息 显示部门信息 显示购买,报废信息 图1系统功能模块图 3.2系统模块设计 1) 主菜单界面:构造函数int main_menu(),实现课程设计名称的显示,实现欢迎使用设备管理系统的显示,系统主菜单的显示。 2) 读取显示设备信息:构造函数 void load_equipment(),实现设备信息的读取及显示。 3) 读取显示部门信息:构造函数void load_department(),实现部门信息的读取及显示。 4) 记录购买设备的信息:构造函数void save_buy(struct information *head),实现设备购买的输入及记录。并通过设备编号查询购买信息函数void ID_buy(struct information *head )、部门编号查询设备购买信息函数void num_buy(struct information *head )的调用,实现相应的购买信息的查询。 5) 记录报废设备的信息:构造函数void save_ruin(struct information *head),实现设备报废的输入及记录。并通过设备编号查询报废信息函数void ID_ruin(struct information *head )、部门编号查询设备报废信息函数void num_ruin(struct information *head )的调用,实现相应的报废信息的查询。 6) 显示购买报废设备信息记录:构造函数void show_information(struct information *head),实现购买报废设备信息记录的显示。 7) 显示全部信息的界面:构造函数void show_menu(struct information *head ),实现全部信息的界面的显示。 4.详细设计 4.1数据结构设计 根据系统要求,系统中需要保存的数据信息,其结构如下: 数据项名称 数据项系统表示 数据类型 数据长度 备注 设备编号 ID int 部门编号 num int 购买日期 data[11] char 11 设备状态 style int 设备数量 number int 报废数量 number1 int 单价 price double 总价 sum double 根据系统要求,系统中需要保存的类别信息,其结构如下: 类别代号 ID num number sum 类别名称 设备编号 部门编号 设备数量 总价 为了能实现不受限制的增加设备信息,采用链表的结构保存设备信息,在增加设备的基本信息时,创建一个设备信息的节点,将其插入到链表中,示意图如下。 设备信息1 设备信息2 通讯录信息1 221 设备信息3 设备信息4 为此,先声明一个类型为struct student的结构体,其成员为设备信息。然后通过对指针、链表、文件等数据结构的操作,实现对设备信息的录入,插入,存盘,查询,浏览,删除,修改等一系列操作。其中,结构体定义如下: struct information { int ID; int num; char data[11]; char data1[11]; int style; double price; int number; int number1; double sum; struct information *next; }; 4.2模块接口设计 1) 所有函数模块声明如下: void  load(struct information *head); /*将信息存储到文件*/ int   main_menu();/*主菜单*/ void  menu_select(int sel,struct information *head);/*进行主菜单操作选择*/ void  load_equipment();/*从文件中读取设备信息*/  void  load_department();/*从文件中读取部门信息*/  void save_buy(struct information *head); /*对设备进行购买输入*/ void  save_ruin(struct information *head); /*对设备进行报废输入*/ void  ID_buy(struct information *head); /*通过设备编号查询购买信息*/ void  num_buy(struct information *head); /*通过部门编号查询购买信息*/ void  num_ruin(struct information *head); /*通过部门编号查询报废信息*/ void  ID_ruin(struct information *head); /*通过设备编号查询报废信息*/ void  buy_menu(struct information *head); /*设备购买查询主菜单*/ void  ruin_menu(struct information *head); /*设备报废查询主菜单*/ struct information *scanf_add(struct information *head); /*从TXT文件中导入上次存储的设备处理信息*/ void show_information();/*显示购买和报废设备信息记录*/ void  show_menu(struct information *head); /*显示全部信息主菜单*/ int   judge_date(char date[11]); /*判断日期输入是否正确*/  void  show_list(struct information *head);/*部门可使用设备报表制作*/   void printftime();/*调用系统时间*/ void tongjishengyu();/*统计剩余使用次数*/ 2) 并定义两个全局变量: int q; struct intformation *head; 3) 主要模块的实现 系统以主函数main()为入口, 调用int main_menu()函数,显示欢迎进入课程设计名称,直接进入主菜单界面,然后系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。 4.3 以下是几个主要模块的流程图: 1) 主菜单函数: 是否为0 否 打印主菜单 接收用户选项 是否合法 调用对应选项函数 进入下一级菜单 退出系统 是 否 是 图1 主函数流程图 2) 购买设备函数: 是 打印购买设备子菜单 输入设备编号选项 否 输入部门编号选项 是否合法 是否合法 输入购买数量 输入购买单价 结束 否 图2 购买设备流程图 3) 信息修改函数: 是 打印购买历史子菜单 输入查询方式选项 否 是否合法 是否为0 输入编号选项 是 否 返回主菜单 退出函数 图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 <stdio.h> #include <malloc.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <time.h> int q; #define _TM_DEFINED #ifndef _TM_DEFINED /*定义时间结构体*/ struct tm{ int tm_year; int tm_mon; int tm_mday; }; /*定义设备结构体*/ #endif struct equipment{ int ID; char name[20]; }e[10]; /*定义部门结构体*/ struct department{ int num; char name[20]; }d[4]; /*购买和报废信息结构体*/ struct information{ int ID; /*设备名称*/ int num; /*部门编号*/ char date[11]; /*购买日期*/ char date1[11]; /*报废日期*/ int style; /*设备类型*/ double price; /*单价*/ int number; /*购买数量*/ int number1; /*报废数量*/ double sum; /*总价*/ struct information *next; }; /*函数的声明*/ void load(struct information *head); /*将信息存储到文件*/ int main_menu(); /*主菜单*/ void menu_select(int sel,struct information *head); /*进行主菜单操作选择*/ void load_equipment(); /*从文件中读取设备信息*/ void load_department(); /*从文件中读取部门信息*/ void save_buy(struct information *head); /*对设备进行购买输入*/ void save_ruin(struct information *head); /*对设备进行报废输入*/ void ID_buy(struct information *head); /*通过设备编号查询购买信息*/ void num_buy(struct information *head); /*通过部门编号查询购买信息*/ void num_ruin(struct information *head); /*通过部门编号查询报废信息*/ void ID_ruin(struct information *head); /*通过设备编号查询报废信息*/ void buy_menu(struct information *head); /*设备购买查询主菜单*/ void ruin_menu(struct information *head); /*设备报废查询主菜单*/ struct information *scanf_add(struct information *head); /*从TXT文件中导入上次存储的设备处理信息*/ void show_information(); /*显示购买和报废设备信息记录*/ void show_menu(struct information *head); /*显示全部信息主菜单*/ int judge_date(char date[11]); /*判断日期输入是否正确*/ void show_list(struct information *head); /*部门可使用设备报表制作*/ void printftime(); /*调用系统时间*/ void tongjishengyu(); /*统计剩余使用次数*/ /*选择菜单栏*/ void menu_select(int s,struct information *head) { switch (s) { case 1:system("cls"); load_equipment();break; case 2:system("cls"); load_department();break; case 3:system("cls"); save_buy(head);break; case 4:system("cls"); save_ruin(head);break; case 5:system("cls"); buy_menu(head);break; case 6:system("cls"); ruin_menu(head);break; case 7:system("cls"); tongjishengyu(head);break; case 8:system("cls"); show_menu(head);break; case 9:system("cls"); show_list(head);break; case 0:system("cls"); printf("**************************** ****************************\n"); printf("********* 谢 谢 使 用 ! **********\n"); printf("**** T1223-08-08 ****\n"); printf("**** XXX ****\n"); exit(0); } } /*显示主菜单界面*/ int main_menu() { int i; 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; } return i; } /*读取显示设备信息*/ void load_equipment() { FILE *fp; struct equipment *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"); } /*读取显示部门信息*/ void load_department() { FILE *fp; struct department *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"); } /*记录购买设备的信息*/ void save_buy(struct information *head) { struct information *temp,*p=head; system("cls"); temp=(struct information *)malloc(sizeof(struct information)); /*开辟一个新单元*/ 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_t tval; struct tm *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(head); printf("********************输入完成,按 ENTER 返回!!!*********************"); getchar(); system("cls"); } /*记录报废设备的信息*/ void save_ruin(struct information *head) { char date2[10]; FILE *fp; int m,n,s=0,o=0,g=0; struct information *temp,*p=head,*w; system("cls"); temp=(struct information *)malloc(sizeof(struct information)); 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 ("输入的部门编号有
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服