简易职工管理系统

简易职工管理系统

  • 问题描述
  • 设计思路
  • 代码部分
  • 总结
  • 样例

问题描述

1.问题描述
  对单位的职工进行管理,包括插入、删除、查找、排序等功能。
2.要求
  职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。
(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。
(2)删除一名职工:从职工管理文件中删除一名职工对象。
(3)查询:从职工管理文件中查询符合某些条件的职工。
(4)修改:检索某个职工对象,对其某些属性进行修改。
(5)排序:按某种需要对职工对象文件进行排序。
3.实现提示
  职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。
(1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。
(2)对职工对象中的"姓名"按字典顺序进行排序。
(3)对排序后的职工对象进行增、删、查询、修改、排序等操作。
4.选做内容
将职工对象按散列法存储,并设计解决冲突的方法。在此基础上实现增、删、查询、修改、排序等操作。

设计思路

1.开头采用cout在终端输出“HELLO”的图像,以及三个“灯塔”,利用getchar()和system(“cls”)来实现“按任意键进入”的效果。
2.系统主体采用switch … case,来实现输入不同数字进入不同子系统的效果。子系统共五块。
3.职工信息采用静态顺序表存储,运用了冒泡排序,顺序查找等算法。
4.各部分功能的实现基本上由各函数来实现,使main()函数看上去较为简洁。
5.主要函数有:
void print_person(int); //输出员工信息
void add_person(); //添加员工
void del_person(int); //删除员工
Void sort_person(); //排序
void copy_person(int, int); //转移员工信息
void query_name(char*); //以名字查询
void query_address(char*); //以住址查询
void query_tle(char*); //以电话查询
void query_qua(char*); //以学历查询
void query_duty(char*); //以职务查询
void change_person_info(char*); //改变职工信息
void screen(); //输出系统界面
void hello_screen(); //输出等待界面

代码部分

#include
#include
#include
#include 

using namespace std;

const int inf  = 0x3f3f3f3f;
const int MAXN = 1000 + 1;

int n = 0;//当前职工总数
int m = inf;    //你想进行的操作

void print_person(int);         //输出员工信息
void add_person();              //添加员工
void del_person(int);           //删除员工
void sort_person();             //排序
void copy_person(int, int);     //转移员工信息
void query_name(char*);         //以名字查询
void query_address(char*);      //以住址查询
void query_tle(char*);          //以电话查询
void query_qua(char*);          //以学历查询
void query_duty(char*);         //以职务查询
void change_person_info(char*); //改变职工信息
void screen();                  //输出系统界面
void hello_screen();            //输出等待界面

typedef struct node {
	char name[10];    //xx
	char sex[6];      //M, F;
	char bir[16];     //xxxx/xx/xx
	char wk_date[16]; //xxxx/xx/xx
	char qua[10];   //xxxxxx
	char duty[10];  //xxxxx
	char add[50];   //xxxxxx
	char tle[20]; //xxxxxxxxxxx
}info_for_person;

info_for_person person[MAXN];

void print_person(int k) {
	cout << "---------------------------------------------------------" << endl;
	cout << "姓名:    " << person[k].name    << endl;
	cout << "性别:    " << person[k].sex     << endl;
	cout << "出生年月:" << person[k].bir     << endl;
	cout << "工作年月:" << person[k].wk_date << endl;
	cout << "学历:    " << person[k].qua     << endl;
	cout << "职务:    " << person[k].duty    << endl;
	cout << "住址:    " << person[k].add     << endl;
	cout << "电话:    " << person[k].tle     << endl;
	cout << "---------------------------------------------------------" << endl;
}

void copy_person(int a, int b) {//前者存储
	strcpy_s(person[a].name,    person[b].name);
	strcpy_s(person[a].sex ,    person[b].sex);
	strcpy_s(person[a].bir,     person[b].bir);
	strcpy_s(person[a].wk_date, person[b].wk_date);
	strcpy_s(person[a].qua,     person[b].qua);
	strcpy_s(person[a].duty,    person[b].duty);
	strcpy_s(person[a].add,     person[b].add);
	strcpy_s(person[a].tle,     person[b].tle);
}

void add_person() {
	cout << "---------------------------------------------------------" << endl;
	cout << "请输入你想加入的人数:";
	int num;
	cin >> num;
	cout << "请按照:姓名、性别、出生年月、工作年月、学历、职务、住址、电话的顺序输入信息:" << endl;
	while (num--) {
		cin >> person[n].name;    fflush(stdin);
		cin >> person[n].sex;     fflush(stdin);
		cin >> person[n].bir;     fflush(stdin);
		cin >> person[n].wk_date; fflush(stdin);
		cin >> person[n].qua;     fflush(stdin);
		cin >> person[n].duty;    fflush(stdin);
		cin >> person[n].add;     fflush(stdin);
		cin >> person[n].tle;     fflush(stdin);
		n++;
	}
	cout << "添加成功!" << endl;
	cout << "---------------------------------------------------------" << endl;
}

void del_person(char NAME[]) {
	cout << "---------------------------------------------------------" << endl;
	int k = inf;
	for (int i = 0; i < n; i++) {
		if (strcmp(person[i].name, NAME) == 0) {//找到了就做标记k
			k = i;
			break;
		}
	}//k = inf意味着没找到这个名字
	if (k != inf) {
		for (int i = k; i < n - 1; i++)
			copy_person(i, i + 1);//前移
		cout << "删除成功!" << endl;
		n--;
	}
	else cout << "no such person!" << endl;
	cout << "---------------------------------------------------------" << endl;
}

void query_name(char* NAME){
	cout << "---------------------------------------------------------" << endl;
	int k = inf;
	for (int i = 0; i < n; i++) {
		if (strcmp(person[i].name, NAME) == 0) {//找到了就做标记k
			k = i;
			print_person(i);
		}
	}//k = inf意味着没找到这个名字
	if (k == inf) cout << "no such person!" << endl;
	getchar();
	cout << "---------------------------------------------------------" << endl;
}

void query_address(char* ADDRESS) {
	cout << "---------------------------------------------------------" << endl;
	int k = inf;
	for (int i = 0; i < n; i++) {
		if (strcmp(person[i].add, ADDRESS) == 0) {//找到了就做标记k
			k = i;
			print_person(i);
		}
	}//k = inf意味着没找到这个名字
	if (k == inf) cout << "no such person!" << endl;
	getchar();
	cout << "---------------------------------------------------------" << endl;
}

void query_tle(char* TLE) {
	cout << "---------------------------------------------------------" << endl;
	int k = inf;
	for (int i = 0; i < n; i++) {
		if (strcmp(person[i].tle, TLE) == 0) {//找到了就做标记k
			k = i;
			print_person(i);
		}
	}//k = inf意味着没找到这个名字
	if (k == inf) cout << "no such person!" << endl;
	getchar();
	cout << "---------------------------------------------------------" << endl;

}

void query_qua(char* QUA) {
	cout << "---------------------------------------------------------" << endl;
	int k = inf;
	for (int i = 0; i < n; i++) {
		if (strcmp(person[i].qua, QUA) == 0) {//找到了就做标记k
			k = i;
			print_person(i);
		}
	}//k = inf意味着没找到这个名字
	if (k == inf) cout << "no such person!" << endl;
	getchar();
	cout << "---------------------------------------------------------" << endl;

}

void query_duty(char* DUTY) {
	cout << "---------------------------------------------------------" << endl;
	int k = inf;
	for (int i = 0; i < n; i++) {
		if (strcmp(person[i].duty, DUTY) == 0) {//找到了就做标记k
			k = i;
			print_person(i);
		}
	}//k = inf意味着没找到这个名字
	if (k == inf) cout << "no such person!" << endl;
	getchar();
	cout << "---------------------------------------------------------" << endl;
}

void change_person_info(char NAME[]) {
	cout << "---------------------------------------------------------" << endl;
	int k = inf;
	for (int i = 0; i < n; i++) {
		if (strcmp(person[i].name, NAME) == 0) {//找到了就做标记k
			k = i;
			break;
		}
	}//k = inf意味着没找到这个名字
	if (k != inf) {
		cout << "请按照:姓名、性别、出生年月、工作年月、学历、职务、住址、电话的顺序输入此人修改后的信息:" << endl;
		cin >> person[k].name;
		cin >> person[k].sex;
		cin >> person[k].bir;
		cin >> person[k].wk_date;
		cin >> person[k].qua;
		cin >> person[k].duty;
		cin >> person[k].add;
		cin >> person[k].tle;
		cout << "信息修改成功!" << endl;
	}
	else cout << "no such person!" << endl;
	cout << "---------------------------------------------------------" << endl;

}

void sort_person() {
	for (int i = 0; i < n - 1; i++) {
		for (int j = i + 1; j < n; j++) {
			if (strcmp(person[i].name, person[j].name) > 0) {
				copy_person(MAXN, i);
				copy_person(i, j);
				copy_person(j, MAXN);
			}
		}
	}
	cout << "重新排序成功!" << endl;
}

void screen() {
	cout << "---------------------------------------------------------" << endl;
	cout << "1.查询职工                                              |" << endl;
	cout << "2.增加职工                                              |" << endl;
	cout << "3.删除职工                                              |" << endl;
	cout << "4.修改职工信息                                          |" << endl;
	cout << "5.排序                                                  |" << endl;
	cout << "0.退出程序                                              |" << endl;
	cout << "---------------------------------------------------------" << endl;
	cout << "请选择你需要的操作:";
	cin >> m;
	cout << "---------------------------------------------------------" << endl;
	
}

void hello_screen() {
	cout << "                                ******************************************************************  " << endl;
	cout << "                                _________________________________________________________________    " << endl;
	cout << "                              |                     _______                          _______      |  " << endl;
	cout << "                              |    ||        ||   ||         ||         ||         ||       ||    |  " << endl;
	cout << "                              |    ||        ||   ||         ||         ||         ||       ||    |  " << endl;
	cout << "                              |    ||        ||   ||         ||         ||         ||       ||    |  " << endl;
	cout << "                              |    ||--------||   ||_______  ||         ||         ||       ||    |  " << endl;
	cout << "                              |    ||        ||   ||         ||         ||         ||       ||    |  " << endl;
	cout << "                              |    ||        ||   ||         ||         ||         ||       ||    |  " << endl;
	cout << "                              |    ||        ||   ||_______  ||_______  ||_______  ||_______||    |  " << endl;
	cout << "                              |                                                                   |  " << endl;
	cout << "                              | ----------------------------------------------------------------- |  " << endl;
	cout << "                              |  *      ___           *      ___             *    ___   *         |  " << endl;
	cout << "                              |        |_*_|      *         |_*_|    *           |_*_|       *    |  " << endl;
	cout << "                              |      _{_____}_            _{_____}_            _{_____}_          |  " << endl;
	cout << "                              |      |||||||||    *       |||||||||  *         |||||||||    *     |  " << endl;
	cout << "                              | *   -----------          -----------          -----------         |  " << endl;
	cout << "                              |        |||||           *    |||||         *      |||||            |  " << endl;
	cout << "                              |      * |___|     *          |___|                |___|            |  " << endl;
	cout << "                               -------------------------------------------------------------------   " << endl;
	cout << "                              |                                                                   |  " << endl;
	cout << "                              | ------------------  按任意键进入职工管理系统~  ------------------ |  " << endl;
	cout << "                              |                                                                   |  " << endl;
	cout << "                                 ****************************************************************    " << endl;
	getchar();
	system("cls");
}

int main() {
	char NAME[50];
	hello_screen();
	do {
		screen();
		switch (m) {
			case 1:{
				int mm;
				char tmp[50];
				cout << "1.通过名字查询" << endl;
				cout << "2.通过电话查询" << endl;
				cout << "3.通过地址查询" << endl;
				cout << "4.通过职务查询" << endl;
				cout << "5.通过学历查询" << endl;
				cout << "请输入你希望的查询方式的序号:";
				cin >> mm;
				switch (mm) {
					case 1: {						
						cout << "---------------------------------------------------------" << endl;
						cin >> tmp;
						query_name(tmp);
						break;
					}
					case 2: {
						cout << "---------------------------------------------------------" << endl;
						cin >> tmp;
						query_tle(tmp);
						break;
					}
					case 3: {
						cout << "---------------------------------------------------------" << endl;
						cin >> tmp;
						query_address(tmp);
						break;
					}
					case 4: {
						cout << "---------------------------------------------------------" << endl;
						cin >> tmp;
						query_duty(tmp);
						break;
					}
					case 5: {
						cout << "---------------------------------------------------------" << endl;
						cin >> tmp;
						query_qua(tmp);
						break;
					}
					default:break;
				}
//				cout << "---------------------------------------------------------" << endl;
				cout << "敲击回车回到主界面" << endl;
				cout << "---------------------------------------------------------" << endl;
				getchar();
				getchar();
				break;
			}
			case 2:{
				add_person();
				cout << "---------------------------------------------------------" << endl;
				cout << "敲击回车回到主界面" << endl;
				cout << "---------------------------------------------------------" << endl;
				getchar();
				getchar();
				break;
			}
			case 3:{
				cout << "请输入你想删除的人名:";
				cin >> NAME; fflush(stdin);
				del_person(NAME);
				cout << "---------------------------------------------------------" << endl;
				cout << "敲击回车回到主界面" << endl;
				cout << "---------------------------------------------------------" << endl;
				getchar();
				getchar();
				break;
			}
			case 4:{
				cout << "请输入你想修改的人的名字:";
				cin >> NAME; fflush(stdin);
				change_person_info(NAME);
				cout << "---------------------------------------------------------" << endl;
				cout << "敲击回车回到主界面" << endl;
				cout << "---------------------------------------------------------" << endl;
				getchar();
				getchar();
				break;
			}
			case 5:{
				sort_person();
				for (int i = 0; i < n; i++) {
					print_person(i);
				}
				cout << "---------------------------------------------------------" << endl;
				cout << "敲击回车回到主界面" << endl;
				cout << "---------------------------------------------------------" << endl;
				getchar();
				getchar();
				break;
			}
			default:m = 0; break;
		}
		system("cls");
	} while (m != 0);

return 0;
}

总结

所用函数均是最基本的。

样例

添加员工:
张i 男 2000/01/01 2020/02/02 本科 经理 浙江杭州 13333324333
张b 男 2000/11/05 2005/01/02 高中 经理 浙江杭州 13316933333
张e 男 2000/06/01 2007/02/02 高中 经理 浙江台州 13333134823
张j 男 2000/09/10 2009/09/09 高中 经理 陕西西安 133307331393
张a 男 2000/03/04 2002/06/18 初中 经理 上海 13512375643
张c 男 2000/02/11 2012/03/15 小学 经理 浙江温州 13397648352
添加员工:
张h 男 2000/02/01 2014/05/02 研究生 经理 浙江温州 139310531208
张d 男 2000/08/03 2013/01/16 本科 经理 浙江杭州 15330182053
张g 男 2000/10/01 2001/08/03 博士 经理 浙江杭州 13330149723
张f 男 2000/01/01 2005/02/02 本科 经理 浙江杭州 13033164373
供修改信息:
张g 男 2000/10/10 2001/08/03 博士 经理 浙江杭州 13330149723
张h 女 2000/01/10 2005/02/02 本科 经理 浙江杭州 13033164373

你可能感兴趣的:(c++)