ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:459.54KB ,
资源ID:5282702      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5282702.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言程序设计职工信息管理系统.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

C语言程序设计职工信息管理系统.docx

1、C语言程序设计职工信息管理系统程序设计工程训练报告职工信息管理系统 课程名称 C语言程序设计工程训练姓 名 院(系) 专业班级 学 号 指导教师 1 需求分析实验设备信息包括:设备编号,设备名称,设备种类(如:微机、打印机、扫描仪等等),设备价格,设备购入日期,是否报废,报废日期等。系统以菜单方式工作,需要实现以下主要功能:1,能够完成对设备的录入;2,能够查询设备的信息;3,能够对设备信息进行修改;4,能够对设备进行分类统计2 系统总框图和功能模块说明2.1 系统总框图图1 系统总框图2.2 功能模块说明录入实验设备信息模块:完成设备信息的录入;查询实验设备信息模块:完成设备信息的查询;修改

2、实验设备信息模块:完成设备信息的修改;分类统计设备信息模块:完成设备信息的分类与统计;退出实验设备信息管理系统:完成管理系统的退出。3 系统设计3.1 主要结构体设备编号、名称、类型、价格、购入日期、报废情况、报废日期typedef struct information int no; /*设备编号*/ char name20; /*设备名称*/ char type20; /*设备类型*/ int price; /*设备价格*/ struct Date buy; /*购入日期*/ char ifbroken; /*是否报废*/ struct Date broken; /*报废日期*/ info

3、rmation;struct Date int year; int month; int day;3.2主要功能函数void Startwork(); /*实验设备管理系统开始*/void Endwork(); /*实验设备管理系统结束*/void initiSystem(); /*系统初始化*/void addequipment(); /*录入实验设备信息*/void inquireequipment(); /*查询实验设备信息*/void recomposeequipment(); /*修改实验设备信息*/void classifyequipment(); /*实验设备分类统计*/3.3

4、关键函数的流程图1、主函数:begin(算法开始)输出请选择功能(1-5):输入数字=ch if ch等于5 输出您将退出管理系统!是否继续退出? break; else switch(ch) case1:录入设备信息;break; case2:查询设备信息;break; case3:修改设备信息;break; case4:分类设备信息;break; default:出错;break; end (算法结束) 输出按任意键退出。2、录入实验设备信息begin输出 “请输入设备的名称、种类、价格、购买日期、报废情况”输入 名称、种类、价格、购买日期、报废情况If 已报废 输入“报废日期”Else

5、不需输入end3、查询设备信息begin输出“请选择查询的方式:1-按设备编号查询;2-按设备名称查询;3-按设备种类查询;”输入数字=ch switch(ch) case1:查询方式1;break; case2:查询方式2;break; case3:查询方式3;break; default:出错;break; end4、修改设备信息begin输出请选择修改的方式:1-按设备编号修改;2-按设备名称修改;其他键-退出修改功能 输入数字=ch switch(ch) case1:修改方式1;break; case2:修改方式2;break; default:出错;break; end5、分类统计设

6、备信息begin输出“选择分类方式:1-按种类分类统计;2-按报废情况分类统计;其他键-退出分类统计功能”输入数字=ch switch(ch) case1: 按种类分类统计1;break; case2: 按报废情况分类统计2;break; default:出错;break; end4 系统调试1,首次打开系统,进行系统初始化:,2,进入管理系统界面:3,选择功能1,按提示开始录入信息:4,选择功能2,按提示查询信息:5,选择功能3,选择修改的方式,系统找出设备信息显示给用户,按提示修改信息:6,选择功能4,按提示进行设备信息的分类统计:7,选择功能5,退出系统:5 总结问题1:录入实验设备信息

7、的报废情况,未报废的日期录不录入问题;解方:首先,设备的信息都定义在结构体中,存储时以结构体的长度存储,可以对某项信息不进行录入,所以在录入报废情况后,写一个判断语句,根据判断是否报废来决定是否录入报废日期;问题2:如何实现设备信息的存放、查询、修改等;解方:(1),可通过结构体数组来存放数据;(2),最好的方法是通过文件指针,将数据存放在文件中,用文件指针函数可以很方便的调用这些数据;问题3:输入数据时,数据不被读取;解方:在需要输入数据前,加上一个fflush(stdin); 清空输入缓冲区,才能不影响后面的数据读取,包含于stdlib.h;问题4:某个功能结束后,想继续进行该功能;解方:

