C语言实践之职工信息录入
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
`
《C语言程序设计》课程实践报告职工信息管理系统设计
班级:
学号:
学生姓名:
指导老师:
日期:
1.·设计目标
.本小组的设计题目是《职工信息管理系统的设计》,使系统以菜单方式工作,该题目主要需要完成对职工信息的录入、查询、修改、删除和统计功能。
1.查询需要满足能按工号查询,按姓名查询,按电话号码查询,按工资多少排序查询并输出。
2.修改需要满足准确输入员工工号之后能按意愿修改所需要修改的部分,并完成保存。
3.删除需要满足能按员工工号进行删除,并在删除之后重新完成保存。
4.统计需要完成对姓名、性别、年龄、学历、工资、住址相同的人数的统计。
2 .总体设计
3. 详细设计
1.信息采用结构体数组Work实现,包括SIZE(定义20)个员工数据
#include
#include
#include
#define SIZE 20 /*预处理指令,定义个数*/
struct Work_type /*定义关于职工的结构体*/
{
int num; /*职工工号*/
char name[20]; /*职工姓名*/
char sex[10]; /*职工性别*/
int age; /*职工年龄*/
char degree[15]; /*职工学历*/
int money; /*职工工资*/
char adde[15]; /*职工住址*/
int tel; /*职工电话*/
} Work[SIZE],max; /*变量名列表*/
3.定义主界面函数即face函数
5.定义查询函数
5.a全体查询函数
5.b.1定义个人查询中按工号查询函数
5.b.2.定义个人查询中按名字查询函数
5.b.3定义个人查询中按手机号查询
5.c按工资高低排序并输出的函数(需要先打开文件work.dat)
6定义修改函数(需要先打开文件work.dat)
7.定义删除函数(需要先打开文件work.dat)
8.定义统计函数(需要先打开文件work.dat,定义一个一维数组d[6]={0,0,0,0,0,0})
4. 调试与测试
a.调试方法:
打开Microsoft Visual C++ 6.0,先将各个功能函数的的内容清空,只保留主函数main(),然后编译检验main()函数中是否有错,如果没有错误,再连接、运行。确认main()函数一切无误后,然后加入功能函数face()函数、save()以及input_data()函数,由于face()函数与save()函数比较简单,所以与input_data()函数一起进行调试,save()函数中主要注意读取文件,与写入文件,这都是二进制的形式。若main()函数、face()函数以及save 的()函数编译、连接、运行没问题,继续加入find_data()函数,就这样方法依次检查调试repair_data()函数、del_data()函数以及count_data()函数。当所有的功能函数都加上且正确无误时,就可以进入下一个环节—程序的测试。
b.测试方法:
运行程序,然后进入职工信息管理系统的界面,在这里需要做的就是把自己当成一个企业人事管理者,来对该程序进行使用,看该程序有哪些方面用着不够完善,把这些问题依次整理出来,再对源程序进行修改,在这个过程中也需要对程序进行调试,不过不必将各个功能函数的的内容清空再进行如上述的调试方法,而是,改一部份运行一次,看是否有无。
如input_data()函数有误,则先修改input_data()函数,一块一块的进行修改,就是遵循C语言的模块化设计原理,若所有的都改过来了,且运行无误,那就大功告成了。
c.在调试中遇到的问题:
在调试过程中,我遇到了诸多问题,很多在老师的帮助以及自己翻阅资料下解决了问题1:标点符号在输入的时候,使用的是中文输入法,这种错误一般都难以发现,让修改的时候找不到目标。
解决方法:用“替换”。如果程序中的error很多,不管error是什么,先将标点替换成英文的标点。
问题2:调试时,有的时候编译后没什么问题,就是在点击连接link时出现了错误。而且,这种错误让我们不知道怎么修改。但是我们的程序的确正确。
解决方法:首先检查是否将运行窗口关闭,若关闭后任然不行则将源程序保存(save),然后关掉win-vc,重新启动win-vc。
问题3:在调试时,编译等都不出现问题,但是在进行调用input_data()录入时,却总出现问题,不能完整预想的录入。
解决方法:首先看是不是在save()函数中,输入完一次后就讲文件关闭,即将fp(close)函数放在for()循环之内。接着看是不是在scanf()函数中指明变量地址时候出错,若是数组变量则不加“&”,若非数组变量则需要加“&”。修改完成后再次编译,调试,看是否能正确录入了。
问题4:在定义修改函数时,起初只能实现整条记录的修改,不能做到想改什么改什么。
解决方法:利用switch-case语句,通过输入不同的数字进而实现不同部分的修改,真真做到想改什么改什么。
问题5:在定义删除函数时,虽然删除了想删除的记录,但是依旧输出SIZE条记录,只是最后一条是(“0 0 0 ”)。
解决方法:在save()函数中,增加条件将工号不为0的输出。
问题6:定义统计函数时,对于if()函数后面的条件判断没有错误,但是运行时却怎