员工信息管理系统,C语言做

Python013

员工信息管理系统,C语言做,第1张

以下是我的程序,刚编好的,刚好符合你的要求,看看吧,对你应该有帮助:

呵呵

#include

#include

#include

#include

#define N 100

struct employee

{

int num

char name[10]

char sex

int age

char xueli[30]

int wage

char addr[30]

long int tel

}em[100]/*定义一个结构体*/

void menu()

void input()

void save(int)

void display()

void del()

void add()

void search()

void search_num()

void search_xueli()

void search_tel()

void modify()/*定义各函数*/

void menu() /*菜单函数*/

{

printf(" ☆☆☆计算机科学与技术学系☆☆☆\n")

printf("\n")

printf(" ∮08802班 关丽霞∮\n")

printf("\n")

printf(" ******************职工信息管理****************\n")

printf(" 1.录入职工信息")

printf(" 2.浏览职工信息\n")

printf(" 3.查询职工信息")

printf(" 4.删除职工信息\n")

printf(" 5.添加职工信息")

printf(" 6.修改职工信息\n")

printf(" 7.退出\n")

printf(" ********************谢谢使用******************\n")

printf("\n")

printf("\n")

}

void main()

{

menu()/*调用菜单函数*/

int n,flag

char a

do

{

printf("请选择你需要操作的步骤(1--7):\n")

scanf("%d",&n)

if(n>=1&&n<=7)

{

flag=1

break

}

else

{

flag=0

printf("您输入有误,请重新选择!")

}

}

while(flag==0)

while(flag==1)

{

switch(n)

{

case 1:printf(" ◆◆◆输入职工信息◆◆◆\n")printf("\n")input()break

case 2:printf(" ◆◆◆浏览职工信息◆◆◆\n")printf("\n")display()break

case 3:printf(" ◆◆◆按职工号查询职工信息◆◆◆\n")printf("\n")search()break

case 4:printf(" ◆◆◆删除职工信息◆◆◆\n")printf("\n")del()break

case 5:printf(" ◆◆◆添加职工信息◆◆◆\n")printf("\n")add()break

case 6:printf(" ◆◆◆修改职工信息◆◆◆\n")printf("\n")modify()break

case 7:exit(0)break

default :break

}

getchar()

printf("\n")

printf("是否继续进行(y or n):\n")

scanf("%c",&a)

if(a=='y')

{

flag=1

system("cls")/*清屏*/

menu()/*调用菜单函数*/

printf("请再次选择你需要操作的步骤(1--6):\n")

scanf("%d",&n)

printf("\n")

}

else

exit(0)

}

}

void input() /*录入函数*/

{

int i,m

printf("请输入需要创建信息的职工人数(1--100):\n")

scanf("%d",&m)

for (i=0i<mi++)

{

printf("职工号: ")

srand((int)time(0))

em[i].num=rand()%10000+20000000

if(em[i].num!=em[i-1].num)

printf("%8d ",em[i].num)

printf("\n")

printf("请输入姓名: ")

scanf("%s",em[i].name)

getchar()

printf("请输入性别(f--女 m--男): ")

scanf("%c",&em[i].sex)

printf("请输入年龄: ")

scanf("%d",&em[i].age)

printf("请输入学历: ")

scanf("%s",em[i].xueli)

printf("请输入工资: ")

scanf("%d",&em[i].wage)

printf("请输入住址: ")

scanf("%s",em[i].addr)

printf("请输入电话: ")

scanf("%d",&em[i].tel)

printf("\n")

}

printf("\n创建完毕!\n")

save(m)

}

void save(int m) /*保存文件函数*/

{

int i

FILE*fp

if ((fp=fopen("employee_list","wb"))==NULL) /*创建文件并判断是否能打开*/

{

printf ("cannot open file\n")

exit(0)

}

for (i=0i<mi++) /*将内存中职工的信息输出到磁盘文件中去*/

if (fwrite(&em[i],sizeof(struct employee),1,fp)!=1)

printf("file write error\n")

fclose(fp)

}

int load() /*导入函数*/

