下载此文档

C语言课程设计——职工信息管理系统设计.pdf


文档分类:IT计算机 | 页数:约37页 举报非法文档有奖
1/37
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/37 下载此文档
文档列表 文档介绍
该【C语言课程设计——职工信息管理系统设计 】是由【小布er】上传分享,文档一共【37】页,该文档可以免费在线阅读,需要了解更多关于【C语言课程设计——职工信息管理系统设计 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:.
C语言课程设计——职工信息管
理系统设计:.
C语言课程设计题目及要求
题目:职工信息管理系统设计
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不
重复)。试设计一职工信息管理系统,使之能提供以下功能:
1、职工信息录入功能(职工信息用文件保存)。
2、职工信息浏览功能。
3、查询功能:可以按“职工号”、“姓名”、“电话”、“工资”等方式查询记录;
如果查询信息不存在,显示没有找到信息;
4、删除功能:可以根据职工号或姓名删除一条已经存在的职工信息;
5、排序功能:能对姓名、年龄、工资进行排序,并显示;
6、修改功能:改变记录项的一个或多个属性,并用新的记录项覆盖已经存在的记录
项;
7、数据存、取:数据以文件形式存储在磁盘上,因此在程序运行中需要对文件进行
读取操作。编程人员可以根据实际需要自己定义文件的存储格式,在数据读写时必须精
确定位,以免破坏文件的正确性。除此之外,程序中还要不停处理用户的输入,对输入
数据的容错性进行检查,可以保证数据的合法性,避免恶意和非恶意的操作对用户数据
的破坏。
8、系统以菜单方式工作。
2:.
1)
3:.
4:.
2)名,如果有则删除此职工对应的信息记录。
3)添加模块:可在原有职工信息记录的基础上增加新
的职工信息记录,并保存至磁盘中。
4)排序模块:分为根据姓名、年龄、工资排序的三个
具体需求,分别提示管理员选择排序的方式。
5)保存模块:将2)3)4)5)6)7)8)模块中改动的数据保
存至文件中,以便进行管理、查找和备份。
6)读取模块:将文件中的数据读取至内存中。
7)

系统模块结构图
根据模块功能描述,职工信息系统可以分为11个
模块,系统模块结构如图1所示。
职工信息管理系统
主程序模块
登录显查修删排添保读退
录入示询改除序加存取出
模模模模模模模模模模模
块块块块块块块块块块块
图1系统模块结构图


本程序定义结构体staffinfo,用于存放职工的相关
信息。定义的结构体如下(每个变量后面/**/中的
内容为各个变量的含义):
structstaffinfo
{
5:.
charnum[10];/*工号*/
charname[9];/*姓名*/
charsex[3];/*性别*/
charage[3];/*年龄*/
charedu[5];/*学历*/
charrole[5];/*职位*/
charsalary[6];/*工资*/
chartel[16];/*电话*/
charaddr[30];/*住址*/
}sta[N];
由于工号、姓名、电话、住址等信息是用来描述职
工这个有机整体,为了表示这些字段不是孤立的,而
是共同描述一个完整的事物,因此用结构体来实现。

