C++程序设计职工信息管理系统.docx
《C++程序设计职工信息管理系统.docx》由会员分享,可在线阅读,更多相关《C++程序设计职工信息管理系统.docx(14页珍藏版)》请在冰豆网上搜索。
C++程序设计职工信息管理系统
1.前言
随着科技的进步和信息产业的飞速发展,计算机成为了现代生活中一个重要的工具。
本系统利用计算机对职工信息进行统一管理,包括录入、删除、修改、查询记录等功能,职工信息以文件的形式存储。
系统的设计方法是结构化设计方法,采用C语言进行开发。
软件平台采用VisualC++6.0。
本系统能够实现职工信息管理工作的系统化、规范化和自动化,为人们的工作和生活提供便利。
2.设计目的
本程序旨在训练基本编程能力,进一步加深、巩固所学专业课程(《C/C++序设计》)的基本理论知识,理论联系实际,了解管理信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。
能够利用所学的基本知识和技能,解决简单的程序设计问题,增强独立完成工作的能力。
本程序中涉及结构体、数组、文件等方面的知识。
通过本程序的训练,能对C语言的文件操作有一个更深刻的了解,掌握利用数组存储结构实现职工信息管理的原理,为进一步开发出高质量的信息管理系统打下坚实的基础。
3.功能描述
根据需求分析结果,职工信息管理系统可以分为录入职工资料、浏览职工信息、职工信息查询、职工信息修改、删除职工信息、添加职工信息、退出信息系统。
职工信息管理系统主要利用数组来实现,其数组元素是结构体类型,整个系统由如下几大功能模块组成。
如图1所示。
图1、职工信息管理功能模块
(1)输入记录模块。
输入记录模块主要完成将数据存入数组中的工作。
在此职工信息管理系统中,输入模块主要完成的是从键盘读入数据并以文本存储形式保存在文件中,它与后续的模块操作直接相联系。
(2)查询记录模块。
查询记录模块主要完成在数组中查找满足相关条件的记录。
在此
职工信息管理系统中,用户可以按照职工的学历或职工的职工号在数组中进行查找。
若找到该职工记录,则从文件中读出并显示到屏幕上;若未查找到,则显示无相关信息。
(3)更新记录模块。
更新记录模块主要完成对记录的更新操作。
在此职工信息管理系统中,它实现对记录的添加、修改、删除、操作。
一般而言,系统进行了这些操作之后,需要将修改的数据写入源数据文件,然后进行保存,以便下一次的操作,否则,操作等视为无效。
(4)输出记录模块。
输出记录模块主要完成两个任务。
第一,它实现对记录的存盘操作,即将数组中各元素中存储的记录信息写入数据文件中。
第二,它实现将数组中存储的记录信息显示在屏幕上。
4.总体设计
(1)、功能模块设计
(1)主控main()函数执行流程
职工信息管理系统执行主流程如图2所示。
它先以可读写的方式打开文本类型的数据文件,此文件默认为“c:
\news”,若该文件不存在,则新建此数据文件。
当打开文件操作成功后,从文件中一次读出一条记录,添加到新建的数组中,然后执行显示主菜单和进入主循环操作,进行按键判断。
图2.主流程图
在判断键值时,有效的输入为1-7之间的任意数值,其他输入都被视为错误按键。
若输入为7(即变量choice=7),则会显示退出系统,再按enter键保存文件退出系统。
若选择1,则调用enter()函数,执行录入记录操作;若选择2,则调用display()函数,执行将记录输出至屏幕的操作;若选择3,则调用locate()函数,执行查询记录操作;若选择4,调用add()函数,执行添加记录操作;若选择,5,则调用delet()函数,执行删除记录操作:
若选择6,则调用modify()函数,执行修改记录操作。
(2)输入记录模块
输入记录模块主要实现将数据存入数组中。
用户选择1,执行输入职工信息功能,屏幕上显示“开始输入记录”,“职工号”字样。
输入职工号后显示“姓名”字样。
输入后,依次显示“性别”“学历”“住址”等字样。
然后判断是否继续输入,根据输入键值执行相应功能。
(3)查询记录模块
查询记录模块(流程图如图3所示),主要实现在数组中按职工学历或职工号查找满足条件的记录。
在查询函数locate()中,定义整型变量choice,用printf语句显示查询菜单,用scanf输入选择的查询方式代号,用switch(choice)进入所选择的具体查询函数,包括按学历查询和按职工号查询。
图3.查询记录流程图
(4)更新记录模块
更新记录模块主要实现了对记录的添加、修改、删除操作。
因为记录是以数组的结构形式存储的,所以这些操作都在数组中完成。
下面分别介绍这3个功能模块。
1.添加记录
添加记录(程序流程图如图4所示)主要是选用了插入方法来增加记录。
声明整形变量i,po,a和*f。
用printf语句提示“请输入你要插入的位置(1-%d):
”,判断插入位置是否有误,若有误则输出“输入位置有误,按任意键返回.......”若输入无误,则显示“开始插入记录!
”指定位置之后的记录依次往后移动一个位置,然后输入职工信息,插入该位置。
*f=1并保存,用if(*f==1)判断条件*f==1是否成立,若成立显示“添加成功,按任意键返回.......”返回a+1,否则显示“添加失败,按任意键返回.......”并返回i。
2.删除记录
删除记录(程序流程图如图5所示)操作是输入职工的职工号来删除职工记录。
声明整形变量i,po,flag,a,,*f和char形数组nu[20]。
其中给flag附初始值flag=0.用printf语句提示“开始删除记录”“请输入要删除职工的工号”,接着用scanf语句输入删除对象工号。
用for循环,循环主体是先判断c[i].num中是否存在所输入的工号(调用字符串比较函数strcmp)。
若存在,再用for循环从要删除的这个职工开始,依次用后一个职工的信息覆盖前一个的,*f=1并保存,跳出大循环;若不存在,输出“无此职工的相关信息!
”,“按任意键继续……”判断if(flag==1)返回i-1,否则返回i。
图4.添加记录流程图
图5.删除记录流程图
3.修改记录
修改记录(程序流程图如图6所示)操作需要对数组中目标元素的数据域中的值进行修改,声明整型变量a,f,I,po,flag和char型数组numb[]为flag赋初值flag=0.printf输出“开始修改记录”“请输入要修改职工的工号”,用用for循环,循环主体是先判断c[i].num中是否存在所输入的工号(调用字符串比较函数strcmp)。
若存在,为po赋值po=I,flag=1,再执行if(flag=1),输出该职工的所有信息,再显示“请输入职工号:
”用scanf函数输入职工号,再用printf函数显示“姓名:
”用scanf函数输入姓名,依次用printf函数显示“性别:
”“学历:
”等。
再为f赋值f=1;若不存在,输出“无此职工的相关信息!
”,“修改成功,按任意键返回……”返回f。
图6.修改记录流程图
(5)输出记录模块
当把记录输出至文件时,调用fwrite(&c[j],sizeof(structclerk),1,fp)函数,将数组元素c[i]中各字段的值,写入文件指针fp所指的文件:
当把记录输出至屏幕时,调用voiddisplay()函数,将数组中存储的记录信息显示在屏幕上。
(2)、数据结构设计
本程序定义了结构体clerk,用于存放职工的基本信息。
这里仅有2个与职工有关的字段,读者可以按照需要扩展相关字段。
structclerk
{
charnum[12];
charname[9];
charsex[3];
charxl[11];
charadr[60];;
chartell[13];
intage;
intsalary;
}
c[N];
其各字段的值的含义如下:
●num[12]:
保存职工的职工号。
●name[9]:
保存职工的姓名。
●sex[3]:
保存职工的性别。
●xl[11]:
保存职工的学历。
●adr[60]:
保存职工的住址。
●tell[13]:
保存职工的电话号码。
●age:
保存职工的年龄。
●salary:
保存职工的工资。
(3)、函数功能描述
1)menu()
函数原型:
voidmenu()
menu()函数用于显示菜单信息。
2)enter()
函数原型:
intenter(intn)
enter()函数用于输入职工信息。
3)display()
函数原型:
voiddisplay(inta)
display()函数用于显示C数组中存储的所有记录,内容为clerk结构中定义的内容。
4)locate()
函数原型:
voidlocate(inta)
locate()函数用于查询指定职工所有信息,内容为clerk结构中定义的内容。
5)add()
函数原型:
intadd(inta,int*f)
add()函数用于添加职工信息。
6)delet()
函数原型:
intdelet(inta,int*f)
delet()函数用于删除指定职工号的职工所有信息。
7)modify()
函数原型:
intmodify(inta,intf)
modify()函数用于修改指定职工号的职工的信息。
8)quit()
函数原型:
voidquit()
quit()函数用于退出职工管理系统。
5.程序实现
(1)、源程序(略)
(2)、运行结果
(1)主界面(图7)
图7.主界面
当用户刚进入职工信息管理系统时,其主界面如图7所示。
此时,系统己经将"c:
\news"文件打开,若文件不为空,则将数据从文件中逐条记录读出,并写入数组中。
用户可选择1-7之间的数值,调用相应功能进行操作。
当输入为7时,退出此管理系统。
(2)输入记录
当用户输入1并按Enter键后,即可进入数据输入界面。
其输入记录过程如图8所示,这里输入了3条记录。
执行判断语句时,当用户输入为Y或者y时,继续输入,当用户输入N或者n时,它会结束输入过程,按任意键返回到主菜单界面。
图8.输入记录
(3)浏览记录
当用户执行了输入记录或已经从数据文件中读取了记录之后,即可输入2并按Enter键,查看当前数组中的记录情况,如图9所示,此时屏幕上有3条记录。
图9.浏览记录
(4)查询记录
当用户输入3并按Enter键后,即可进入记录查询界面。
其查询记录过程如图所示,用户可按职工学历(如图10)或职工号(如图11)进行记录查找。
图10.按职工学历查询
11.按职工号查询
(5)添加记录
当用户输入4并按Enter键后,即可进入添加记录界面。
其添加记录过程如图12所示。
图12.添加记录
(5)删除记录
当用户输入5并按Enter键后,即可进入记录删除界面。
其删除记录过程如图13所示,这里按职工号删除了一条职工号为2011101190的记录。
图13.删除记录
(6)修改记录
当用户输入6并按Enter键后,即可进入记录修改界面。
其修改记录过程如图14所示,这里修改了职工号为2011101180的职工的姓名、住址和电话号码。
图14.修改记录
(7)保存记录
当用户输入7并按Enter键后,屏幕显示“退出系统…..”,再按Enter键即可进入记录保存界面并退出系统。
其保存结果提示信息如图15所示,这里有3条记录已经存储至磁盘数据文件c:
\news中。
图15.保存记录
6.小结
本文介绍了职工信息管理系统的设计思路及其编程实现,重点介绍了功能模块的设计原理和利用数组存储结构实现职工信息管理的过程。
实践是检验真理的唯一标准,学了再多的知识不会运用,就如同鸟儿长了翅膀却不会飞翔。
学习了C语言就是为了运用它帮助我们解决一些日常生活中遇到的问题,而此次课程设计就为我们提供了检验自己能力的机会,也给了我们一次弥补以前缺陷的机会。
通过本程序的开发使我熟悉C语言下的文件和数组操作,熟悉了软件开发原理,能够用所学的基本知识和技能,解决简单的程序设计问题,增强了独立完成工作的能力。