{

FILE*fp

int i=0

if((fp=fopen("employee_list","rb"))==NULL)

{

printf ("cannot open file\n")

exit(0)

}

else

{

do

{

fread(&em[i],sizeof(struct employee),1,fp)

i++

}

while(feof(fp)==0)

}

fclose(fp)

return(i-1)

}

void display() /*浏览函数*/

{

int i

int m=load()

printf("\n 职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n")

for(i=0i<mi++) /*m为输入部分的职工人数*/

printf("\n %d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel)

}

void del() /*删除函数*/

{

int m=load()

int i,j,n,t,flag

char name[20]

printf("\n 原来的职工信息:\n")

display()/* 调用浏览函数*/

printf("\n")

printf("请输入要删除的职工的姓名:\n")

scanf("%s",name)

for(flag=1,i=0flag&&i<mi++)

{

if(strcmp(em[i].name,name)==0)

{

printf("\n已找到此人,原始记录为:\n")

printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n")

printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel)

printf("\n确实要删除此人信息请按1,不删除请按0\n")

scanf("%d",&n)

if(n==1) /*如果删除,则其他的信息都往上移一行*/

{

for(j=ij<m-1j++)

{

strcpy(em[j].name,em[j+1].name)

em[j].num=em[j+1].num

em[j].sex=em[j+1].sex

em[j].age=em[j+1].age

strcpy(em[j].xueli,em[j+1].xueli)

em[j].wage=em[j+1].wage

strcpy(em[j].addr,em[j+1].addr)

em[j].tel=em[j+1].tel

}

flag=0

}

}

}

if(!flag)

m=m-1

else

printf("\n对不起,查无此人!\n")

printf("\n 浏览删除后的所有职工信息:\n")

save(m)/*调用保存函数*/

display()/*调用浏览函数*/

printf("\n继续删除请按1,不再删除请按0\n")

scanf("%d",&t)

switch(t)

{

case 1:del()break

case 0:break

default :break

}

}

void add()/*添加函数*/

{

FILE*fp

int n

int count=0

int i

int m=load()

printf("\n 原来的职工信息:\n")

display()/* 调用浏览函数*/

printf("\n")

fp=fopen("emploee_list","a")

printf("请输入想增加的职工数:\n")

scanf("%d",&n)

for (i=mi<(m+n)i++)

{

printf("\n 请输入新增加职工的信息:\n")

printf("请输入职工号: ")

srand((int)time(0))

em[i].num=rand()%10000+20000000

if(em[i].num!=em[i-1].num)

printf("%8d ",em[i].num)

printf("\n")

printf("请输入姓名: ")

scanf("%s",em[i].name)

getchar()

printf("请输入性别(f--女 m--男): ")

scanf("%c",&em[i].sex)

printf("请输入年龄: ")

scanf("%d",&em[i].age)

printf("请输入学历: ")

scanf("%s",em[i].xueli)

printf("请输入工资: ")

scanf("%d",&em[i].wage)

printf("请输入住址: ")

scanf("%s",em[i].addr)

printf("请输入电话: ")

scanf("%d",&em[i].tel)

printf("\n")

count=count+1

printf("已增加的人数:\n")

printf("%d\n",count)

}

printf("\n添加完毕!\n")

m=m+count

printf("\n浏览增加后的所有职工信息:\n")

printf("\n")

save(m)

display()

fclose(fp)

}

void search()/*查询函数*/

{

int t,flag

do

{

printf("\n按职工号查询请按1 按学历查询请按2 按电话号码查询请按3,进入主函数按4\n")

scanf("%d",&t)

if(t>=1&&t<=4)

{

flag=1

break

}

else

{

flag=0

printf("您输入有误,请重新选择!")

}

}

while(flag==0)

while(flag==1)

{

switch(t)

{

case 1:printf("按职工号查询\n")search_num()break

case 2:printf("按学历查询\n")search_xueli()break

case 3:printf("按电话号码查询\n")search_tel()break

case 4:main()break

default:break

}

}

}

void search_num()

{

int num

int i,t

int m=load()

printf("请输入要查找的职工号(20001111---20009999):\n")

scanf("%d",&num)

for(i=0i<mi++)

if(num==em[i].num)

{

printf("\n已找到此人,其记录为:\n")

printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n")

printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel)

break

}

