C语言企业员工管理系统课程设计附源码Word格式文档下载.docx

上传人:b****5 文档编号:8413519 上传时间:2023-05-11 格式:DOCX 页数:52 大小:477.36KB
下载 相关 举报
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第1页
第1页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第2页
第2页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第3页
第3页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第4页
第4页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第5页
第5页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第6页
第6页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第7页
第7页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第8页
第8页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第9页
第9页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第10页
第10页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第11页
第11页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第12页
第12页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第13页
第13页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第14页
第14页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第15页
第15页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第16页
第16页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第17页
第17页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第18页
第18页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第19页
第19页 / 共52页
C语言企业员工管理系统课程设计附源码Word格式文档下载.docx_第20页
第20页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言企业员工管理系统课程设计附源码Word格式文档下载.docx

《C语言企业员工管理系统课程设计附源码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言企业员工管理系统课程设计附源码Word格式文档下载.docx(52页珍藏版)》请在冰点文库上搜索。

C语言企业员工管理系统课程设计附源码Word格式文档下载.docx

(6).删除员工信息功能模块:

由用户输入选择删除相关的员工的信息。

(7).统计员工信息功能模块:

统计本系统中员工的信息,如男、女员工的人数等。

(8).重置系统密码功能模块:

根据用户的要求,将旧密码更换设置新密码。

(9).退出系统功能模块:

在用户执行完相关系统操作之后,退出使用本系统。

四.详细设计

1.功能函数的调用关系图

首次使用系统不是首次使用

2.各功能函数的数据流程图

3.重点设计及编码

(1)本系统中对是否是第一次使用本系统进行了处理,如果是第一次使用,则需要根据提示信息进行设置密码和初始化操作。

其思路是:

首先打开密码文件,判断是否为空,进而判断系统是否是第一次使用,如果是,系统会提示输入初始密码,如果不是,系统会进入登陆页面,提示输入登陆密码,代码如下:

voidcheckfirst()

{

FILE*fp,*fp1;

//声明文件型指针

charpwd[9],pwd1[9],pwd2[9];

inti;

charstrt='

8'

;

if((fp=fopen("

employee.txt"

"

rb"

))==NULL)

{

printf("

\n\t新系统,请进行相应的初始化操作!

\n"

);

//判断系统密码文件是否为空

bound('

_'

50);

getch();

do

{

printf("

\n设置密码,请不要超过8位:

"

for(i=0;

i<

8&

&

((pwd[i]=getch())!

=13);

i++)

putch('

*'

\n请再确认一次密码:

(pwd1[i]=getch())!

=13;

pwd[i]='

\0'

pwd1[i]='

if(strcmp(pwd,pwd1)!

=0)

printf("

\n\n两次密码输入不一致,请重新输入:

\n"

else

break;

}while

(1);

if((fp1=fopen("

wb"

))==NULL)

\n系统创建失败,请按任意键退出!

getch();

exit

(1);

}

i=0;

while(pwd[i])

pwd2[i]=(pwd[i]^strt);

putw(pwd2[i],fp1);

//将数组元素送入文件流中

i++;

fclose(fp1);

//关闭文件流

\n系统初始化成功,请按任意键退出后,再重新进入!

exit

(1);

}

else

while(!

feof(fp)&

8)//判断是否读完密码文件

pwd[i++]=getw(fp)^strt;

//从文件流中读出字符赋给数组

pwd[i]='

if(i>

=8)

i--;

while(pwd[i]!

=-1&

i>

strcpy(password,pwd);

}

(2)自定义函数login()在初始化检测后调用,用于管理员的登录,用户根据提示密码,函数调用strcmp()函数对输入密码和密码文件中的读取数据进行比较,如果一致则进入系统,不一致会提示重新输入,如果3次不一致会强制退出:

voidlogin()//检测登陆密码

inti,n=3;

charpwd[9];

do

\n请输入登陆密码:

for(i=0;

putch('

if(strcmp(pwd,password))

\n密码错误,请重新输入!

system("

cls"

//调用清屏命令

n--;

break;

}while(n>

0);

if(!

n)

密码输入3次错误,请退出!

(3)自定义函数addemp()用于添加员工的信息,首先打开存储员工信息的数据文件,系统会提示用户输入相应的员工基本信息,当用户输入完成一个员工的信息后,系统会提示用户是否继续输入员工信息:

voidaddemp()

FILE*fp;

EMP*emp1;

inti=0;

charchoice='

y'

ab"

))==NULL)//追加打开一个二进制文件,并在文件末尾写数据

打开文件出错!

i++;

emp1=(EMP*)malloc(sizeof(EMP));

if(emp1==NULL)

内存分配失败,请按任意键退出!

return;

\n\t请输入第%d各员工的信息\n"

i);

40);

工号:

scanf("

%d"

&

emp1->

num);

职务:

%s"

duty);

姓名:

name);

性别:

sex);

年龄:

age);

文化程度:

edu);

工资:

salary);

办公电话:

tel_office);

家庭电话:

tel_home);

手机号码:

mobile);

QQ号码:

qq);

家庭地址:

address);

emp1->

next=NULL;

if(emp_first==NULL)//判断表头指针是否为空

emp_first=emp1;

emp_end=emp1;

else

emp_end->

