//头文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//存储员工信息的结构体
typedef struct employee
{
int num; //员工号
char duty[10]; //员工职务
char name[10]; //员工姓名
char sex[3]; //员工性别
unsigned char age; //员工年龄
char edu[10]; //教育水平
int salary; //员工工资
char tel_office[13]; //办公电话
char tel_home[13]; //家庭电话
char mobile[13]; //手机
char qq[11]; //qq号码
char address[31]; //家庭住址
struct employee *next;
}EMP;
//全局变量
char password[9]; //系统密码
EMP *emp_first,*emp_end; //定义指向链表的头结点和尾节点的指针
char gsave,gfirst; //判断标示
//自定义函数声明
void addemp(void); //添加员工信息的函数
void findemp(void); //查找员工信息的函数
void listemp(void); //显示员工信息列表的函数
void modifyemp(void); //修改员工信息的函数
void summaryemp(void); //统计员工信息的函数
void delemp(void); //删除员工信息的函数
void resetpwd(void); //重置系统的函数
void readdata(void); //读取文件数据的函数
void savedata(void); //保存数据的函数
int modi_age(int s); //修改员工年龄的函数
int modi_salary(int s); //修改员工工资的函数
char *modi_field(char *field,char *s,int n); //修改员工其他信息的函数
EMP *findname(char *name); //按员工姓名查找员工信息
EMP *findnum(int num); //按员工工号查找员工信息
EMP *findtelephone(char *name); //按员工的通讯号码查找员工信息
EMP *findqq(char *name); //按员工的QQ号查找员工信息
void displayemp(EMP *emp,char *field,char *name); //显示员工信息
void checkfirst(void); //初始化检测
void bound(char ch,int n); //画出分界线
void login(); //登录检测
void menu(); //主菜单列表
/**
* 员工信息添加
*/
void addemp()
{
FILE *fp; //声明一个文件型指针
EMP *emp1; //声明一个结构型指针
int i=0;
char choice='y';
if((fp=fopen("employee.dat","ab"))==NULL) //判断信息文件中是否有信息
{
printf("打开文件employee.dat出错!\n");
getch();
return;
}
do{
i++;
emp1=(EMP *)malloc(sizeof(EMP)); //申请一段内存
if(emp1==NULL) //判断内存是否分配成功
{
printf("内存分配失败,按任意键退出!\n");
getch();
return;
}
printf("请输入第%d个员工的信息,\n",i);
bound('_',30);
printf("工号:");
scanf("%d",&emp1->num);
printf("职务:");
scanf("%s",&emp1->duty);
printf("姓名:");
scanf("%s",&emp1->name);
printf("性别:");
scanf("%s",&emp1->sex);
printf("年龄:");
scanf("%d",&emp1->age);
printf("文化程度:");
scanf("%s",&emp1->edu);
printf("工资:");
scanf("%d",&emp1->salary);
printf("办公电话:");
scanf("%s",&emp1->tel_office);
printf("家庭电话:");
scanf("%s",&emp1->tel_home);
printf("移动电话:");
scanf("%s",&emp1->mobile);
printf("QQ:");
scanf("%s",&emp1->qq);
printf("地址:");
scanf("%s",&emp1->address);
emp1->next=NULL;
if(emp_first==NULL) //判断链表头指针是否为空
{
emp_first=emp1;
emp_end=emp1;
}else {
emp_end->next=emp1;
emp_end=emp1;
}
fwrite(emp_end,sizeof(EMP),1,fp); //对数据流添加数据项
gfirst=0;
printf("\n");
bound('_',30);
printf("\n是否继续输入?(y/n)");
fflush(stdin); //清除缓冲区
choice=getch();
if(toupper(choice)!='Y') //把小写字母转换成大写字母
{
fclose(fp); //关闭文件流
printf("\n输入完毕,按任意键返回\n");
getch();
return;
}
system("cls");
}while(1);
}
void bound(char ch,int n)
{
while(n--)
putch(ch);
printf("\n");
return;
}
/*首次使用,进行用户信息初始化*/
void checkfirst()
{
FILE *fp,*fp1; //声明文件型指针
char pwd[9],pwd1[9],pwd2[9],pwd3[9],ch;
int i;
char strt='8';
if((fp=fopen("config.bat","rb"))==NULL) //判断系统密码文件是否为空
{
printf("\n新系统,请进行相应的初始化操作!\n");
bound('_',50);
getch();
do{
printf("\n设置密码,请不要超过8位:");
for(i=0;i<8&&((pwd[i]=getch())!=13);i++)
putch('*');
printf("\n再确认一次密码:");
for(i=0;i<8&&((pwd1[i]=getch())!=13);i++)
putch('*');
pwd[i]='\0';
pwd1[i]='\0';
if(strcmp(pwd,pwd1)!=0) //判断两次新密码是否一致
{
printf("\n两次密码输入不一致,请重新输入!\n\n");
}
else break;
}while(1);
if((fp1=fopen("config.bat","wb"))==NULL)
{
printf("\n系统创建失败,请按任意键退出!");
getch();
exit(1);
}
i=0;
while(pwd[i])
{
pwd2[i]=(pwd[i]^ strt);
putw(pwd2[i],fp1); //将数组元素送入文件流中
i++;
}
fclose(fp1); //关闭文件流
printf("\n\n系统初始化成功,按任意键退出后,再重新进入!\n");
getch();
exit(1);
}else{
i=0;
while(!feof(fp)&&i<8) //判断是否读完密码文件
pwd[i++]=(getw(fp)^strt); //从文件流中读出字符赋给数组
pwd[i]='\0';
if(i>=8) i--;
while(pwd[i]!=-1&&i>=0)
i--;
pwd[i]='\0'; //将数组最后一位设定为字符串的结束符
strcpy(password,pwd); //将数组pwd中的数据复制到数组password中
}
}
void delemp()
{
int findok=0;
EMP *emp1,*emp2;
char name[10],choice;
system("cls"); //对屏幕清屏
printf("\n输入要删除的员工姓名:");
scanf("%s",name);
emp1=emp_first;
emp2=emp1;
while(emp1)
{
if(strcmp(emp1->name,name)==0)
{
findok=1;
system("cls");
printf("员工:%s的信息如下:\n",emp1->name);
bound('_',40);
printf("工号:%d\n",emp1->num);
printf("职务:%s\n",emp1->duty);
printf("姓名:%s\n",emp1->name);
printf("性别:%s\n",emp1->sex);
printf("年龄:%d\n",emp1->age);
printf("文化程度:%s\n",emp1->edu);
printf("工资:%d\n",emp1->salary);
printf("办公电话:%s\n",emp1->tel_office);
printf("家庭电话:%s\n",emp1->tel_home);
printf("移动电话:%s\n",emp1-
没有合适的资源?快使用搜索试试~ 我知道了~
C语言项目——企业员工管理系统.zip
共5个文件
bat:1个
doc:1个
c:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 178 浏览量
2022-04-17
11:38:36
上传
评论 4
收藏 165KB ZIP 举报
温馨提示
C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip
资源推荐
资源详情
资源评论
收起资源包目录
企业员工管理系统.zip (5个子文件)
企业员工管理系统
程序使用说明书.doc 145KB
企业员工管理.c 26KB
企业员工管理.exe 114KB
employee.dat 396B
config.bat 20B
共 5 条
- 1
资源评论
- 把康康揣进口袋里.2024-01-02总算找到了想要的资源,搞定遇到的大问题,赞赞赞!
- m0_743882442023-03-09资源内容详细,总结地很全面,与描述的内容一致,对我启发很大,学习了。
0and1调研
- 粉丝: 15
- 资源: 1204
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功