8、while循环语句,并且是总进行循环,最后面定义一个if语句来询问用户是否要继续该功能,否的话就用break语句,从而跳出while循环;问题5,:按设备名称查询(修改、分类统计),如何逐个比较名称是否相符;解房:从文件头开始,从文件中读出数据放在&equipment,用while判断是否读完,while语句里面用字符串比较函数比较查询的设备名称是否与存在文件的设备名称相符,相符就输出数据,不符继续读出数据放在&equipment,再进行while,直至比较字符串相符输出数据后跳出循环或者数据读完就结束循环;问题6:每次运行程序后,数据保存只能在此次运行时能用,关闭程序后再打开时无数据;解方:

9、程序首先就要打开一个可读可写文件,如fp=fopen(equipment.dat,rb+), 然后再把后续的数据通过文件指针来存放在这个文件中。必须说明的是,如果是首次运行程序,则文件新建并打开一个二进制文件,反之,文件打开已存在的文件;问题7:设备编号是系统自动编号的,实现系统准确累加并编号;解方:定义全局变量,但应该定义好每次打开运行程序时此时的默认编号,分两大类来进行数据的累加和编号,(1),文件中未存储数据,此时文件还没有存储数据,不必对数据处理;(2),文件中已存储数据,存储了数据的话,就读出最后一个设备的编号,即为此次的默认编号了;6 源程序清单主函数开始void main() c

