C语言职工管理系统课程设计

头文件
#include<stdio.h>
#include<stdlib.h>//system,system
#include<string.h>//strcmp,strcpy
创建职工结构
typedef struct worker {
char gonghao[20];//职工号
char name[10];//职工名
char xingbie[10];//性别
char chusheng[20];//出生年月
char xueli[10];//学历
char zhiwu[10];//职务
char gongzi[20];//工资
char zhuzhi[20];//住址
char dianhua[20];//电话
struct worker next;
} wk;
wk head;
开始和初始函数
void chushi() {
system(“pause”);
system(“cls”);
while (1) {
printf("\t\t
************************************************\n");
printf("\t\t职工管理系统\n");
printf("\t\t**************************************************\n");
printf("\t\t 1、新增职工信息并保存\n");
printf("\t\t 2、显示所有职工信息\n");
printf("\t\t 3、查询职工信息\n");
printf("\t\t 4、修改职工信息并保存\n");
printf("\t\t 5、删除职工信息\n");
printf("\t\t 6、保存职工信息\n");
printf("\t\t 7、读写职工信息\n");
printf("\t\t 0、退出系统\n");
printf("\t\t请输入你的选择\n");
int a, b;
b = scanf("%d", &a);
while (b != 1) {
while ( (getchar() ) != ‘\n’);
printf(“警告:只能输入数字!\n”);
b = scanf("%d", &a);
}
system(“cls”);
switch (a) {
case 1:
zeng(head);
break;
case 2:
xianshi(head);
break;
case 3:
chaxun(head);
break;
case 4:
gai(head);
break;
case 5:
shanchu(head);
break;
case 6:
baocun(head);
break;
case 7:
duxie();
break;
case 0:
tui = 1;
printf(“感谢你使用学生通信录管理系统,请关掉程序!!!\n”);
break;
}
if (tui == 1) {
break;
}
}
}
void kaishi() {
head = (wk*)malloc(sizeof(wk));
head->next = NULL;
char zhanghao1[20] = “a”, zhanghao2[20];
char yin[20] = “a”;
char mima1[20] = “a”, mima2 [20];
int j = 0;
for (int i = 0; i != 1;) {
printf("\t\t**************************************************\n");
printf("\t\t职工管理系统\n");
printf("\t\t**************************************************\n");
printf("\t\t请选择\n\t\t1.登录\n\t\t2.注册\n\t\t");
char x[20];
scanf("%s", x);
if (strcmp(x, “1”) == 0 && strcmp(zhanghao1, yin) == 0 && strcmp(mima1, yin) == 0) {
printf("\t\t请先注册账号\n");
system(“pause”);
system(“cls”);
continue;
} else if (strcmp(x, “1”) == 0 && strcmp(zhanghao1, yin) != 0 && strcmp(mima1, yin) != 0) {
printf("\t\t请输入学生通信录管理系统的账号:\n");
printf("\t\t");
printf(“账号:”);
scanf("%s", zhanghao2);
printf("\t\t请输入学生通信录管理系统的密码:\n");
printf("\t\t");
printf(“密码:”);
scanf("%s", mima2);
for ( ; ; ) {
if (strcmp(zhanghao1, zhanghao2) != 0 || strcmp(mima1, mima2) != 0) {
printf("\t\t账号密码错误\n\t\t重新输入管理员账号:");
scanf("%s", zhanghao2);
printf("\t\t密码:");
scanf("%s", mima2);
j++;
if (j == 3) {
break;
}
} else {
printf(“成功登陆\n”);
i = 1;
break;
}
}
} else if (strcmp(x, “2”) == 0) {
printf("\t\t请输入创建的账号");
scanf("%s", zhanghao1);
printf("\t\t请输入创建的密码");
scanf("%s", mima1);
system(“pause”);
system(“cls”);
continue;
} else {
printf("\t\t请输入1或2\n");
system(“pause”);
system(“cls”);
continue;
}
if (j == 3) {
printf("\t\t输入错误过多");
break;
}
chushi();
if (tui == 1) {
break;
}
system(“pause”);
system(“cls”);
}
}
各个功能的函数

1
增加职工

  1. void zeng(wk *head) {
    while (1) {
    wk *p, *tail, *q, q2;
    tail = head;
    while (tail->next != NULL) { //尾插法
    tail = tail -> next;
    }
    q = head->next;
    int a = 0;
    char gonghao1[20];
    printf(“请输入职工号\n”);
    scanf("%s", gonghao1);
    while (q != NULL) {
    if (strcmp(q->gonghao, gonghao1) == 0) {
    a = 1;
    printf(“职工号重复无法输入\n”);
    break;
    } else {
    ;
    q = q->next;
    }
    }
    if (a == 1) {
    continue;
    } else {
    printf(“没有重复符合要求\n”);
    }
    p = (wk
    )malloc(sizeof(wk));
    strcpy(p->gonghao, gonghao1);
    printf(“输入姓名\n”);
    scanf("%s", p->name);
    while (1) {
    char xingbie2[20];
    printf(“输入性别\n”);
    scanf("%s", xingbie2);
    if (strcmp(xingbie2, “男”) == 0 || strcmp(xingbie2, “女”) == 0) {
    strcpy(p->xingbie, xingbie2);
    break;
    } else {
    printf(“请输入男或女”);
    continue;
    }
    }
    printf(“输入出生年月\n”);
    scanf("%s", p->chusheng);
    printf(“学历\n”);
    scanf("%s", p->xueli);
    printf(“职务\n”);
    scanf("%s", p->zhiwu);
    printf(“工资\n”);
    scanf("%s", p->gongzi);
    printf(“住址\n”);
    scanf("%s", p->zhuzhi);
    int x = 0;
    q2 = head->next;
    while (x == 0) {
    char haoma[20];
    a = 0;
    printf(“请输入电话号\n”);
    scanf("%s", haoma);
    while (q2 != NULL) {
    if (strcmp(q2->dianhua, haoma) == 0) {
    a = 1;
    printf(“电话号重复无法输入\n”);
    break;
    } else {
    q2 = q2->next;
    }
    }
    if (a == 0) {
    printf(“没有重复符合要求\n”);
    x = 1;
    } else if (a == 1) {
    continue;
    }
    strcpy(p->dianhua, haoma);
    }
    p->next = NULL;
    tail->next = p;
    int i;
    printf(“是否继续添加\n添加输入1结束输入0\n”);
    while (1) {
    scanf("%d", &i);
    if (i == 1 || i == 0) {
    break;
    } else {
    printf(“请输入1或0\n”);
    continue;
    }
    }
    if (i == 0) {
    system(“pause”);
    system(“cls”);
    break;
    }
    }
    }

2
显示所有职工信息
void xianshi(wk *head) {
wk *p = head->next;
while (p != NULL) {
printf(“职工号: %s\n”, p->gonghao);
printf(“职工名: %s\n”, p->name);
printf(“性别: %s\n”, p->xingbie);
printf(“出生年月: %s\n”, p->chusheng);
printf(“学历: %s\n”, p->xueli);
printf(“职务: %s\n”, p->zhiwu);
printf(“工资: %s\n”, p->gongzi);
printf(“住址: %s\n”, p->zhuzhi);
printf(“电话: %s\n\n”, p->dianhua);
p = p->next;
}
system(“pause”);
system(“cls”);
}

3
查询职工信息
void chaxun(wk *head) {
wk *q = NULL;
q = head->next;
int a = 0, b = 0;

printf("\t\t**************************\n\t\t*    欢迎使用查询系统    *\n");
printf("\t\t*    请选择查询方式:    *\n");
printf("\t\t*      1.职工号查询      *\n\t\t*     2.电话号码查询     *\n");
printf("\t\t*       3.性别查询       *\n\t\t**************************\n\t\t");
scanf("%d", &a);
if (a == 1) {
	char hao[20];
	printf("输入你要查找职工的职工号\n");
	scanf("%s", hao);
	while (q != NULL) {
		if (strcmp(q->gonghao, hao) == 0) {
			printf("职工号: %s\n", q->gonghao);
			printf("职工名: %s\n", q->name);
			printf("性别: %s\n", q->xingbie);
			printf("出生年月: %s\n", q->chusheng);
			printf("学历: %s\n", q->xueli);
			printf("职务: %s\n", q->zhiwu);
			printf("工资: %s\n", q->gongzi);
			printf("住址: %s\n", q->zhuzhi);
			printf("电话: %s\n\n", q->dianhua);
			b = 1;
		}
		q = q->next;
	}
} else if (a == 2) {
	char haoma[20];
	printf("输入你查找职工的电话号码\n");
	scanf("%s", haoma);
	while (q != NULL) {
		if (strcmp(q->dianhua, haoma) == 0) {
			printf("职工号: %s\n", q->gonghao);
			printf("职工名: %s\n", q->name);
			printf("性别: %s\n", q->xingbie);
			printf("出生年月: %s\n", q->chusheng);
			printf("学历: %s\n", q->xueli);
			printf("职务: %s\n", q->zhiwu);
			printf("工资: %s\n", q->gongzi);
			printf("住址: %s\n", q->zhuzhi);
			printf("电话: %s\n\n", q->dianhua);
			b = 1;
		}
		q = q->next;
	}
} else if (a == 3) {
	char xingbie1[20];
	printf("输入你查找职工的性别\n");
	scanf("%s", xingbie1);
	while (q != NULL) {
		if (strcmp(q->xingbie, xingbie1) == 0) {
			printf("职工号: %s\n", q->gonghao);
			printf("职工名: %s\n", q->name);
			printf("性别: %s\n", q->xingbie);
			printf("出生年月: %s\n", q->chusheng);
			printf("学历: %s\n", q->xueli);
			printf("职务: %s\n", q->zhiwu);
			printf("工资: %s\n", q->gongzi);
			printf("住址: %s\n", q->zhuzhi);
			printf("电话: %s\n\n", q->dianhua);
			b = 1;
		}
		q = q->next;
	}
}
if (b == 1) {
	printf("查询成功\n");
} else {
	printf("查无此人\n");
}
system("pause");
system("cls");
getchar();

}

4
修改职工信息
void gai(wk head) {
wk q = NULL;
wk q2, q1;
q = head->next;
while (1) {
int a = 0;
char b[20];
printf("\t\t
**********************\n\t\t* 欢迎使用修改系统 \n");
printf("\t\t
请选择修改方式: \n\t\t 1.输入职工号修改 \n");
printf("\t\t
2.输入姓名修改 \n\t\t*************************\n\t\t");
scanf("%s", b);
if (strcmp(b, “1”) == 0) {
char gohao1[20];
printf(“请输入职工号\n”);
scanf("%s", gohao1);
while (q != NULL) {
if (strcmp(q->gonghao, gohao1) == 0) {
int x = 0;
q1 = head->next;
while (x == 0) {
char gonghao2[20];
a = 0;
printf(“请重新输入职工号\n”);
scanf("%s", gonghao2);
while (q1 != NULL) {
if (strcmp(q1->gonghao, gonghao2) == 0) {
a = 1;
printf(“职工号号重复无法输入\n”);
break;
} else {
q1 = q1->next;
}
}
if (a == 0) {
printf(“没有重复符合要求\n”);
x = 1;
} else if (a == 1) {
continue;
}
strcpy(q->gonghao, gonghao2);
}
printf(“输入姓名\n”);
scanf("%s", q->name);
while (1) {
char xingbie2[20];
printf(“输入性别\n”);
scanf("%s", xingbie2);
if (strcmp(xingbie2, “男”) == 0 || strcmp(xingbie2, “女”) == 0) {
strcpy(q->xingbie, xingbie2);
break;
} else {
printf(“请输入男或女”);
continue;
}
}
printf(“输入出生年月\n”);
scanf("%s", q->chusheng);
printf(“学历\n”);
scanf("%s", q->xueli);
printf(“职务\n”);
scanf("%s", q->zhiwu);
printf(“工资\n”);
scanf("%s", q->gongzi);
printf(“住址\n”);
scanf("%s", q->zhuzhi);
q2 = head->next;
x = 0;
while (x == 0) {
char haoma[20];
a = 0;
printf(“请输入电话号\n”);
scanf("%s", haoma);
while (q2 != NULL) {
if (strcmp(q2->dianhua, haoma) == 0) {
a = 1;
printf(“电话号重复无法输入\n”);
break;
} else {
q2 = q2->next;
}
}
if (a == 0) {
printf(“没有重复符合要求\n”);
x = 1;
} else if (a == 1) {
continue;
}
strcpy(q->dianhua, haoma);
}
a = 1;
break;
} else {
break;
}
}
if (a == 1) {
printf(“修改成功\n”);
} else {
printf(“对不起,没有这个人。\n”);
}
break;
} else if (strcmp(b, “2”) == 0) {
char name1[20];
printf(“请输入姓名\n”);
scanf("%s", name1);
while (q != NULL) {
if (strcmp(q->name, name1) == 0) {
int x = 0;
q1 = head->next;
while (x == 0) {
char gonghao2[20];
a = 0;
printf(“请重新输入职工号\n”);
scanf("%s", gonghao2);
while (q1 != NULL) {
if (strcmp(q1->gonghao, gonghao2) == 0) {
a = 1;
printf(“职工号号重复无法输入\n”);
break;
} else {
q1 = q1->next;
}
}
if (a == 0) {
printf(“没有重复符合要求\n”);
x = 1;
} else if (a == 1) {
continue;
}
strcpy(q->gonghao, gonghao2);
}
printf(“输入姓名\n”);
scanf("%s", q->name);
while (1) {
char xingbie2[20];
printf(“输入性别\n”);
scanf("%s", xingbie2);
if (strcmp(xingbie2, “男”) == 0 || strcmp(xingbie2, “女”)== 0) {
strcpy(q->xingbie, xingbie2);
break;
} else {
printf(“请输入男或女”);
continue;
}
}
printf(“输入出生年月\n”);
scanf("%s", q->chusheng);
printf(“学历\n”);
scanf("%s", q->xueli);
printf(“职务\n”);
scanf("%s", q->zhiwu);
printf(“工资\n”);
scanf("%s", q->gongzi);
printf(“住址\n”);
scanf("%s", q->zhuzhi);
q2 = head->next;
x = 0;
while (x == 0) {
char haoma[20];
a = 0;
printf(“请输入电话号\n”);
scanf("%s", haoma);
while (q2 != NULL) {
if (strcmp(q2->dianhua, haoma) == 0) {
a = 1;
printf(“电话号重复无法输入\n”);
break;
} else {
q2 = q2->next;
}
}
if (a == 0) {
printf(“没有重复符合要求\n”);
x = 1;
} else if (a == 1) {
continue;
}
strcpy(q->dianhua, haoma);
}
a = 1;
break;
} else {
break;
}
if (a == 1) {
printf(“修改成功\n”);
} else {
printf(“对不起,没有这个人。\n”);
}
break;
}
if (a == 1) {
printf(“修改成功\n”);
} else {
printf(“对不起,没有这个人。\n”);
}
break;
} else {
printf(“请输入1或2”);
continue;
}

}
system("pause");
system("cls");

}

5
删除职工信息
void shanchu(wk *head) {
wk *p1 = NULL, *p2 = NULL;
char gonghao1[20];
printf(“请输入要删除的职工工号:\n”);
scanf("%s", gonghao1);
p1 = head;
p2 = head->next;
int a = 0;
while (p2 != NULL) {
if (strcmp(p2->gonghao, gonghao1) == 0) {
p1->next = p2->next;
free(p2);
a = 1;
break;
}
p1 = p2;
p2 = p2->next;
}
if (a == 1) {
printf(“删除成功\n”);
} else {
printf(“没有找到这个职工删除失败\n”);
}
system(“pause”);
system(“cls”);
}

6
保存职工信息
void baocun(wk*head) {
wk p;
p = head->next;
FILE
fp = fopen(“D:\职工信息.txt”, “w+”);
if (fp == NULL) {
printf(“打开失败”);
exit(1);
}
while (p != NULL) {
fprintf(fp, “%s\n”, p->gonghao);
fprintf(fp, “%s\n”, p->name);
fprintf(fp, “%s\n”, p->xingbie);
fprintf(fp, “%s\n”, p->chusheng);
fprintf(fp, “%s\n”, p->xueli);
fprintf(fp, “%s\n”, p->zhiwu);
fprintf(fp, “%s\n”, p->gongzi);
fprintf(fp, “%s\n”, p->zhuzhi);
fprintf(fp, “%s\n”, p->dianhua);
p = p->next;
}
printf(“保存成功!\n”);
system(“pause”);
system(“cls”);
fclose(fp);
getchar();
}

7
读写职工信息
void duxie(){
char a[1000];
FILE *fp=fopen(“D:\职工信息.txt”, “r”);
while(fscanf(fp,"%s",a)!=EOF){
printf("%s\n",a);
}
fclose(fp);
system(“pause”);
system(“cls”);
}

主函数

int main() {
kaishi();
return 0;
}


版权声明:本文为m0_63129179原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。