if(i==m)

printf("\n对不起,查无此人\n")

printf("\n")

printf("返回查询函数请按1,继续查询职工号请按2\n")

scanf("%d",&t)

switch(t)

{

case 1:search()break

case 2: break

default:break

}

}

void search_xueli()

{

char xueli[30]

int i,t

int m=load()

printf("请输入要查找的学历:\n")

scanf("%s",xueli)

for(i=0i<mi++)

if(strcmp(em[i].xueli,xueli)==0)

{

printf("\n已找到,其记录为:\n")

printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n")

printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel)

}

if(i==m)

printf("\n对不起,查无此人\n")

printf("\n")

printf("返回查询函数请按1,继续查询学历请按2\n")

scanf("%d",&t)

switch(t)

{

case 1:search()break

case 2:break

default :break

}

}

void search_tel()

{

long int tel

int i, t

int m=load()

printf("请输入要查找的电话号码:\n")

scanf("%ld",&tel)

for(i=0i<mi++)

if(tel==em[i].tel)

{

printf("\n已找到此人,其记录为:\n")

printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n")

printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel)

break

}

if(i==m)

printf("\n对不起,查无此人\n")

printf("\n")

printf("返回查询函数请按1,继续查询电话号码请按2\n")

scanf("%d",&t)

switch(t)

{

case 1:search()break

case 2:break

default :break

}

}

void modify() /*修改函数*/

{

int num

char name[10]

char sex

int age

char xueli[30]

int wage

char addr[30]

long int tel

int b,c,i,n,t,flag

int m=load()/*导入文件内的信息*/

printf("\n 原来的职工信息:\n")

display()/* 调用浏览函数*/

printf("\n")

printf("请输入要修改的职工的姓名:\n")

scanf("%s",name)

for(flag=1,i=0flag&&i<mi++)

{

if(strcmp(em[i].name,name)==0)

{

printf("\n已找到此人,原始记录为:\n")

printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n")

printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel)

printf("\n确实要修改此人信息请按1 不修改请按0\n")

scanf("%d",&n)

if(n==1)

{

printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.性别 4.年龄 5.学历 6.工资 7.住址 8.电话\n")

printf("请输入你想修改的那一项序号:\n")

scanf("%d",&c)

if(c>8||c<1)

printf("\n选择错误,请重新选择!\n")

}

flag=0

}

}

if(flag==1)

printf("\n对不起,查无此人!\n")

do

{

switch(c) /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/

{

case 1:printf("职工号改为: ")

scanf("%d",&num)

em[i-1].num=num

break

case 2:printf("姓名改为: ")

scanf("%s",name)

strcpy(em[i-1].name,name)

break

case 3:printf("性别改为: ")

getchar()

scanf("%c",&sex)

em[i-1].sex=sex

break

case 4:printf("年龄改为: ")

scanf("%d",&age)

em[i-1].age=age

break

case 5:printf("学历改为: ")

scanf("%s",xueli)

strcpy(em[i-1].xueli,xueli)

break

case 6:printf("工资改为: ")

scanf("%d",wage)

break

case 7:printf("住址改为: ")

scanf("%s",addr)

strcpy(em[i-1].addr,addr)

break

case 8:printf("电话改为: ")

scanf("%ld",&tel)

em[i-1].tel=tel

break

}

printf("\n")

printf("\n是否确定所修改的信息?\n 是 请按1 不,重新修改 请按2: \n")

scanf("%d",&b)

}

while(b==2)

printf("\n浏览修改后的所有职工信息:\n")

printf("\n")

save(m)

display()

printf("\n继续修改请按1,不再修改请按0\n")

scanf("%d",&t)

switch(t)

{

case 1:modify()break

case 0:break

default :break

}

}

#include<iostream.h>

#include<stdlib.h>

#include<string.h>

#include<iomanip.h>

using namespace std

#define OK 1

#define ERROR 0

typedef struct LNode{

char num[20]

char name[20]

double basic

double reward

double total

struct LNode *next

}LNode,*LinkListint initlist(LinkList &L)

{ L=(LinkList)malloc(sizeof(LNode))

L->next=NULL

return OK

} int DisplayInfo(LinkList L)