1)voidgotoxy(intx,inty)
功能:用于在屏幕上定位,其中整型数x代表列
数,整型数y代表行数,其中0≤x≤80,0≤y,(0,
0)代表左上角。
2)voidshowtable1()
voidshowtable2()
功能:分别打印表头与表尾。
3)voidenter()
功能:进入系统登录界面,验证管理员输入的密
码。
输入:登录密码。
处理:①接收管理员输入的密码,存放到相应变
量中进行判断。
②判断密码是否正确,如果相符,则进入主
6:.
菜单。
③如果不相符,则提示用户重新输入。
4)intfind(charstr[30],intt)
功能:查找指定记录,str[30]表示需管理员
输入的职工的某一项信息,t表示通过哪一项来
查找,例如通过工号、姓名来查找。若找到与输
入的信息相同的记录,则返回找到的记录号,若
找不到就返回-1。
输入:职工信息的某一项和想查找的途径。
处理:①接收管理员输入的职工信息与查找方
式,并存入相应的变量中。
②将内存中的数据与输入信息逐条比对,直
到找到相同的记录,返回找到的记录号。
③若没找到该职工的记录,就返回-1。
5)voidcreat()
功能:创建职工信息。将管理员输入的若干条信
息记录存入内存中。
输入:①需创建的信息记录条数。
②若干条职工信息记录(工号、姓名、职位、
电话等信息)。
处理:①提示管理员逐条输入职工信息。
②获取管理员输入的信息,存入内存中。
③提示管理员录入成功。
6)voiddisplay()
功能:浏览经过改动的信息记录,即打印出内存
中的数据。
7)voidsearch()
功能:查询所需职工信息记录。四种方式查询:
7:.
工号、姓名、电话和工资。根据管理员输入的职
工信息和查找方式,按不同方式查找记录,列表
显示查找到的记录内容。
输入:①想要查找的方式。
②要查询的职工的某一项信息。
处理:①提示管理员要查询的方式和要查询职工
的对应信息。
②循环品牌查找对应记录。
③如果找找,则列表显示结果。
8)voidmodify()
功能:修改原有的职工信息记录。两种查找匹配
记录的方式:工号和姓名。根据管理员输入的查
找方式和职工信息查找是否存在匹配记录,若存
在,则将此职工的信息改为管理员输入的内容。
输入:①想要查找匹配记录的方式。
②要修改的职工的某一项信息。
③确认修改的选项字母。
④所要修改记录的内容值(工号、姓名等)。
处理:①接收管理员输入的查找匹配记录的方式
和要修改职工的某一项信息。
②判断是否有匹配职工记录,若有,
则列表显示该记录并提示管理员是
否确认修改。③提示管理员输入该职
工方的各项信息。
④提示管理员是否修改成功。
9)voiddelet()
功能:删除指定的职工信息记录。两种查找匹配
记录的方式:工号和姓名。根据管理员输入的查
8:.
找方式和职工信息查找匹配记录,若找到,则列
表显示,经提示后删除该条记录。
输入:①想要查找匹配记录的方式。
②要删除的职工的某一项信息。
③确认删除的选项字母。
处理:①接收管理员输入的查找匹配记录的方式
和要修改职工的某一项信息。
②判断是否有匹配职工记录,若有,
则列表显示该记录并提示管理员确认
删除。
③提示管理员是否删除成功。
10)voidadd()
功能:增加新的职工信息记录。判断所输入的工
号是否已存在,若不存在,则将管理员输入的若
干条信息记录存入内存中。
输入:①想要添加职工的工号。
②新的职工信息记录(姓名、学历
等)。
处理:①提示管理员输入新职工的工号。
②判断职工号是否存在,若不存在,则提示
管理员逐条输入职工信息。
③获取管理员输入的信息,存入内存中。
④提示管理员添加成功。
11)voidorder()
功能:给职工信息记录排序(升序)。三种排序
方式:姓名、年龄和工资。根据管理员输入的排
序方式排序,列表显示排序结果。
输入:想要的排序方式。
9:.
处理:①提示管理员输入排序方式。
②按照指定方式排序。
③列表显示排序结果。
12)voidsave()
功能:保存职工信息记录及记录条数至文件中。
输入:确认保存的选项字母。
处理:①提示管理员确认保存。
②若确认保存,则将内存中的数据保
存至指定文件中。
③提示管理员保存成功。
13)voidload()
功能:从文件中读取职工信息记录及记录条数。
输入:确认读取的选项字母。
处理:①提示管理员确认读取。
②将文件中的数据读取至内存中。
③提示管理员读取成功。
14)voidquit()
功能:确认保存过数据后,安全退出系统。
输入:①确认保存的选项字母。
②确认退出系统的选项字母。
处理:①提示管理员确认保存。
②若确认保存,则将内存中的数据保
存至指定文件中。
③提示管理员是否退出系统,若是则
退出。
15)voidmain()
功能:根据主菜单上的各项指令,调用1)至14)
的各个函数。系统控制图如图1所示。
10:.