next=emp1;

fwrite(emp_end,sizeof(EMP),1,fp);

//对数据流添加数据项

gfirst=0;

\n是否继续输入?

(y/n)"

fflush(stdin);

//清除缓存区

choice=getchar();

if(toupper(choice)!

='

Y'

fclose(fp);

\n输入完毕,请按任意键返回!

getchar();

}while

(1);

(4)自定义函数delemp()实现删除员工的功能。

在系统的功能菜单中选择删除信息的操作后,系统就会提示要删除的员工的姓名,输入要删除的员工的姓名后,如果系统从信息链表中找到相关信息后就会将信息显示出来,再次要求用户确定是否要删除,谨防误操作,提高信息的安全性。

voiddelemp()

intfindok=0;

EMP*emp1,*emp2;

charname[10],choice;

system("

printf("

\n请输入要删除的员工的姓名:

scanf("

name);

emp1=emp_first;

emp2=emp1;

while(emp1)

if(strcmp(emp1->

name,name)==0)

findok=1;

system("

\n员工%s的信息如下:

\n"

emp1->

bound('

%d\n"

%s\n"

%d\n"

\n确定要删除该员工信息?

(y/n)"

fflush(stdin);

choice=getchar();

if(choice!

choice!

return;

if(emp1==emp_first)

emp_first=emp1->

next;

emp2->

next=emp1->

free(emp1);

gsave=1;

savedata();

//保存数据

emp2=emp1;

emp1=emp1->

if(!

findok)

\n没有找到姓名是:

%s的信息!

return;

(5)自定义函数displayemp()在找到员工的信息后,则需进行显示:

voiddisplayemp(EMP*emp,char*filed,char*name)

if(emp)

\n%s:

%s信息如下:

filed,name);

emp->

else

bound('

\n资料库中没有%s为:

%s的员工,请重新确认!

return;

(6)自定义函数findemp()函数用于查询员工信息,在系统的功能菜单中选择查询员工信息的操作后,系统进入一个查询选项列表,用户根据自己的需要选择要使用的查询条件,根据用户输入的条件的不同,系统会调用不同的查询函数,如果系统从信息链表中找到相关的信息就会显示出来:

voidfindemp()

intchoice,ret=0,num;

charstr[13];

do{

\n\t查询员工信息:

30);

\t1.按姓名查询\n"

\t2.按工号查询\n"

\t3.按电话查询\n"

\t4.按QQ号查询\n"

\t0.返回主菜单\n"

\n请选择(0-4):

switch(choice)

{

case'

1'

:

\n请输入要查询员工的姓名:

scanf("

str);

emp1=findname(str);

//调用子函数

displayemp(emp1,"

姓名"

getchar();

break;

2'

\n请输入要查询员工的工号:

emp1=findnum(num);

itoa(num,str,10);

工号"

3'

\n请输入要查询员工的电话:

emp1=findtelephone(str);

电话"

getchar();

4'

\n请输入要查询员工的QQ号:

emp1=findqq(str);

QQ号码"

0'

ret=1;

}

}while(choice<

'

||choice>

if(ret)

EMP*findname(char*name)//按姓名查找员工信息

if(strcmp(name,emp1->

name)==0)//比较输入的名字和链表中记载的名字是否相同

returnemp1;

emp1=emp1->

returnNULL;

EMP*findnum(intnum)//按工号查询

if(num==emp1->

num)

EMP*findtelephone(char*name)//按电话号码查询员工信息

tel_office)==0||strcmp(name,emp1->

tel_home)==0||strcmp(name,emp1->

mobile)==0)

EMP*findqq(char*name)//按QQ号码查询员工信息

qq)==0)

(7)自定义函数resetpwd()用于修改密码。

在系统的功能菜单中选择修改的操作选项后,系统会提示输入旧密码,用户咋正确的输入旧密码后,根据提示即可实现密码的修改:

voidresetpwd()

charpwd[9],pwd1[9];

FILE*fp1;

\n请输入旧密码:

for(i=0;

((pwd[i]=getchar())!

putchar('

pwd[i]='

if(strcmp(password,pwd)!

\n密码错误,请按任意键退出!

getchar();

putchar('

pwd1[i]='

if(strcmp(pwd,pwd1)!

=0)//比较两次输入的密码

\n两次密码输入不一致,请重新输入!

\n\n"

else

if((fp1=fopen("

employee.tex"

i=0;

while(pwd[i])

putw(pwd[i],fp1);

fclose(fp1);

\n密码修改成功,请按任意键退出后,再重新进入!

getch();

(8)主函数程序代码如下:

intmain()

emp_first=emp_end=NULL;

//链表指针初始化

gsave=gfirst=0;

checkfirst();

login();

readdata();

menu();

PAUSE"

return0;

五.测试数据及运行结果

1.正常测试数据和运行结果

第一组:

实现添加员工信息并显示添加后员工的信息的功能,操作如下图:

第二组:

实现查询员工信息的功能,操作如下:

第三组:

实现修改员工信息的功能,并显示修改后员工的信息,操作如下:

2.异常测试数据及运行结果

登陆系统时连续输入3次密码都不正确:

文件在文档中保存出现乱码情况,在运行对话框中文件保存再打开时出现数据存储错误,如下图:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

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

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