C语言课程设计职工信息管理系统设计.docx
- 文档编号:25340369
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:34
- 大小:23.33KB
C语言课程设计职工信息管理系统设计.docx
《C语言课程设计职工信息管理系统设计.docx》由会员分享,可在线阅读,更多相关《C语言课程设计职工信息管理系统设计.docx(34页珍藏版)》请在冰豆网上搜索。
C语言课程设计职工信息管理系统设计
C语言课程设计题目及要求
题目:
职工信息管理系统设计
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:
1、职工信息录入功能(职工信息用文件保存)。
2、职工信息浏览功能。
3、查询功能:
可以按“职工号”、“姓名”、“电话”、“工资”等方式查询记录;如果查询信息不存在,显示没有找到信息;
4、删除功能:
可以根据职工号或姓名删除一条已经存在的职工信息;
5、排序功能:
能对姓名、年龄、工资进行排序,并显示;
6、修改功能:
改变记录项的一个或多个属性,并用新的记录项覆盖已经存在的记录项;
7、数据存、取:
数据以文件形式存储在磁盘上,因此在程序运行中需要对文件进行读取操作。
编程人员可以根据实际需要自己定义文件的存储格式,在数据读写时必须精确定位,以免破坏文件的正确性。
除此之外,程序中还要不停处理用户的输入,对输入数据的容错性进行检查,可以保证数据的合法性,避免恶意和非恶意的操作对用户数据的破坏。
8、系统以菜单方式工作。
1.设计目的
在今天这个高速信息时代,许多繁杂的办公事务都由计算机代劳,例如职工信息管理等重复劳动越来越需要计算机来处理。
本系统就是为提高企业管理职工信息的效率而设计的,现在职工信息管理系统发挥无可取代的作用。
职工信息管理系统是一个可以用来进行职工工号、姓名等自然信息以及各项工资构成进行录入、查询、修改、删除、增加和排序浏览等操作的应用软件。
2.设计的总体思想
本系统是用VisualC进行设计与开发,总体思想是结构化、模块化的程序设计。
由于主要实现的是管理系统的增、删、改、查和排序等功能,因此应用到程序设计中的基本控制结构,如循环和选择,还使用到C语言最具特色的语言成分——指针,高效地使用数组、字符串和结构体,采用经典的排序方法——冒泡法进行排序,并且包含对文件的读、写等基本操作。
3.功能模块描述
职工信息管理系统是为企业进行职工信息管理提供辅助而设计的,需要为用户提供一个简单的人机界面以便操作,各功能模块如下。
1)登录模块:
根据输入的登录密码判断是否允许该用户使用本系统,输入密码正确才能进入管理界面,管理职工信息。
2)创建模块:
当第一次使用本系统时,根据提示输入职工的工号、姓名、性别、年龄、学历、职位、工资、电话和住址,可一次性输入多条职工的信息记录。
浏览模块:
可以浏览经输入、修改、删除、添加、排序、读取后的职工信息。
3)查询模块:
分为根据工号、姓名、电话、工资查询的四个具体需求,分别提示管理员要查询的职工信息的的工号、姓名、电话或工资。
4)修改模块:
分为根据工号、姓名修改的两个具体需求,分别提示管理员要修改的职工信息的工号和姓名,如果有对应职工的信息记录存在,则逐项列出对应职工的信息。
5)删除模块:
分为根据工号、姓名删除的两个具体需求,分别提示管理员要删除的职工信息的工号和姓名,如果有则删除此职工对应的信息记录。
6)添加模块:
可在原有职工信息记录的基础上增加新的职工信息记录,并保存至磁盘中。
7)排序模块:
分为根据姓名、年龄、工资排序的三个具体需求,分别提示管理员选择排序的方式。
8)保存模块:
将2)3)4)5)6)7)8)模块中改动的数据保存至文件中,以便进行管理、查找和备份。
9)读取模块:
将文件中的数据读取至内存中。
4.概要设计
系统模块结构图
根据模块功能描述,职工信息系统可以分为11个模块,系统模块结构如图1所示。
5.详细设计
5.1数据结构设计
本程序定义结构体staffinfo,用于存放职工的相关信息。
定义的结构体如下(每个变量后面/**/中的内容为各个变量的含义):
structstaffinfo
{
charnum[10];/*工号*/
charname[9];/*姓名*/
charsex[3];/*性别*/
charage[3];/*年龄*/
charedu[5];/*学历*/
charrole[5];/*职位*/
charsalary[6];/*工资*/
chartel[16];/*电话*/
charaddr[30];/*住址*/
}sta[N];
由于工号、姓名、电话、住址等信息是用来描述职工这个有机整体,为了表示这些字段不是孤立的,而是共同描述一个完整的事物,因此用结构体来实现。
5.2各函数说明
1)voidgotoxy(intx,inty)
功能:
用于在屏幕上定位,其中整型数x代表列数,整型数y代表行数,其中0≤x≤80,0≤y,(0,0)代表左上角。
2)voidshowtable1()
voidshowtable2()
功能:
分别打印表头与表尾。
3)voidenter()
功能:
进入系统登录界面,验证管理员输入的密码。
输入:
登录密码。
处理:
①接收管理员输入的密码,存放到相应变量中进行判断。
②判断密码是否正确,如果相符,则进入主菜单。
③如果不相符,则提示用户重新输入。
4)intfind(charstr[30],intt)
功能:
查找指定记录,str[30]表示需管理员输入的职工的某一项信息,t表示通过哪一项来查找,例如通过工号、姓名来查找。
若找到与输入的信息相同的记录,则返回找到的记录号,若找不到就返回-1。
输入:
职工信息的某一项和想查找的途径。
处理:
①接收管理员输入的职工信息与查找方式,并存入相应的变量中。
②将内存中的数据与输入信息逐条比对,直到找到相同的记录,返回找到的记录号。
③若没找到该职工的记录,就返回-1。
5)voidcreat()
功能:
创建职工信息。
将管理员输入的若干条信息记录存入内存中。
输入:
①需创建的信息记录条数。
②若干条职工信息记录(工号、姓名、职位、电话等信息)。
处理:
①提示管理员逐条输入职工信息。
②获取管理员输入的信息,存入内存中。
③提示管理员录入成功。
6)voiddisplay()
功能:
浏览经过改动的信息记录,即打印出内存中的数据。
7)voidsearch()
功能:
查询所需职工信息记录。
四种方式查询:
工号、姓名、电话和工资。
根据管理员输入的职工信息和查找方式,按不同方式查找记录,列表显示查找到的记录内容。
输入:
①想要查找的方式。
②要查询的职工的某一项信息。
处理:
①提示管理员要查询的方式和要查询职工的对应信息。
②循环品牌查找对应记录。
③如果找找,则列表显示结果。
8)voidmodify()
功能:
修改原有的职工信息记录。
两种查找匹配记录的方式:
工号和姓名。
根据管理员输入的查找方式和职工信息查找是否存在匹配记录,若存在,则将此职工的信息改为管理员输入的内容。
输入:
①想要查找匹配记录的方式。
②要修改的职工的某一项信息。
③确认修改的选项字母。
④所要修改记录的内容值(工号、姓名等)。
处理:
①接收管理员输入的查找匹配记录的方式和要修改职工的某一项信息。
②判断是否有匹配职工记录,若有,则列表显示该记录并提示管理员是否确认修改。
③提示管理员输入该职工方的各项信息。
④提示管理员是否修改成功。
9)voiddelet()
功能:
删除指定的职工信息记录。
两种查找匹配记录的方式:
工号和姓名。
根据管理员输入的查找方式和职工信息查找匹配记录,若找到,则列表显示,经提示后删除该条记录。
输入:
①想要查找匹配记录的方式。
②要删除的职工的某一项信息。
③确认删除的选项字母。
处理:
①接收管理员输入的查找匹配记录的方式和要修改职工的某一项信息。
②判断是否有匹配职工记录,若有,则列表显示该记录并提示管理员确认删除。
③提示管理员是否删除成功。
10)voidadd()
功能:
增加新的职工信息记录。
判断所输入的工号是否已存在,若不存在,则将管理员输入的若干条信息记录存入内存中。
输入:
①想要添加职工的工号。
②新的职工信息记录(姓名、学历等)。
处理:
①提示管理员输入新职工的工号。
②判断职工号是否存在,若不存在,则提示管理员逐条输入职工信息。
③获取管理员输入的信息,存入内存中。
④提示管理员添加成功。
11)voidorder()
功能:
给职工信息记录排序(升序)。
三种排序方式:
姓名、年龄和工资。
根据管理员输入的排序方式排序,列表显示排序结果。
输入:
想要的排序方式。
处理:
①提示管理员输入排序方式。
②按照指定方式排序。
③列表显示排序结果。
12)voidsave()
功能:
保存职工信息记录及记录条数至文件中。
输入:
确认保存的选项字母。
处理:
①提示管理员确认保存。
②若确认保存,则将内存中的数据保存至指定文件中。
③提示管理员保存成功。
13)voidload()
功能:
从文件中读取职工信息记录及记录条数。
输入:
确认读取的选项字母。
处理:
①提示管理员确认读取。
②将文件中的数据读取至内存中。
③提示管理员读取成功。
14)voidquit()
功能:
确认保存过数据后,安全退出系统。
输入:
①确认保存的选项字母。
②确认退出系统的选项字母。
处理:
①提示管理员确认保存。
②若确认保存,则将内存中的数据保存至指定文件中。
③提示管理员是否退出系统,若是则退出。
15)voidmain()
功能:
根据主菜单上的各项指令,调用1)至14)的各个函数。
系统控制图如图1所示。
6.程序分析
6.1程序预处理
包括加载头文件,定义结构体,宏定义,全局变量,并对他们进行初始化。
#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;/*实际录入的职工信息记录总条数*/
6.2主函数voidmain()
主要实现对整个程序的运行控制。
详细分析可参考图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("职工信息管理系统");
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");
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;
}
}
}
6.3光标定位函数voidgotoxy(intx,inty)
0≤x≤80,0≤y,(0,0)代表左上角。
/*******************************************
*光标定位
*******************************************/
voidgotoxy(intx,inty)
{
COORDcoord;
coord.X=x;/*横坐标,表示列数*/
coord.Y=y;/*纵坐标,表示行数*/
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
6.4表头showtable1()和表尾showtable2()
用于打印表格的头和尾。
/*********************************************
*表头
*********************************************/
voidshowtable1()
{
printf("*");
inti;
for(i=0;i<78;i++)
printf("=");
printf("*");
printf("|工号|姓名|性别|年龄|学历|职位|工资|电话|住址|");
printf("|------+--------+------+------+------+------+------+----------+----------------|");
}
/*********************************************
*表尾
*********************************************/
voidshowtable2()
{
inti;
printf("*");
for(i=0;i<78;i++)
printf("=");
printf("*");
}
6.5登录界面
用于管理员登录,若密码输入正确则进入菜单。
/*********************************************
*登录
**********************************************/
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);
printf("\004请重新输入:
");
fflush(stdin);/*将缓冲区的内容传送到stdin中,即清理缓冲区的内容*/
enter();
}
}
6.6创建职工记录
用于第一次输入职工信息记录。
/*****************************************
*创建职工信息
******************************************/
voidcreat()/*创建职工信息记录*/
{
inti,r;
system("cls");/*清屏*/
printf("\n\n\004请输入本次所录入职工信息数:
");
scanf("%d",&r);
n+=r;/*r为当前次输入的职工信息数,n为录入的职工信息数总数*/
for(i=0;i { system("cls"); printf("\n\004输入第%d位职工的信息: \n",i+1); printf("\004请输入工号: "); scanf("%s",sta[i].num); printf("\004请输入姓名: "); 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();/*接收任意一个字符*/ } 6.7浏览记录 用于查看内存中的职工信息记录。 /***************************************** *浏览职工信息 ******************************************/ voiddisplay() { inti; system("cls"); gotoxy(16,2); printf("****************全体职工信息****************\n"); gotoxy(0,3); showtable1(); for(i=0;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(); } 6.8查询记录 用于查询职工信息记录,有四种查询方式。 /********************************** *查询所需的职工信息(4种方式) **********************************/ voidsearch() { inta,t; charstr[20]; system("cls"); gotoxy(26,8); 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请输入工资: ");brea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 职工 信息管理 系统 设计