10、har ch,con; Startwork(); /*提供菜单界面*/ while(1) system(cls); /*执行清屏操作*/ printf(n #实验设备管理系统#n); printf( #n); printf( # 1-录入实验设备信息 #n); printf( # 2-查询实验设备信息 #n); printf( # 3-修改实验设备信息 #n); printf( # 4-实验设备分类统计 #n); printf( # 5-退出系统 #n); printf( #n); printf( #n); printf(n请选择功能(1-5):n); fflush(stdin); /*清空输

11、入缓冲区,才能不影响后面的数据读取。包含于stdlib.h*/ ch=getchar(); printf(您选择了功能%c:n,ch); if(ch=5) printf(您将退出管理系统!是否继续退出?(y或者Y-退出,其他键-不退出)n); fflush(stdin); /*清空输入缓冲区,才能不影响后面的数据读取。包含于stdlib.h*/ con=getchar(); /*当输入y或者Y时退出,其他键则继续了while循环*/ if(con=y|con=Y) /*con=y|Y将变成任意键都退出,因为=优先级大于|。*/ break; else switch(ch) case1:adde

12、quipment();break; case2:inquireequipment();break; case3:recomposeequipment();break; case4:classifyequipment();break; default:fault();break; printf(按任意键继续退出。n); Endwork();/*实验设备管理系统开始*/void Startwork() long len; information equipment; fp=fopen(equipment.dat,rb+); /*首先打开存在的一个文件equipment.dat,rb+的方式是打开一

13、个存在的文件,允许读写*/ if(fp=NULL) /*当不存在文件equipment.dat,进行系统初始化,即建立一个新的二进制文件*/ printf(不能打开文件equipment.dat,自动执行系统初始化功能!n); initiSystem(); printf(按任意键继续执行!n); fflush(stdin); getch(); fflush(stdin); else /*当存在文件equipment.dat,并打开equipment.dat,这里要注意的是no_total是全局变量,将作为设备的编号,每次打开系统时no_total=0,因此要找到每次打开系统时准确的no_tot

14、al值,即已存储的设备编号*/ fseek(fp,0,SEEK_END); len=ftell(fp); if(len=sizeof(information) /*文件存有数据*/ fseek(fp,sizeof(information)*(-1),SEEK_END); fread(&equipment,sizeof(information),1,fp); no_total=equipment.no; else if(len=0) /*文件未存有数据*/ no_total=0; else /*其他错误情况*/ printf(系统初始化文件失败!退出程序n); getch(); exit(1);

15、 /*实验设备管理系统退出*/void Endwork() /*在退出系统前把打开的文件关闭*/ fclose(fp);/*系统初始化*/void initiSystem() no_total=0; remove(equipment.dat); fp=fopen(equipment.dat,wb+); /*建立一个新的二进制文件,wb+的方式是建立一个新的二进制文件,允许读和写,*/ if(fp=NULL) printf(系统初始化失败!n); getch(); exit(1); printf(系统初始化完成!n);/*在菜单栏输入了错误的功能号后,进行的操作*/void fault() pr

16、intf(输入了错误的功能号!nn按任意键返回到菜单!n); fflush(stdin); getch();/*录入实验设备信息*/void addequipment() char ch; information equipment; printf( n); printf( 录入实验设备信息 n); printf( n); while(1) printf(系统已经存储了%d个设备的信息。n由系统对设备编号进行自动逐加编号。n,no_total); no_total+; /*对设备编号逐加*/ equipment.no=no_total; /*自行录入设备编号*/ printf(该次需要录入的设

17、备的编号为:%d号。n,no_total); printf(请输入%d号设备名称:,no_total); scanf(%s,&equipment.name); printf(请输入%d号设备种类:,no_total); scanf(%s,&equipment.type); printf(请输入%d号设备价格:,no_total); scanf(%d,&equipment.price); printf(请输入购买日期(如:2013 01 01):); scanf(%d %d %d,&equipment.buy.year,&equipment.buy.month,&equipment.buy.da

18、y); printf(请输入%d号设备是否报废(Y或者y-报废,N或者n-尚未报废):,no_total);loop: fflush(stdin); scanf(%c,&equipment.ifbroken); if(equipment.ifbroken=Y|equipment.ifbroken=y) /*分成报废和未报废,报废输入报废日期*/ printf(请输入报废日期(如:2013 01 01):); scanf(%d %d %d,&equipment.broken.year,&equipment.broken.month,&equipment.broken.day); else if(

19、equipment.ifbroken=N|equipment.ifbroken=n) /*未报废,不需要输入日期*/ printf(该设备尚未报废!无需输入报废日期!nn); /*若存入文件中有误,则再添加equipment.broken.year=0;equipment.broken.month=0;equipment.broken.day=0;*/ else printf(输入有误,请重新输入:); goto loop; fseek(fp,0,SEEK_END); /*将文件读写位置指针读到文件尾,数据就可以一直往下保存*/ fwrite(&equipment,sizeof(informa

20、tion),1,fp); printf(n *n); printf( * 编号 t名称t种类t价格t购入日期 是否报废 报废日期 *n); printf( *n); if(equipment.ifbroken=Y|equipment.ifbroken=y) printf( * %dtt%st%st%dt%4d %2d %2dt %ct%4d %2d %2d *n,equipment.no,equipment.name,equipment.type,equipment.price,equipment.buy.year,equipment.buy.month,equipment.buy.day,e

21、quipment.ifbroken,equipment.broken.year,equipment.broken.month,equipment.broken.day); printf( *n); else printf( * %dtt%st%st%dt%4d %2d %2dt %ctt *n,equipment.no,equipment.name,equipment.type,equipment.price,equipment.buy.year,equipment.buy.month,equipment.buy.day,equipment.ifbroken); printf( *n); pr

22、intf(录入%d号设备%s的信息(如上)完成。n继续录入下一个设备请按Y或y,退出录入并返回菜单请按任意其他键n,no_total,equipment.name); fflush(stdin); ch=getchar(); if(ch!=y&ch!=Y) break; /*查询实验设备信息*/void inquireequipment () char ch,con; printf( n); printf( 查询实验设备信息 n); printf( n); while(1) printf(系统已经存储了%d个设备的信息。n,no_total); if(no_total=0) /*文件中还没有存

23、数据时,选择查询功能将弹出得退出的提示*/ printf(n请输入任意键退出查询功能并返回菜单!n); fflush(stdin); getch(); break; /*结束while循环*/ printf(请选择查询的方式:1-按设备编号查询;2-按设备名称查询;3-按设备种类查询;其他键-退出查询功能n); fflush(stdin); ch=getchar(); switch(ch) case1:wayone();break; case2:waytwo();break; case3:waythree();break; default:printf(您输入了其他键,系统将退出查询功能!n请

24、再次确认是否退出查询功能!n);break; printf(继续查询功能请输入Y或者y,退出查询功能并返回菜单请输入其他任意键n); fflush(stdin); con=getchar(); if(con!=Y&con!=y) break; /*1-按设备编号查询*/void wayone() int no; information s; printf(请输入设备编号:);loop: scanf(%d,&no); if(nono_total|no1) printf(系统中没有编号为%d的设备,最大编号为%d,请重新输入设备编号:,no,no_total); goto loop; else f

25、seek(fp,sizeof(information)*(no-1),SEEK_SET); /*从文件首移动到第n-1个长度为sizeof(information)的位置,即该设备信息存放在文件中的首位置*/ fread(&s,sizeof(information),1,fp); printf( *n); printf( * 编号 t名称t种类t价格t购入日期 是否报废 报废日期 *n); printf( *n); if(s.ifbroken=Y|s.ifbroken=y) printf( * %dtt%st%st%dt%4d %2d %2dt %ct%4d %2d %2d *n,s.no,s.name,s.type,s.price,s.buy.year,s.buy.month,s.buy.day,s.ifbroken,s.broken.year,s.broken.month,s.broken.day); printf( *n); else printf( * %d

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2