{

LinkList p=L->next

if(!p)

{

cout<<"当前无记录!"<<endl

return ERROR

}

cout<<"编号"<<setw(12)<<"姓名"<<setw(12)<<"基本工资"<<setw(9)<<"奖金"<<setw(12)<<"工资总额"<<endlwhile(p!=NULL)

{

cout<<p->num<<setw(9)<<p->name<<setw(8)<<p->basic<<setw(12)<<p->reward<<setw(12)<<p->total<<endl

p=p->next

}

cout<<'\n'<<'\n'

return OK

} int InputInfo(LinkList &L)

{

LinkList pp=(LinkList)malloc(sizeof(LNode))

cout<<"请输入职工工资信息:(格式如:2001001 james 1980 600 )"<<endl

cin>>p->num

cin>>p->name

cin>>p->basic

cin>>p->reward

p->total=p->basic+p->reward

p->next=L->next

L->next=preturn OK

}int DeleteByCode(LinkList &L,char key[])

{

LinkList p=L,q

while(p->next!=NULL)

{

if(strcmp(p->next->num,key)==0)

{

q=p->next

p->next=q->next

free(q)

return OK

}

p=p->next

}

return ERROR} int Search(LinkList L,int tag)

{

LinkList p=L->next

if(tag==1)

{

char num[20]

cout<<"请输入要查找职工编号号:"<<endl

cin>>num

while(p)

{

if(strcmp(p->num,num)==0)

{

cout<<"编号"<<setw(12)<<"姓名"<<setw(12)<<"基本工资"<<setw(9)<<"奖金"<<setw(12)<<"工资总额"<<endl

cout<<p->num<<setw(9)<<p->name<<setw(8)<<p->basic<<setw(12)<<p->reward<<setw(12)<<p->total<<endl

cout<<'\n'

return OK

}

p=p->next

}

}

else if(tag==2)

{

char name[20]

cout<<"请输入要查找的姓名:"<<endl

cin>>name

while(p)

{

if(strcmp(p->name,name)==0)

{

cout<<"编号"<<setw(12)<<"姓名"<<setw(12)<<"基本工资"<<setw(9)<<"奖金"<<setw(12)<<"工资总额"<<endl

cout<<p->num<<setw(9)<<p->name<<setw(8)<<p->basic<<setw(12)<<p->reward<<setw(12)<<p->total<<endl

cout<<'\n'

return OK

}

p=p->next

}

}

else

cout<<"输入错误!"<<endl

return ERROR}

int Sort(LinkList &L)

{

LinkList p

LinkList q,min,w=L

for(p=L->nextp->nextp=p->next)

{

min=p

for(q=p->nextqq=q->next)if(min->total>q->total)

min=q if(min!=p)

{strcpy(w->num,p->num)

strcpy(w->name,p->name)

w->basic=p->basic

w->reward=p->reward

w->total=p->total

strcpy(p->num,min->num)

strcpy(p->name,min->name)

p->basic=min->basic

p->reward=min->reward

p->total=min->total

strcpy(min->num,w->num)

strcpy(min->name,w->name)

min->basic=w->basic

min->reward=w->reward

min->total=w->total }

}

return OK

}

int change(LinkList &L)

{

LinkList p=L->next

char q[20]

cout<<"请输入要修改的职工编号号:"<<endl

cin>>q

while(p)

{

if(strcmp(p->num,q)==0)

{

cout<<"编号"<<setw(12)<<"姓名"<<setw(12)<<"基本工资"<<setw(9)<<"奖金"<<setw(12)<<"工资总额"<<endl

cout<<p->num<<setw(9)<<p->name<<setw(8)<<p->basic<<setw(12)<<p->reward<<setw(12)<<p->total<<endl

cout<<"请重新输入该职工的工资信息:"<<endl

cin>>p->basic

cin>>p->reward

cout<<'\n'

return OK

}

p=p->next

}

}

int Menu(LinkList &S)

