大学c语言基本程序,一个大学C语言试题的简单实现--员工信息管理程序
一个大学C语言试题的简单实现,供参考。
题目:
员工信息管理程序
主要用结构体数组实现,用结构体表示每项记录,数据为:员工编号、姓名、性别、年龄、工龄、职务、部门、住址。
设计各个函数,分别实现以下功能:
(1)录入:完成职工信息的输入;
(2)删除:完成职工信息的删除;
(3)修改:允许对已经录入的数据重新进行编辑、修改;
(4)显示:显示所有职工的信息;
(5)查询:
a. 按姓名查找职工记录;
b. 输入部门、性别,输出所有符合条件员工记录;
c. 输入年龄范围,性别,输入所有符合条件员工记录;
d. 输入部门,按工龄对所有符合条件员工记录排序输出;
(6)退出程序。
------------------------------------------------------------------------------------------------------------------------------------------------------
#include
#include
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()
{
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语言基本程序,一个大学C语言试题的简单实现--员工信息管理程序相关推荐
- 使用C语言编写程序一个皮球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求当它第10次落地时,共经过了多少米?第10次反弹多高?写出完整代码并给出解释并对代码作出注释...
使用C语言编写程序一个皮球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹.求当它第10次落地时,共经过了多少米?第10次反弹多高?写出完整代码并给出解释并对代码作出注释第10次落 ...
- c语言笔试程序改错题,C语言笔试--程序改错题.doc
C语言笔试--程序改错题 铜尖刮佛烁休凹汝宰或贷呵茎丑傅汞访沾犹扯视自女垂桶癌苞详阴疾澜赏斑萝厩蕴莽钢邹叶疹单樊捣前烬吊崖匝企送跃赫鳃投媳暴棺蹲后牡膊谗甲柜侍叠磐燥陷懦昧颈芝矢肪灌就冷沽梗挑评保崎士羡 ...
- C++数据结构||为我院设计一个简单的教师信息管理程序。对我院教师进行管理,包括插入、删除、查找、排序等功能。教师信息包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。
0.先序条件 在文件夹中新建名称"教师信息.txt"的文本文件存储教师信息 visual studio 2017 1.背景 数据结构课程设计的作业 为我院设计一个简单的教师信息管理 ...
- 用c语言运行程序的优点,C语言学习与总结---第一章:C语言概述
第一章:C语言概述 1.绪论 2.计算机程序 3.计算机语言 4.C语言的发展及其特点 5.最简单的C语言程序 6.运行C语言程序的方法与步骤 7.程序设计任务 1.绪论 C语言是计算机基础语言,本次 ...
- c语言报告程序分析报告,2012C语言程序分析报告.doc
2012C语言程序分析报告 C语言程序设计专周 专 周 报 告 班级:10611 学号:20 姓名: 设计时间:2011-5-30至2011-6-3 一.设计题目:职工工资管理小软件 二.实习目的 1 ...
- c语言经典程序100txt例,C语言经典程序100例txt格式.doc
C语言经典程序100例txt格式 C语言经典程序100例txt格式 C语言经典程序100例txt格式.txt人永远不知道谁哪次不经意的跟你说了再见之后就真的再也不见了.一分钟有多长?这要看你是蹲在厕所 ...
- C语言C程序的构成,C语言程序的构成.doc
C语言程序的构成 C语言程序的构成 章 C语言程序的构成 与C++.Java相比,C语言其实很简单,但却非常重要.因为它是C++.Java的基础. 不把C语言基础打扎实,很难成为程序员高手. 一.C语 ...
- c语言报告程序分析报告,C语言程序设计报告
1.科目:C语言程序设计老师:姓名:学号:专业:化学工程与工艺实验二(1) 输入下面的程序,进行编译,记录编译时出现的信息,分析出现这些错误信息的原因:按照自己的分析改正错误后,再进行编译,链接和运行 ...
- java完成一个学生信息调查程序_利用Java设计一个简单的学生信息管理程序
利用Java设计一个简单的控制台学生信息管理程序 此程序可作为课设的参考,其中信息存储于文件中. 创建了学生类Student,用于存储学号等的信息.创建StudentFunction类,用于实现诸如学 ...
最新文章
- linux raw 开机启动,Linux实现redmine自动启动的方法
- 环球网-王坚《在线》:用20万字讲清楚三个词
- Php错误邮件提示linux,linux下phpmailer发送邮件出现SMTP ERROR: Failed to connect to server: (0)错误...
- python远程监控jvm_python和jstat命令采集jvm数据导入zabbix监控-阿里云开发者社区
- 1.9 编程基础之顺序查找 11 连续出现的字符 python
- python程序发布 ubuntu_发布和运行(ubuntu下python服务器)
- linux的wc命令源代码,linux下的wc命令的源代码
- 【软件工程】软件工程系统设计——详细设计(过程设计)
- Loadrunner 接口测试方法
- YTU OJ 2476 C++习题 继承与组合
- unity android录制视频教程,Unity3d 录屏功能教程指南 | Cross Platform Replay Kit
- GAN原理,优缺点、应用总结
- 【Python】爬虫-----爬取网易云音乐评论信息
- 学生课程注册管理系统
- 那就祝你有数不尽的鲜花和浪漫
- java怎么读取数据?
- freemarker遍历list处理第一个、最后一个元素
- 《python密码学编程》笔记
- gcc -Wl,--wrap,malloc 替换系统函数
- 欺骗的艺术----(9)
热门文章
- pycharm 运行后,如何查看变量值以及继续输入语句并运行?(非Debug , debug太慢)
- 第二篇 Python数据类型、字符编码、文件处理
- c语言遍历字节,C语言遍历结构体
- linux uwsgi 非root,nginx – 只能用root运行uwsgi
- java中priorityqueue_详解JAVA中priorityqueue的具体使用
- 给网站加上“新年快乐”灯笼源码
- postman如何模拟Map参数请求呢?
- 玄元剑仙手游最新服务器,玄元剑仙最新
- dqn在训练过程中loss越来越大_深度强化学习——从DQN到DDPG
- 安卓手机安装并使用自动化应用Tasker