包括加载头文件,定义结构体,宏定义,全局变量,
并对他们进行初始化。
#include<>/*输入/输出函数*/
#include<>/*其他说明*/
#include<>/*字符串函数*/
#include<>/*系统操作函数*/
#include<>/*屏幕操作函数*/
#defineN20/*系统记录的职工数,可根据
不同企业的需要更改*/
structstaffinfo
{
charnum[10];/*工号*/
charname[9];
charsex[3];
charage[3];
charedu[5];/*学历*/
charrole[5];/*职位*/
charsalary[6];
chartel[16];/*电话*/
charaddr[30];/*住址*/
}sta[N];
intn=0;/*实际录入的职工信息记录总条数
*/
()
主要实现对整个程序的运行控制。详细分析可参考
11:.
图3。
/********************************************
*主函数
*********************************************/
voidmain()
{
voidgotoxy(intx,inty);/*光标定位*/
voidshowtable1();/*打印表头*/
voidshowtable2();
voidenter();
intfind(charstr[30],intt);
voidcreat();/*录入职工信息
*/
voiddisplay();/*浏览职工信息*/
voidsearch();
voidmodify();
voiddelet();
voidadd();
voidorder();
voidsave();/
voidload();/*从文件读取职
工信息*/
voidquit();/*退出系统*/
system("color3e");
enter();
while(1)
{
intchoice;
system("cls");/*清屏*/
printf("职工信息管理系统");
12:.
printf("==============主菜单
==============\n");
printf("************************************
************\n");
printf("((\0021:录
入职工信息))\n");
printf("((\0022:浏
览职工信息))\n");
printf("((\0023:查
询所需职工信息))\n");
printf("((\0024:修
改原有的职工信息))\n");
printf("((\0025:删
除原有的职工信息))\n");
printf("((\0026:添
加新的职工信息))\n");
printf("((\0027:给
职工信息排序))\n");
printf("((\0028:保
存职工信息))\n");
printf("((\0029:读
取职工信息))\n");
printf("((\0020:退
出系统))\n");
printf("
*********************************************
***\n");
13:.
do
{
printf("\n\004
请输入指令(0~9):");
scanf("%d",&choice);/*输入选择的数
字*/
}while(choice<0||choice>9);
switch(choice)
{
case1:creat();break;
case2:display();break;
case3:search();break;
case4:modify();break;
case5:delet();break;
case6:add();break;
case7:order();break;
case8:save();break;
case9:load();break;
case0:quit();break;
default:
break;
}
}
}
(intx,inty)
0≤x≤80,0≤y,(0,0)代表左上角。
/*******************************************
*光标定位
*******************************************/
14:.
voidgotoxy(intx,inty)
{
COORDcoord;
=x;/*横坐标,表示列数*/
=y;/*纵坐标,表示行数*/
SetConsoleCursorPosition(GetStdHandle(STD_O
UTPUT_HANDLE),coord);
}
()和表尾showtable2()
用于打印表格的头和尾。
/*********************************************
*表头
*********************************************/
voidshowtable1()
{
printf("*");
inti;
for(i=0;i<78;i++)
printf("=");
printf("*");
printf("|工号|姓名|性别|年龄|学历|
职位|工资|电话|住址|");
printf("|------+--------+------+------+------+------+------
+----------+----------------|");
}
/*********************************************
*表尾
*********************************************/
voidshowtable2()
15:.
{
inti;
printf("*");
for(i=0;i<78;i++)
printf("=");
printf("*");
}

用于管理员登录,若密码输入正确则进入菜单。
/*********************************************
*登录
*********************************************
*/
voidenter()
{
charstr1[]={"123"};
charstr2[20];
gotoxy(15,10);
printf("\欢迎进入职工信息管理系统!!\n");
gotoxy(29,12);
printf("\004请输入管理员登录密码:");
gets(str2);
if(strcmp(str1,str2))/*字符串函数strcmp,指若两者
相等则返回0*/
{
system("cls");
gotoxy(32,8);
printf("\004密码输入错误!");
gotoxy(32,9);
16:.
printf("\004请重新输入:");
fflush(stdin);/*将缓冲区的内容传送到stdin中,
即清理缓冲区的内容*/
enter();
}
}

用于第一次输入职工信息记录。
/*****************************************
*创建职工信息
******************************************/
voidcreat()/*创建职工信息记录*/
{
inti,r;
system("cls");/*清屏*/
printf("\n\n\004请输入本次所录入职工信息
数:");
scanf("%d",&r);
n+=r;/*r为当前次输入的职工信息
数,n为录入的职工信息数总数*/
for(i=0;i<r;i++)
{
system("cls");
printf("\n\004输入第%d位职工的信
息:\n",i+1);
printf("\004请输入工号:");
scanf("%s",sta[i].num);
printf("\004请输入姓名:");
17:.
scanf("%s",sta[i].name);
printf("\004请输入性别:");
scanf("%s",sta[i].sex);
printf("\004请输入年龄:");
scanf("%s",sta[i].age);
printf("\004请输入学历:");
scanf("%s",sta[i].edu);
printf("\004请输入职位:");
scanf("%s",sta[i].role);
printf("\004请输入工资:");
scanf("%s",sta[i].salary);
printf("\004请输入电话:");
scanf("%s",sta[i].tel);
printf("\004请输入住址:");
scanf("%s",sta[i].addr);
}
printf("\n\n\002信息成功录入!\n");
printf("\004请按任意键返回主菜单:");
fflush(stdin);/*清除缓存*/
getch();/*接收任意一个字符*/
}

用于查看内存中的职工信息记录。
/*****************************************
*浏览职工信息
******************************************/
voiddisplay()
{
18:.
inti;
system("cls");
gotoxy(16,2);
printf("****************全体职工信息
****************\n");
gotoxy(0,3);
showtable1();
for(i=0;i<n;i++)
printf("|%-5s|%-7s|%-5s|%-5s|%-5s|%-5s|%-
5s|%-9s|%-15s|",sta[i].num,sta[i].name,sta[i].sex,sta
[i].age,sta[i].edu,sta[i].role,sta[i].salary,sta[i].tel,sta[i].
addr);
showtable2();
printf("\n\004请按任意键返回主菜单:");
fflush(stdin);
getch();
}

用于查询职工信息记录,有四种查询方式。
/**********************************
*查询所需的职工信息(4种方式)
**********************************/
voidsearch()
{
inta,t;
charstr[20];
system("cls");
gotoxy(26,8);
19:.
printf("======查询职工信息======\n");
printf("************************************
");
gotoxy(19,10);
printf("((\0021:按工号查
询))\n");
gotoxy(19,11);
printf("((\0022:按姓名查
询))\n");
gotoxy(19,12);
printf("((\0023:按电话查
询))\n");
gotoxy(19,13);
printf("((\0024:按工资查
询))\n");
gotoxy(20,14);
printf("************************************
");
printf("\004请输入您希望的查询方式(1~4):");
scanf("%d",&t);
system("cls");
switch(t)
{
case1:printf("\n\n\004请输入工号:");break;
case2:printf("\n\n\004请输入姓名:");break;
case3:printf("\n\n\004请输入电话:");break;
case4:printf("\n\n\004请输入工资:");break;
}
scanf("%s",str);
20:.
a=find(str,t);/*str与sta[i].[*]中的字符串比较,
若一样find()函数返回i值,即找到第i+1条信息与刚
输入的相同,t表示查询方式*/
if(a!=-1)
{
printf("\n\002已查到该员工信息,内容
为:\n");
showtable1();
printf("|%-5s|%-7s|%-5s|%-5s|%-5s|%-5s|%-
5s|%-9s|%-15s|",sta[a].num,sta[a].name,sta[a].sex,st
a[a].age,sta[a].edu,sta[a].role,sta[a].salary,sta[a].tel,st
a[a].addr);
showtable2();
}
elseprintf("\n\n\004对不起,文件中没有此职工
的记录。\n");
printf("\004请按任意键返回主菜单:");
fflush(stdin);
getch();
}

用于查找匹配记录,将str[100]与sta[i].[*]中的字
符串比较,若两者一样返回记录号,若两者不一样返回
-1。
/*****************************************
*查找指定记录
******************************************/
21:.
intfind(charstr[30],intt)/*t表示1为工
号2为姓名3为工资4为电话*/
{
inti;
for(i=0;i<n;i++)
if((t==1&&strcmp(str,sta[i].num)==0)||(t==2&&st
rcmp(str,sta[i].name)==0)||(t==3&&strcmp(str,sta[i].
salary)==0)||(t==4&&strcmp(str,sta[i].tel)==0))
return(i);/*两字符串若一
样,strcmp(str,sta[i].[*]返回零值*/
return(-1);
}

用于修改职工信息记录,有两种方式查找匹配记
录。
/**************************************
*修改原有的职工信息
***************************************/
voidmodify()
{
inta,i;
charstr[20],e;
system("cls");
gotoxy(26,8);
printf("======修改职工信息======\n");
gotoxy(20,9);
printf("************************************
");
22:.
gotoxy(19,10);
printf("((\0021:按工号修
改))\n");
gotoxy(19,11);
printf("((\0022:按姓名修
改))\n");
gotoxy(20,12);
printf("************************************
");
gotoxy(24,13);
printf("\004请输入您希望的修改方式(1~2):");
scanf("%d",&i);
system("cls");
switch(i)
{
case1:printf("\n\n\004请输入要修改的信息
的工号:");break;
case2:printf("\n\n\004请输入要修改的信息
的姓名:");break;
}
scanf("%s",str);
a=find(str,i);
if(a!=-1)
{

C语言课程设计——职工信息管理系统设计 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数37
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小布er
  • 文件大小2 MB
  • 时间2022-12-06