{

int sign=1

while(sign)

{

int i

cout<<"请选择要进行的操作:1:插入 2:删除 3:输出 4:查找 5:排序 6:修改 0:退出"<<endl

cin>>i

if(i==1)

{ if(InputInfo(S))

cout<<"操作成功!"<<endl

cout<<'\n'

}

else if(i==2)

{

char num[20]

cout<<"请输入要删除的职工编号:"<<endl

cin>>num if(DeleteByCode(S,num))

cout<<"操作成功!"<<endl else

{

cout<<"此编号不存在!"<<endl

cout<<'\n'

}

}

else if(i==3)

DisplayInfo(S)

else if(i==4)

{

int tag

cout<<"1:按编号查找 2:按姓名查找 "<<endl

cin>>tag

if(!Search(S,tag))

cout<<"未找到!"<<endl

cout<<'\n' }

else if(i==5)

{

if(Sort(S))

cout<<"操作成功!"<<endl

cout<<'\n'

}

else if(i==6)

{

if(change(S))

cout<<"修改成功!"<<endl

} else if(i==0)

sign=0

else

cout<<"输入有误,请重新输入!"<<endl

cout<<'\n'

}

return OK

}

int main()

{

LinkList S

initlist(S)

Menu(S)

return OK} 已经调试无bug 有问题的话联系我。

#include<stdio.h>

#include<string.h>

int main()

{

void TestOnLineTeacherManage()//声明教师信息管理函数

void TestOnLineSelfManage()//声明个人管理函数

int n

printf(“0教师管理,1个人管理”)

scanf(“%d”,&n)

If (n==0)

TestOnLineTeacherManage()

else

TestOnLineSelfManage()//选择教师管理或者个人信息管理

Return 0

}

Void TestOnLineTeacherManage() //教师信息管理函数

{

Struct TestOnLineTeacher

{

Int Tnum

Char Tname[20]

Char Tsex

Char Ttel[20]

}Teacher[100] //定义一个结构体

void add() //定义教师信息添加

void del() //定义教师信息删除

Void modify() //定义教师信息修改

int a

Printf(“1添加2删除3修改”)

Scanf (“%d”,&a)

Switch(a)

{

Case1:add()break

Case2:del()break

Case3:modify()break

Default:break

}//选择功能

}

Void add() //教师信息添加函数,若添加Teacher[i]

{

printf(“输入工号”)

Scanf(“%d”,&Teacher[i].Tnum)

printf(“输入姓名”)

Scanf(“%s”,&Teacher[i].Tname)

printf(“输入性别f女m男”)

Scanf(“%c”,&Teacher[i].Tsex)

printf(“输入电话”)

Scanf(“%s”,&Teacher[i].Ttel)

}

Void del() //教师信息删除函数,若删除Teacher[i]

{

Teacher[i-1]=Teacher[i+1]

Free(Teacher[i])

}

Void modify() //教师信息修改函数,若修改Teacher[i]

{

Int t

Int num

Char name[20]

Char sex

Char tel[20]

Printf(“修改选项1工号2姓名3性别4电话”)

Scanf(“%d”,&t)

Switch(t)

{

Case1:scanf(“%d”,&num)Teacher[i].Tnum=numbreak

Case2:scanf(“%s”,&name)strcpy(Teacher[i].Tname,name)break

Case3:scanf(“%c”,&sex)Teacher[i].Tsex=sexbreak

Case4:scanf(“%s”,&tel)strcpy(Teacher[i].Ttel,tel)break

Default:break

}//选择修改项并修改

}

Void TestOnLineSelfManage() //个人信息管理

{

Struct TestOnLineManage

{

Int Mnum

Char Mname[20]

Char Msex

Char Mtel[20]

}Manage[1] //定义一个结构体

Int b

Int num

Char name[20]

Char sex

Char tel[20]

Printf(“修改选项1工号2姓名3性别4电话”)

Scanf(“%d”,&b)

Switch(t)

{

Case1:scanf(“%d”,&num)Manage[1].Mnum=numbreak

Case2:scanf(“%s”,&name)strcpy(Manage[1].Mname,name)break

Case3:scanf(“%c”,&sex)Manage[1].Msex=sexbreak

Case4:scanf(“%s”,&tel)strcpy(Manage[1].Mtel,tel)break

Default:break

}//选择修改项并修改

}