一个大学C语言试题的简单实现--员工信息管理程序
2007-12-28 10:18
1056 查看
一个大学C语言试题的简单实现,供参考。
题目:
员工信息管理程序
主要用结构体数组实现,用结构体表示每项记录,数据为:员工编号、姓名、性别、年龄、工龄、职务、部门、住址。
设计各个函数,分别实现以下功能:
(1)录入:完成职工信息的输入;
(2)删除:完成职工信息的删除;
(3)修改:允许对已经录入的数据重新进行编辑、修改;
(4)显示:显示所有职工的信息;
(5)查询:
a. 按姓名查找职工记录;
b. 输入部门、性别,输出所有符合条件员工记录;
c. 输入年龄范围,性别,输入所有符合条件员工记录;
d. 输入部门,按工龄对所有符合条件员工记录排序输出;
(6)退出程序。
------------------------------------------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
typedef struct Emp
{
int EmpId; // 员工编号
char EmpName[20]; // 姓名
char Sex; // 性别 F- 女 M- 男
int Age; // 年龄
int WorkYears; // 工龄
char Position[20]; // 职务
char Department[20]; // 部门
char Address[30]; // 住址
}Emp;
struct
{
Emp employee[100];
int usedFlag[100]; // 这个标志为用于标志相同索引的 employee数组中的变量 是否被使用。 1 --- 使用了, 0 --- 未使用
int sortByWorkYears[100];
}EmpArray;
void sortByWorkYears()
{
int i;
int j;
int v;
for (i = 0; i < 100; i++)
{
EmpArray.sortByWorkYears[i] = i;
}
for (i = 0; i < 99; i++)
{
for (j = i + 1; j < 100; j++)
{
if (EmpArray.employee[i].WorkYears < EmpArray.employee[j].WorkYears)
{
v = EmpArray.sortByWorkYears[i];
EmpArray.sortByWorkYears[i] = EmpArray.sortByWorkYears[j];
EmpArray.sortByWorkYears[j] = v;
}
}
}
}
void menu()
{
printf("/n/n------------------------------------------------------------------/n");
printf("请选择操作的种类:/n");
printf("I|i ---- 录入:完成职工信息的输入/n");
printf("D|d ---- 删除:完成职工信息的删除; /n");
printf("C|c ---- 修改:允许对已经录入的数据重新进行编辑、修改; /n");
printf("S|s ---- 显示:显示所有职工的信息; /n");
printf("F|f ---- 查询: /n");
printf("Q|q ---- 退出程序。 /n");
printf("$:");
}
void menuFind()
{
printf("a. 按姓名查找职工记录; /n");
printf("b. 输入部门、性别,输出所有符合条件员工记录; /n");
printf("c. 输入年龄范围,性别,输入所有符合条件员工记录; /n");
printf("d. 输入部门,按工龄对所有符合条件员工记录排序输出; /n");
printf(" 其他键返回上级菜单! /n");
printf("$:");
}
Emp* AllocateEmp()
{
int i = 0;
for (i = 0; i < 100; i++)
{
if (0 == EmpArray.usedFlag[i])
{
EmpArray.usedFlag[i] = 1;
return &EmpArray.employee[i];
}
}
return 0;
}
void show(Emp* pEmp)
{
printf("/n-------------------------员工信息---------------------------/n");
printf("员工号:%d/n",pEmp->EmpId);
printf("姓名:%s", pEmp->EmpName);
printf("/n性别:%c", pEmp->Sex);
printf("/n年龄:%d", pEmp->Age);
printf("/n工龄:%d", pEmp->WorkYears);
printf("/n职务:%s", pEmp->Position);
printf("/n部门:%s", pEmp->Department);
printf("/n住址:%s", pEmp->Address);
}
void Edit(Emp* pEmp)
{
printf("请输入5位员工号:");
scanf("%d", &pEmp->EmpId);
printf("/n请输入姓名:");
scanf("%s", pEmp->EmpName);
printf("/n请输入性别 F- 女 M- 男:");
scanf("%s", &pEmp->Sex);
printf("/n请输入年龄:");
scanf("%d", &(pEmp->Age));
printf("/n请输入工龄:");
scanf("%d", &(pEmp->WorkYears));
printf("/n请输入职务:");
scanf("%s", pEmp->Position);
printf("/n请输入部门:");
scanf("%s", pEmp->Department);
printf("/n请输入住址:");
scanf("%s", pEmp->Address);
}
void inputEmpInfo()
{
Emp* pEmp = 0;
pEmp = AllocateEmp();
Edit(pEmp);
}
void showAll()
{
int i = 0;
for (i = 0; i < 100; i++)
{
if (1 == EmpArray.usedFlag[i])
{
show(&EmpArray.employee[i]);
}
}
}
void deleteEmp()
{
int i;
int empNo = 0;
printf("/n请输入要删除的员工的员工号:");
scanf("%d", &empNo);
for (i = 0; i < 100; i++)
{
if (EmpArray.employee[i].EmpId == empNo)
{
EmpArray.usedFlag[i] = 0;
printf("删除成功!/n");
break;
}
}
}
Emp* findByEmpNo(int empNo)
{
int i;
for (i = 0; i < 100; i++)
{
if (EmpArray.employee[i].EmpId == empNo)
{
return &EmpArray.employee[i];
}
}
return 0;
}
void changeEmp()
{
Emp* pEmp;
int empNo = 0;
printf("/n请输入要修改的员工的员工号:");
scanf("%d", &empNo);
pEmp = findByEmpNo(empNo);
if (0 == pEmp)
{
printf("没有找到输入的员工号/n");
}
else
{
Edit(pEmp);
}
}
void findByName()
{
4000
char EmpName[200];
int i;
int findCount;
findCount = 0;
printf("/n请输入员工的姓名:");
scanf("%s", EmpName);
for (i = 0; i < 100; i++)
{
if (0 == strcmp(EmpArray.employee[i].EmpName, EmpName))
{
show(&EmpArray.employee[i]);
findCount++;
}
}
printf("/n一共找到%d个员工。/n",findCount);
}
void findByDepAndSex()
{
char dep[20];
char sex[2];
int i;
int findCount;
findCount = 0;
printf("/n请输入部门:");
scanf("%s", dep);
printf("/n请输入性别 F- 女 M- 男:");
scanf("%s", sex);
for (i = 0; i < 100; i++)
{
if ( (0 == strcmp(EmpArray.employee[i].Department, dep)) && (EmpArray.employee[i].Sex == *sex) )
{
show(&EmpArray.employee[i]);
findCount++;
}
}
printf("/n一共找到%d个员工。/n",findCount);
}
void findByAgeAndSex()
{
int fromAge;
int toAge;
char sex[2];
int i;
int findCount;
findCount = 0;
printf("/n请输入最小年龄");
scanf("%d", &fromAge);
printf("/n请输入最大年龄");
scanf("%d", &toAge);
printf("/n请输入性别 F- 女 M- 男:");
scanf("%s", sex);
for (i = 0; i < 100; i++)
{
if ( (fromAge <= EmpArray.employee[i].Age) && (EmpArray.employee[i].Age <= toAge) && (EmpArray.employee[i].Sex == *sex) )
{
show(&EmpArray.employee[i]);
findCount++;
}
}
printf("/n一共找到%d个员工。/n",findCount);
}
void findByDep()
{
char dep[20];
int i;
int findCount;
findCount = 0;
printf("/n请输入部门:");
scanf("%s", dep);
sortByWorkYears();
for (i = 0; i < 100; i++)
{
if ( 0 == strcmp(EmpArray.employee[i].Department, dep))
{
show(&EmpArray.employee[EmpArray.sortByWorkYears[i]]);
findCount++;
}
}
printf("/n一共找到%d个员工。/n",findCount);
}
void FindEmp()
{
char o[10];
menuFind();
scanf("%s", o);
switch(*o)
{
case 'a':
findByName();
break;
case 'b':
findByDepAndSex();
break;
case 'c':
findByAgeAndSex();
break;
case 'd':
findByDep();
break;
default:
break;
}
}
int main(int argc, char *argv[])
{
char op;
while(1)
{
menu();
scanf("%s", &op);
//op = getchar();
if ( ('I' == op) || ('i' == op))
{
inputEmpInfo();
}
else if ( ('D' == op) || ('d' == op))
{
deleteEmp();
}
else if ( ('C' == op) || ('c' == op))
{
changeEmp();
}
else if ( ('S' == op) || ('s' == op))
{
showAll();
}
else if ( ('F' == op) || ('f' == op))
{
FindEmp();
}
else if ( ('Q' == op) || ('q' == op))
{
break;
}
else
{
printf("Invalidate operation!");
}
}
return 0;
}
题目:
员工信息管理程序
主要用结构体数组实现,用结构体表示每项记录,数据为:员工编号、姓名、性别、年龄、工龄、职务、部门、住址。
设计各个函数,分别实现以下功能:
(1)录入:完成职工信息的输入;
(2)删除:完成职工信息的删除;
(3)修改:允许对已经录入的数据重新进行编辑、修改;
(4)显示:显示所有职工的信息;
(5)查询:
a. 按姓名查找职工记录;
b. 输入部门、性别,输出所有符合条件员工记录;
c. 输入年龄范围,性别,输入所有符合条件员工记录;
d. 输入部门,按工龄对所有符合条件员工记录排序输出;
(6)退出程序。
------------------------------------------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
typedef struct Emp
{
int EmpId; // 员工编号
char EmpName[20]; // 姓名
char Sex; // 性别 F- 女 M- 男
int Age; // 年龄
int WorkYears; // 工龄
char Position[20]; // 职务
char Department[20]; // 部门
char Address[30]; // 住址
}Emp;
struct
{
Emp employee[100];
int usedFlag[100]; // 这个标志为用于标志相同索引的 employee数组中的变量 是否被使用。 1 --- 使用了, 0 --- 未使用
int sortByWorkYears[100];
}EmpArray;
void sortByWorkYears()
{
int i;
int j;
int v;
for (i = 0; i < 100; i++)
{
EmpArray.sortByWorkYears[i] = i;
}
for (i = 0; i < 99; i++)
{
for (j = i + 1; j < 100; j++)
{
if (EmpArray.employee[i].WorkYears < EmpArray.employee[j].WorkYears)
{
v = EmpArray.sortByWorkYears[i];
EmpArray.sortByWorkYears[i] = EmpArray.sortByWorkYears[j];
EmpArray.sortByWorkYears[j] = v;
}
}
}
}
void menu()
{
printf("/n/n------------------------------------------------------------------/n");
printf("请选择操作的种类:/n");
printf("I|i ---- 录入:完成职工信息的输入/n");
printf("D|d ---- 删除:完成职工信息的删除; /n");
printf("C|c ---- 修改:允许对已经录入的数据重新进行编辑、修改; /n");
printf("S|s ---- 显示:显示所有职工的信息; /n");
printf("F|f ---- 查询: /n");
printf("Q|q ---- 退出程序。 /n");
printf("$:");
}
void menuFind()
{
printf("a. 按姓名查找职工记录; /n");
printf("b. 输入部门、性别,输出所有符合条件员工记录; /n");
printf("c. 输入年龄范围,性别,输入所有符合条件员工记录; /n");
printf("d. 输入部门,按工龄对所有符合条件员工记录排序输出; /n");
printf(" 其他键返回上级菜单! /n");
printf("$:");
}
Emp* AllocateEmp()
{
int i = 0;
for (i = 0; i < 100; i++)
{
if (0 == EmpArray.usedFlag[i])
{
EmpArray.usedFlag[i] = 1;
return &EmpArray.employee[i];
}
}
return 0;
}
void show(Emp* pEmp)
{
printf("/n-------------------------员工信息---------------------------/n");
printf("员工号:%d/n",pEmp->EmpId);
printf("姓名:%s", pEmp->EmpName);
printf("/n性别:%c", pEmp->Sex);
printf("/n年龄:%d", pEmp->Age);
printf("/n工龄:%d", pEmp->WorkYears);
printf("/n职务:%s", pEmp->Position);
printf("/n部门:%s", pEmp->Department);
printf("/n住址:%s", pEmp->Address);
}
void Edit(Emp* pEmp)
{
printf("请输入5位员工号:");
scanf("%d", &pEmp->EmpId);
printf("/n请输入姓名:");
scanf("%s", pEmp->EmpName);
printf("/n请输入性别 F- 女 M- 男:");
scanf("%s", &pEmp->Sex);
printf("/n请输入年龄:");
scanf("%d", &(pEmp->Age));
printf("/n请输入工龄:");
scanf("%d", &(pEmp->WorkYears));
printf("/n请输入职务:");
scanf("%s", pEmp->Position);
printf("/n请输入部门:");
scanf("%s", pEmp->Department);
printf("/n请输入住址:");
scanf("%s", pEmp->Address);
}
void inputEmpInfo()
{
Emp* pEmp = 0;
pEmp = AllocateEmp();
Edit(pEmp);
}
void showAll()
{
int i = 0;
for (i = 0; i < 100; i++)
{
if (1 == EmpArray.usedFlag[i])
{
show(&EmpArray.employee[i]);
}
}
}
void deleteEmp()
{
int i;
int empNo = 0;
printf("/n请输入要删除的员工的员工号:");
scanf("%d", &empNo);
for (i = 0; i < 100; i++)
{
if (EmpArray.employee[i].EmpId == empNo)
{
EmpArray.usedFlag[i] = 0;
printf("删除成功!/n");
break;
}
}
}
Emp* findByEmpNo(int empNo)
{
int i;
for (i = 0; i < 100; i++)
{
if (EmpArray.employee[i].EmpId == empNo)
{
return &EmpArray.employee[i];
}
}
return 0;
}
void changeEmp()
{
Emp* pEmp;
int empNo = 0;
printf("/n请输入要修改的员工的员工号:");
scanf("%d", &empNo);
pEmp = findByEmpNo(empNo);
if (0 == pEmp)
{
printf("没有找到输入的员工号/n");
}
else
{
Edit(pEmp);
}
}
void findByName()
{
4000
char EmpName[200];
int i;
int findCount;
findCount = 0;
printf("/n请输入员工的姓名:");
scanf("%s", EmpName);
for (i = 0; i < 100; i++)
{
if (0 == strcmp(EmpArray.employee[i].EmpName, EmpName))
{
show(&EmpArray.employee[i]);
findCount++;
}
}
printf("/n一共找到%d个员工。/n",findCount);
}
void findByDepAndSex()
{
char dep[20];
char sex[2];
int i;
int findCount;
findCount = 0;
printf("/n请输入部门:");
scanf("%s", dep);
printf("/n请输入性别 F- 女 M- 男:");
scanf("%s", sex);
for (i = 0; i < 100; i++)
{
if ( (0 == strcmp(EmpArray.employee[i].Department, dep)) && (EmpArray.employee[i].Sex == *sex) )
{
show(&EmpArray.employee[i]);
findCount++;
}
}
printf("/n一共找到%d个员工。/n",findCount);
}
void findByAgeAndSex()
{
int fromAge;
int toAge;
char sex[2];
int i;
int findCount;
findCount = 0;
printf("/n请输入最小年龄");
scanf("%d", &fromAge);
printf("/n请输入最大年龄");
scanf("%d", &toAge);
printf("/n请输入性别 F- 女 M- 男:");
scanf("%s", sex);
for (i = 0; i < 100; i++)
{
if ( (fromAge <= EmpArray.employee[i].Age) && (EmpArray.employee[i].Age <= toAge) && (EmpArray.employee[i].Sex == *sex) )
{
show(&EmpArray.employee[i]);
findCount++;
}
}
printf("/n一共找到%d个员工。/n",findCount);
}
void findByDep()
{
char dep[20];
int i;
int findCount;
findCount = 0;
printf("/n请输入部门:");
scanf("%s", dep);
sortByWorkYears();
for (i = 0; i < 100; i++)
{
if ( 0 == strcmp(EmpArray.employee[i].Department, dep))
{
show(&EmpArray.employee[EmpArray.sortByWorkYears[i]]);
findCount++;
}
}
printf("/n一共找到%d个员工。/n",findCount);
}
void FindEmp()
{
char o[10];
menuFind();
scanf("%s", o);
switch(*o)
{
case 'a':
findByName();
break;
case 'b':
findByDepAndSex();
break;
case 'c':
findByAgeAndSex();
break;
case 'd':
findByDep();
break;
default:
break;
}
}
int main(int argc, char *argv[])
{
char op;
while(1)
{
menu();
scanf("%s", &op);
//op = getchar();
if ( ('I' == op) || ('i' == op))
{
inputEmpInfo();
}
else if ( ('D' == op) || ('d' == op))
{
deleteEmp();
}
else if ( ('C' == op) || ('c' == op))
{
changeEmp();
}
else if ( ('S' == op) || ('s' == op))
{
showAll();
}
else if ( ('F' == op) || ('f' == op))
{
FindEmp();
}
else if ( ('Q' == op) || ('q' == op))
{
break;
}
else
{
printf("Invalidate operation!");
}
}
return 0;
}
相关文章推荐
- 一个简单的学生成绩管理程序(二叉树实现)
- 一个简单的四则运算程序C语言实现--无法处理括号
- 使用python实现一个简单的学生信息管理系统
- 【C语言】没事可以试试这个小程序,使用文件操作,模拟实现一个简单的文件拷贝工具!
- 赛码网,简单计算,用C语言自己实现的一个程序,仅供参考
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- C语言实现一个列表式的学生信息管理系统(完善)
- python下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- Linux Socket 事件触发模型 epoll 示例 这里会写一个用C语言的TCP服务器的完全实现的简单程序
- 简单实现了一个学生成绩信息管理系统
- 使用python实现一个简单的学生信息管理系统
- C语言实现一个Window控制台带彩色,且可以用方向键选择并确认的菜单式列表(二) ---学生信息管理系统
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- 一个简单的四则运算程序C语言实现--实现处理括号
- [置顶] C语言实现的一个简单的HTTP程序(转)
- 一个简单c语言windows程序的实现
- c语言实现的简单的员工工资管理系统
- 使用python实现一个简单的学生信息管理系统