还剩37页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGYC语言程序设计课程设计报告课设题目设备管理系统专业电气工程及其自动化班级:T1223-08姓名成绩完成日期2013年6月18日-2013年6月22日指导教师:史旅华目录TOC\o1-2\h\z\u
1.课程设计目的
22.需求分析
22.1要求
22.2任务描述
22.3运行环境
32.4__工具
33.总体设计
33.1系统流设计
33.2系统模块设计
44.详细设计
54.1数据结构设计
54.2模块接口设计
64.3以下是几个主要模块的流程图
75.运行结果
105.1主菜单界面
105.2信息录入界面
105.3信息浏览界面
115.4信息查询界面
115.5信息修改界面
126.程序调试与测试
126.1程序调试
126.2程序测试
127.问题与不足
128.建议
129.编程体会
1210.程序源代码
1211.____
1312.用户使用手册
131.课程设计目的1通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构2通过课程设计,进一步掌握C语言中重要的数据结构掌握并熟练运用指针、链表、结构体、文件等数据结构3通过课程设计,提高程序__能力,能运用合理的控制流编写清晰高效的程序4通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能__设计和实现一个小型系统5通过课程设计,加强了自己的程序分析能力
2.需求分析
2.1要求1遵循软件__过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力2运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程3学会利用数组、结构体、链表进行相关信息表示4功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述5各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确6所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰7界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析8程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果9学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现10掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法11C语言课程设计报告的内容反应实际设计过程,且符合格式要求,无抄袭现象
2.2任务描述此系统以设备、部门为背景,提供对设备、部门的__、报废、查找、统计等功能具体功能实现如下1__输入设备编号、部门编号(__),__日期、设备数量,完成__的功能需要判断设备编号、部门编号是否存在,设备数量是否大于0,__日期格式是否合法(格式为YYYY-MM-DD如2009-01-02))__时间必须通过调用系统时间获得2报废输入设备编号、部门编号(报废),报废日期、设备数量,完成报废功能需要判断设备编号、部门编号是否存在,设备数量是否大于0小于该部门当前正使用设备数量报废日期格式是否合法(格式为YYYY-MM-DD如2009-01-02))3查询指定设备编号__历史4指定部门报废设备的历史5统计指定日期公司各设备可以使用的数量6所有数据符合实际应用要求
2.3运行环境1WindowsXP/7系统2VC++
6.0编译环境
2.4__工具C语言
3.总体设计
3.1系统流设计本系统的功能模块如图1所示,主要有以下模块图1系统功能模块图
3.2系统模块设计1主菜单界面构造函数int__in_menu实现课程设计名称的显示,实现欢迎使用设备管理系统的显示,系统主菜单的显示2读取显示设备信息构造函数voidload_equipment实现设备信息的读取及显示3读取显示部门信息构造函数voidload_department实现部门信息的读取及显示4记录__设备的信息构造函数voids__e_buystructinfor__tion*head,实现设备__的输入及记录并通过设备编号查询__信息函数voidID_buystructinfor__tion*head、部门编号查询设备__信息函数voidnum_buystructinfor__tion*head的调用,实现相应的__信息的查询5记录报废设备的信息构造函数voids__e_ruinstructinfor__tion*head,实现设备报废的输入及记录并通过设备编号查询报废信息函数voidID_ruinstructinfor__tion*head、部门编号查询设备报废信息函数voidnum_ruinstructinfor__tion*head的调用,实现相应的报废信息的查询6显示__报废设备信息记录构造函数voidshow_infor__tionstructinfor__tion*head实现__报废设备信息记录的显示7显示全部信息的界面构造函数voidshow_menustructinfor__tion*head,实现全部信息的界面的显示
4.详细设计
4.1数据结构设计根据系统要求,系统中需要保存的数据信息,其结构如下数据项名称数据项系统表示数据类型数据长度备注设备编号IDint部门编号numint__日期data
[11]char11设备状态styleint设备数量numberint报废数量number1int单价pri__double总价sumdouble根据系统要求,系统中需要保存的类别信息,其结构如下类别代号IDnumnumbersum类别名称设备编号部门编号设备数量总价为了能实现不受限制的增加设备信息,采用链表的结构保存设备信息,在增加设备的基本信息时,创建一个设备信息的节点,将其插入到链表中,示意图如下为此,先声明一个类型为structstudent的结构体,其成员为设备信息然后通过对指针、链表、文件等数据结构的操作,实现对设备信息的录入,插入,存盘,查询,浏览,删除,修改等一系列操作其中,结构体定义如下structinfor__tion{intID;intnum;chardata
[11];chardata1
[11];intstyle;doublepri__;intnumber;intnumber1;doublesum;structinfor__tion*next;};
4.2模块接口设计1所有函数模块声明如下void loadstructinfor__tion*head;/*将信息存储到文件*/int __in_menu;/*主菜单*/void menu_selectintselstructinfor__tion*head;/*进行主菜单操作选择*/void load_equipment;/*从文件中读取设备信息*/ void load_department;/*从文件中读取部门信息*/ voids__e_buystructinfor__tion*head;/*对设备进行__输入*/void s__e_ruinstructinfor__tion*head;/*对设备进行报废输入*/void ID_buystructinfor__tion*head;/*通过设备编号查询__信息*/void num_buystructinfor__tion*head;/*通过部门编号查询__信息*/void num_ruinstructinfor__tion*head;/*通过部门编号查询报废信息*/void ID_ruinstructinfor__tion*head;/*通过设备编号查询报废信息*/void buy_menustructinfor__tion*head;/*设备__查询主菜单*/void ruin_menustructinfor__tion*head;/*设备报废查询主菜单*/structinfor__tion*scanf_addstructinfor__tion*head;/*从___文件中导入上次存储的设备处理信息*/voidshow_infor__tion;/*显示__和报废设备信息记录*/void show_menustructinfor__tion*head;/*显示全部信息主菜单*/int judge_datechardate
[11];/*判断日期输入是否正确*/ void show_liststructinfor__tion*head;/*部门可使用设备报表制作*/ voidprintftime;/*调用系统时间*/voidtongjishengyu;/*统计剩余使用次数*/2并定义两个全局变量intq;structintfor__tion*head;3主要模块的实现系统以主函数__in为入口,调用int__in_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.程序源代码#includestdio.h#include__lloc.h#includeconio.h#includestdlib.h#includestring.h#includetime.hintq;#define_TM_DEFINED#ifndef_TM_DEFINED/*定义时间结构体*/structtm{inttm_year;inttm_mon;inttm_mday;};/*定义设备结构体*/#endifstructequipment{intID;charname
[20];}e
[10];/*定义部门结构体*/structdepartment{intnum;charname
[20];}d
[4];/*__和报废信息结构体*/structinfor__tion{intID;/*设备名称*/intnum;/*部门编号*/chardate
[11];/*__日期*/chardate1
[11];/*报废日期*/intstyle;/*设备类型*/doublepri__;/*单价*/intnumber;/*__数量*/intnumber1;/*报废数量*/doublesum;/*总价*/structinfor__tion*next;};/*函数的声明*/voidloadstructinfor__tion*head;/*将信息存储到文件*/int__in_menu;/*主菜单*/voidmenu_selectintselstructinfor__tion*head;/*进行主菜单操作选择*/voidload_equipment;/*从文件中读取设备信息*/voidload_department;/*从文件中读取部门信息*/voids__e_buystructinfor__tion*head;/*对设备进行__输入*/voids__e_ruinstructinfor__tion*head;/*对设备进行报废输入*/voidID_buystructinfor__tion*head;/*通过设备编号查询__信息*/voidnum_buystructinfor__tion*head;/*通过部门编号查询__信息*/voidnum_ruinstructinfor__tion*head;/*通过部门编号查询报废信息*/voidID_ruinstructinfor__tion*head;/*通过设备编号查询报废信息*/voidbuy_menustructinfor__tion*head;/*设备__查询主菜单*/voidruin_menustructinfor__tion*head;/*设备报废查询主菜单*/structinfor__tion*scanf_addstructinfor__tion*head;/*从___文件中导入上次存储的设备处理信息*/voidshow_infor__tion;/*显示__和报废设备信息记录*/voidshow_menustructinfor__tion*head;/*显示全部信息主菜单*/intjudge_datechardate
[11];/*判断日期输入是否正确*/voidshow_liststructinfor__tion*head;/*部门可使用设备报表制作*/voidprintftime;/*调用系统时间*/voidtongjishengyu;/*统计剩余使用次数*//*选择菜单栏*/voidmenu_selectintsstructinfor__tion*head{switchs{case1:systemcls;load_equipment;break;case2:systemcls;load_department;break;case3:systemcls;s__e_buyhead;break;case4:systemcls;s__e_ruinhead;break;case5:systemcls;buy_menuhead;break;case6:systemcls;ruin_menuhead;break;case7:systemcls;tongjishengyuhead;break;case8:systemcls;show_menuhead;break;case9:systemcls;show_listhead;break;case0:systemcls;printf********************************************************\n;printf*********谢谢使用!**********\n;printf****T1223-08-08****\n;printf****XXX****\n;exit0;}}/*显示主菜单界面*/int__in_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;while1{printf请选择你所需要的操作序号0~9:;do{scanf%di;ifi0||i9printf输入有误,请重新输入0~9:;rewindstdin;}whilei0||i9;systemcls;break;}returni;}/*读取显示设备信息*/voidload_equipment{FILE*fp;structequipment*pt1=e;systemcls;iffp=fopen设备名称.___r==NULL{printf打开错误!\n;exit0;}printf**********************************设备信息界面*******************************;printf\n\t设备编号1~10设备名\n;while!feoffp{fscanffp%d%spt1-IDpt1-name;printf\n\t\t%d\t\t%spt1-IDpt1-name;pt1++;}iffclosefp{printf不能关闭文件!!!\n;exit0;}printf\n\n********************************导入成功*********************************\n;printf\n按Enter键返回;getchar;systemcls;}/*读取显示部门信息*/voidload_department{FILE*fp;structdepartment*pt1=d;systemcls;iffp=fopen部门名称.___r==NULL{printf打开错误!\n;exit0;}printf*********************************部门信息界面**************************;printf\n\t\t部门编号1~4部门名称\n;while!feoffp{fscanffp%d%spt1-numpt1-name;printf\n\t\t%d\t\t%spt1-numpt1-name;pt1++;}iffclosefp{printf不能关闭文件!!!\n;exit0;}printf\n\n*******************************导入成功*****************************\n;printf\n按Enter键返回;getchar;systemcls;}/*记录__设备的信息*/voids__e_buystructinfor__tion*head{structinfor__tion*temp*p=head;systemcls;temp=structinfor__tion*__llocsizeofstructinfor__tion;/*开辟一个新单元*/whilep-next!=NULLp=p-next;printf\n设备编号部门编号__日期设备状态1买-1废设备数量报废数量单价总价\n;printf请输入设备编号1~10;do{scanf%dtemp-ID;iftemp-ID=0||temp-ID10printf输入的设备编号有误,请重新输入1~10;rewindstdin;}whiletemp-ID=0||temp-ID10;printf请输入部门编号1~4;do{scanf%dtemp-num;iftemp-num=0||temp-num4printf输入的部门编号有误,请重新输入1~4;rewindstdin;}whiletemp-num=0||temp-num4;{time_ttval;structtm*data;tval=timeNULL;data=localtimetval;printftimep-date;printf\n当前时间从系统调用为:%s\np-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%dtemp-number;iftemp-number=0printf输入的__设备数量有误,请重新输入__设备数量整数;rewindstdin;}whiletemp-number=0;temp-number1=0;temp-pri__=1*temp-ID;printf请输入设备单价;do{scanf%lftemp-pri__;iftemp-pri__=0printf输入的设备单价有误,请重新输入设备单价;rewindstdin;}whiletemp-pri__=0;temp-sum=temp-number*temp-pri__;printf设备需要总价%.2lf\n\ntemp-sum;p-next=temp;temp-next=NULL;getchar;loadhead;printf********************输入完成,按ENTER返回!!!*********************;getchar;systemcls;}/*记录报废设备的信息*/voids__e_ruinstructinfor__tion*head{chardate2
[10];FILE*fp;intmns=0o=0g=0;structinfor__tion*temp*p=head*w;systemcls;temp=structinfor__tion*__llocsizeofstructinfor__tion;w=temp;whilep-next!=NULLp=p-next;printf\n设备编号部门编号__日期设备状态1买-1废设备数量报废数量单价总价\n;printf请输入设备编号1~10;do{scanf%dm;ifm=0||m10printf输入的设备编号有误,请重新输入1~10;rewindstdin;}whilem=0||m10;printf请输入部门编号1~4;do{scanf%dn;ifn=0||n4printf输入的部门编号有误,请重新输入1~4;rewindstdin;}whilen=0||n4;printf\n请输入报废日期,格式为YYYY-MM-DD:;do{address:scanf%sdate2;ifjudge_datedate2==0printf\n您输入的日期格式不正确,请重新输入YYYY-MM-DD:;}whilejudge_datedate2==0;ifstrcmpp-datedate2=0{printf\n提示:输入时间不能小于__时间!请重新输入:;date2
[0]=\0;gotoaddress;}strcpyp-date1date2;iffp=fopen__报废记录.___r+==NULL{printf打开错误!\n;exit0;}while!feoffp{fscanffp%d%d%s%d%d%d%lf%lf\nw-IDw-numw-datew-stylew-numberw-number1w-pri__w-sum;ifw-ID==mw-num==n{s=s+w-number;o=o+w-number1;g=s-o;}}printf剩余使用数量:%dg;q=g;temp-ID=m;temp-num=n;{time_ttval;structtm*data;tval=timeNULL;data=localtimetval;printftimep-date;printf\n当前时间从系统调用为:%s\np-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请输入报废设备数量整数1~%d g;do{scanf%dtemp-number1;iftemp-number10||temp-number1qprintf输入的报废设备数量有误,请重新输入报废设备数量整数;rewindstdin;}whiletemp-number10||temp-number1q;temp-pri__=1*temp-ID;printf请输入设备单价;temp-sum=temp-number1*temp-pri__;do{scanf%lftemp-pri__;iftemp-pri__=0printf输入的设备单价有误,请重新输入设备单价;rewindstdin;}whiletemp-pri__=0;temp-sum=temp-number1*temp-pri__;printf设备需要总价%.2lf\ntemp-sum;p-next=temp;temp-next=NULL;getchar;loadhead;printf********************输入完成,按ENTER返回!!!*********************;getchar;systemcls;}/*通过设备编号查询__信息*/voidID_buystructinfor__tion*head{structinfor__tion*p=head;intID1;printf请输入设备编号1~10;do{scanf%dID1;ifID1=0||ID110printf输入的设备编号有误,请重新输入1~10;rewindstdin;}whileID1=0||ID110;ifp-next==NULL{printf__信息为空\n;getchar;getchar;systemcls;return;}printf\n设备编号部门编号__日期设备状态设备数量报废数量单价总价\n;printf1买-1废;whilep!=NULL{ifID1==p-IDp-style==1printf\n%d\t%d\t%s\t%d\t%d\t%d\t%.2f\t%.2fp-IDp-nump-datep-stylep-numberp-number1p-pri__p-sum;p=p-next;}printf\n********************查询完成,按ENTER返回!!!*********************;getchar;systemcls;}/*通过部门编号查询设备__信息*/voidnum_buystructinfor__tion*head{structinfor__tion*p=head;intnum1;printf请输入部门编号(1~4);do{scanf%dnum1;ifnum1=0||num14printf输入的设备编号有误,请重新输入;rewindstdin;}whilenum1=0||num14;ifp-next==NULL{printf__信息为空\n;getchar;getchar;systemcls;return;}printf\n设备编号部门编号__日期设备状态设备数量报废数量单价总价\n;printf1买-1废;whilep!=NULL{ifnum1==p-nump-style==1printf\n%d\t%d\t%s\t%d\t%d\t%d\t%.2f\t%.2fp-IDp-nump-datep-stylep-numberp-number1p-pri__p-sum;p=p-next;}printf\n********************查询完成,按ENTER返回!!!*****************;getchar;systemcls;}/*通过设备编号查询报废信息*/voidID_ruinstructinfor__tion*head{structinfor__tion*p=head;intID1;printf请输入设备编号(1~10);do{scanf%dID1;ifID1=0||ID110printf输入的设备编号有误,请重新输入;rewindstdin;}whileID1=0||ID110;ifp-next==NULL{printf__信息为空\n;getchar;getchar;systemcls;return;}printf\n设备编号部门编号__日期设备状态设备数量报废数量单价总价\n;printf1买-1废;whilep!=NULL{ifID1==p-IDp-style==-1printf\n%d\t%d\t%s\t%d\t%d\t%d\t%.2f\t%.2fp-IDp-nump-datep-stylep-numberp-number1p-pri__p-sum;p=p-next;}printf\n********************查询完成,按ENTER返回!!!*********************;getchar;getchar;systemcls;}/*通过部门编号查询设备报废信息*/voidnum_ruinstructinfor__tion*head{structinfor__tion*p=head;intnum1;printf请输入部门编号1~4;do{scanf%dnum1;ifnum1=0||num14printf输入的设备编号有误,请重新输入;rewindstdin;}whilenum1=0||num14;ifp-next==NULL{printf__信息为空\n;getchar;getchar;systemcls;return;}printf\n设备编号部门编号__日期设备状态设备数量报废数量单价总价\n;printf1买-1废;whilep!=NULL{ifnum1==p-nump-style==-1printf\n%d\t%d\t%s\t%d\t%d\t%d\t%.2f\t%.2fp-IDp-nump-datep-stylep-numberp-number1p-pri__p-sum;p=p-next;}printf\n********************查询完成,按ENTER返回!!!*********************;getchar;getchar;systemcls;}/*读取__报废记录信息*/structinfor__tion*scanf_addstructinfor__tion*head{structinfor__tion*pt1=head;structinfor__tion*temp;FILE*fp;systemcls;iffp=fopen__报废记录.___r==NULL{printf打开错误!\n;return0;}whilept1-next!=NULLpt1=pt1-next;while!feoffp{temp=structinfor__tion*__llocsizeofstructinfor__tion;fscanffp%d%d%s%d%d%d%lf%lf\ntemp-IDtemp-numtemp-datetemp-styletemp-numbertemp-number1temp-pri__temp-sum;q=temp-number;pt1-next=temp;pt1=temp;}temp-next=NULL;iffclosefp{printf不能关闭文件!!!\n;exit0;}returnhead;getchar;systemcls;}/*显示__报废设备信息记录*/voidshow_infor__tionstructinfor__tion*head{structinfor__tion*p=head-next;systemcls;ifp==NULL{printf__信息为空\n;getchar;getchar;systemcls;return;}printf\n设备编号部门编号__日期设备状态设备数量报废数量单价总价\n;printf1买-1废;whilep!=NULL{printf\n%d\t%d\t%s\t%d\t%d\t%d\t%.2f\t%.2fp-IDp-nump-datep-stylep-numberp-number1p-pri__p-sum;p=p-next;}printf\n\n********************显示完成,按ENTER返回!!!*********************;getchar;systemcls;}/*设备__信息查询显示界面*/voidbuy_menustructinfor__tion*head{ints;systemcls;printf\1*************************__历史查询信息界面********************\1\n;printf\1*********1:通过设备编号查询__信息********\1\n;printf\1*********2:通过部门编号查询__信息********\1\n;printf\1*********0:返回********\1\n;printf\1*****************************************************************\1;printf\n请输入0~2之间的数操作:;do{scanf%ds;ifs0||s2printf\n输入有误!请重新选择0~2之间的数操作:;rewindstdin;}whiles0||s2;switchs{case1:ID_buyhead;break;case2:num_buyhead;break;case0:systemcls;printf**********************返回成功!**********************\n;break;}}/*设备报废信息查询显示界面*/voidruin_menustructinfor__tion*head{ints;systemcls;printf\1*************************报废历史查询信息界面********************\1\n;printf\1*********1:通过设备编号查询报废信息********\1\n;printf\1*********2:通过部门编号查询报废信息********\1\n;printf\1*********0:返回********\1\n;printf\1*****************************************************************\1;printf\n请输入0~2之间的数操作:;do{scanf%ds;ifs0||s3printf\n输入有误!请重新选择0~2之间的数操作:;rewindstdin;}whiles0||s2;switchs{case1:ID_ruinhead;break;case2:num_ruinhead;break;case0:systemcls;printf**********************返回成功!**********************\n;break;}}/*显示全部信息的界面*/voidshow_menustructinfor__tion*head{ints;systemcls;printf\1******************************显示全部信息******************************\1\n;printf\1*****1:显示设备信息****\1\n;printf\1*****2:显示部门信息****\1\n;printf\1*****3:显示__报废信息****\1\n;printf\1*****0:返回****\1\n;printf\1************************************************************************\1;printf\n请输入0~3之间的数选择需要的操作:;do{scanf%ds;ifs0||s3printf\n输入有误!请重新选择0~3之间的数选择需要的操做:;rewindstdin;}whiles0||s3;switchs{case1:load_equipment;break;case2:load_department;break;case3:show_infor__tionhead;break;case0:systemcls;printf**********************返回成功!**********************\n;break;}}/*将信息存储到文件*/voidloadstructinfor__tion*head{structinfor__tion*p=head-next;FILE*fp;systemcls;iffp=fopen__报废记录.___w==NULL{printf打开错误!\n;exit0;}whilep!=NULL{fprintffp\n%d\t%d\t%s\t%d\t%d\t%d\t%.2f\t%.2fp-IDp-nump-datep-stylep-numberp-number1p-pri__p-sum;p=p-next;}iffclosefp{printf不能关闭文件!!!\n;exit0;}ifp==NULLprintf\n\n***************************保存成功!***************************\n\n;}/*部门可使用设备报表制作*/voidshow_liststructinfor__tion*head{structinfor__tion*p=head-next;chardate1
[11];intlist
[4]
[2];intij;{time_ttval;structtm*data;tval=timeNULL;data=localtimetval;printf制表时间:%d-%d-%d\ndata-tm_year+1900data-tm_mon+1data-tm_mday;}fori=0;i4;i++forj=0;j2;j++list[i][j]=0;whilep!=NULL{ifstrcmpdate1p-date=0{ifp-num==1p-style==1list
[0]
[0]+=p-number-p-number1;ifp-num==1p-style==-1list
[0]
[1]+=p-number1;ifp-num==2p-style==1list
[1]
[0]+=p-number-p-number1;ifp-num==2p-style==-1list
[1]
[1]+=p-number1;ifp-num==3p-style==1list
[2]
[0]+=p-number-p-number1;ifp-num==3p-style==-1list
[2]
[1]+=p-number1;ifp-num==4p-style==1list
[3]
[0]+=p-number-p-number1;ifp-num==4p-style==-1list
[3]
[1]+=p-number1;}p=p-next;}printf\n\n**************************************************************\n;printf部门编号剩余设备数量报废设备数量;fori=0;i4;i++{printf\n\t\t%di+1;forj=0;j2;j++printf\t\t%dlist[i][j];}printf\n\t\t*********************************************;printf\n\n\n\t\t可使用设备数量=剩余设备数量-报废设备数量;printf\n\n\n\t\t*******************************************;printf\n\n\n\t\t$$$部门1可以使用设备数量%d$$$list
[0]
[0]-list
[0]
[1];printf\n\t\t$$$部门2可以使用设备数量%d$$$list
[1]
[0]-list
[1]
[1];printf\n\t\t$$$部门3可以使用设备数量%d$$$list
[2]
[0]-list
[2]
[1];printf\n\t\t$$$部门4可以使用设备数量%d$$$list
[3]
[0]-list
[3]
[1];printf\n\n********************输入完成,按ENTER返回!!!*********************;getchar;systemcls;return;}/*判断日期输入是否正确*/intjudge_datechardate[]{intyearmonthdayijudegement;ifstrlendate!=10return0;ifdate
[4]!=-||date
[7]!=-return0;fori=0year=0;i4;i++/*字符串转化成整型*/year=year*10+date[i]-0;fori=5month=0;i7;i++month=month*10+date[i]-0;fori=8day=0;i10;i++day=day*10+date[i]-0;ifmonth=0||month12return0;else{judegement=year%4==0year%100!=0||year%400==0;/*判断是否为闰年等于1为闰年*/ifmonth==1||month==3||month==5||month==7||month==8||month==10||month==12{ifday0||day31return0;elsereturn1;}elseifmonth==4||month==6||month==9||month==11{ifday0||day30return0;elsereturn1;}elseifjudegement==1month==2{ifday0||day29return0;elsereturn1;}else{ifday0||day28return0;elsereturn1;}}}/*主函数*/__in{intsize=sizeofstructinfor__tion;structinfor__tion*head;head=structinfor__tion*__llocsize;head-next=NULL;systemcls;{scanf_addhead;while1{menu_select__in_menuhead;}}}/*调用系统时间*/voidprintftimechardate[]{charstr1
[10];time_tfirst;structtm*t;first=timeNULL;t=localtimefirst;itoat-tm_year+1900date10;strcatdate-;ift-tm_mon+110strcatdate0;itoat-tm_mon+1str110;strcatdatestr1;strcatdate-;ift-tm_mday10strcatdate0;itoat-tm_mdaystr110;strcatdatestr1;}/*统计设备信息*/voidtongjishengyustructinfor__tion*head{chardate3
[11];FILE*fp;intmns=0o=0g=0;structinfor__tion*temp*p=head*w;systemcls;temp=structinfor__tion*__llocsizeofstructinfor__tion;w=temp;whilep-next!=NULLp=p-next;printf请输入设备编号1~10;do{scanf%dm;ifm=0||m10printf输入的设备编号有误,请重新输入1~10;rewindstdin;}whilem=0||m10;printf请输入部门编号1~4;do{scanf%dn;ifn=0||n4printf输入的部门编号有误,请重新输入1~4;rewindstdin;}whilen=0||n4;printf\n请输入日期,格式为YYYY-MM-DD:;do{address:scanf%sdate3;ifjudge_datedate3==0printf\n您输入的日期格式不正确,请重新输入YYYY-MM-DD:;}whilejudge_datedate3==0;ifstrcmpp-datedate3=0{printf\n提示:输入时间不能小于__时间!请重新输入:;date3
[0]=\0;gotoaddress;}iffp=fopen__报废记录.___r+==NULL{printf打开错误!\n;exit0;}while!feoffp{fscanffp%d%d%s%d%d%d%lf%lf\nw-IDw-numw-datew-stylew-numberw-number1w-pri__w-sum;ifw-ID==mw-num==n{s=s+w-number;o=o+w-number1;g=s-o;}}printf剩余使用数量:%d\ng;systempause;temp-ID=m;temp-num=n;printf********************输入完成,按ENTER返回!!!*********************;getchar;systemcls;}
11.____
[1]廖湖声.C程序设计案例教程.人民邮电出版社
2010.9
[2]何钦铭.C语言程序设计.高等教育出版社,
2009.5.
[3]谭浩强.C程序设计(第
2、
3、4版).清华大学出版社,
2000.
1.
[4]《C语言程序设计教程》,杨路明著,北京邮电大学出版社.
12.用户使用手册
(1)本系统能够查询设备信息,部门信息能够__设备,报废设备能够查询设备的__历史与报废历史能够查看剩余使用次数,能够显示全部信息能查看设备信息报表
(2)使用本系统前需要新建3个文本文件,分别是设备名称.___部门名称._____报废记录.___姓名XXX日期2013年6月17日课程名称界面程序欢迎界面主菜单界面查询部门信息剩余使用次数__设备报废设备设备的__历史查询设备的报废历史查询退出系统通过设备编号查询通过部门编号查询通过设备编号查询通过部门编号查询查询设备信息显示全部信息设备信息列表显示设备信息显示部门信息显示__,报废信息设备信息1设备信息2通讯录信息1221设备信息3设备信息4是否为0否打印主菜单接收用户选项是否合法调用对应选项函数进入下一级菜单退出系统是否是是打印__设备子菜单输入设备编号选项否输入部门编号选项是否合法是否合法输入__数量输入__单价结束否图2__设备流程图是打印__历史子菜单输入查询方式选项否是否合法是否为0输入编号选项是否返回主菜单退出函数图3查询流程图。