当前位置: 首页 > wzjs >正文

陕西省建设监理工程协会网站企业网站推广方案策划

陕西省建设监理工程协会网站,企业网站推广方案策划,网站建设拍金手指谷哥14,wordpress登录后跳转C基础:结构体数组综合训练 员工信息处理系统题目描述输入描述输出描述解题思路参考代码 员工信息处理系统 题目描述 在一家企业中,员工信息的准确性和时效性是日常人事管理工作的关键。由于企业员工数量众多,手动统计与更新员工信息不仅耗费大量时间&a…

C++基础:结构体数组综合训练

    • 员工信息处理系统
        • 题目描述
        • 输入描述
        • 输出描述
        • 解题思路
        • 参考代码

员工信息处理系统

题目描述

在一家企业中,员工信息的准确性和时效性是日常人事管理工作的关键。由于企业员工数量众多,手动统计与更新员工信息不仅耗费大量时间,还容易出现错误。作为企业的技术人员,你准备开发一个专门的信息管理系统来协助人事部门高效完成这项任务。

该系统旨在实现以下核心功能,以全面覆盖员工信息管理的各个方面:
(1)添加员工功能:每当企业迎来新员工时,人事专员可以输入新员工数量,然后快速录入每位新员工的工号 ID、姓名 name、年龄 age、性别 gender 以及业绩评分 score 等关键信息。(注:员工信息具体数据类型可参考示例和数据范围说明)
(2)删除员工功能:面对员工离职或岗位调整的情况,系统可以通过工号快速定位并删除相应员工的信息。
(3)修改员工信息功能:考虑到员工信息可能因各种原因需要更新(如年龄增长、业绩变化等),系统能够通过工号检索到具体员工后,对其信息进行修改。
(4)查询员工信息功能:为了快速获取某位员工的详细信息,系统提供了按工号查询的功能。
(5)统计员工数据功能:系统能够自动计算并展示全体员工的业绩评分平均值。
(6)清空数据功能:随着财年的结束和部分员工的离职,系统提供了清空当前企业所有员工信息的选项。

输入描述

每次操作,只能是下列七个操作中的一个,每次操作将按照操作提示进行输入,数据保证合法。
1、添加员工功能:输入一行 insert n,表示进行添加员工功能,n 表示新加入员工的数量,然后输入 n 行信息,依次为 ID、name、age、gender、score。
2、删除员工功能:输入一行 del ID,表示进行删除工号为 ID 的员工信息。
3、修改员工信息功能:输入一行 update ID,表示进行更新工号为 ID 的员工信息,然后第二行输入员工信息,依次为 ID、name、age、gender、score。
4、查询员工信息功能:输入一行 Find ID,表示查询工号为 ID 的员工信息,然后输出一行,依次为员工的 ID、name、age、gender、score。
5、统计员工数据功能:输入一行 calc,表示统计员工数据,然后输出一行,为当前企业员工业绩的平均值。
6、清空数据功能:输入一行 clear,表示清空,清空表示所有员工信息都被删除。
7、退出系统:输入一行 exit,表示退出系统,此时程序停止执行。

输出描述

每次执行功能 4,输出一行,信息以一个空格分隔,依次为学生的 ID、name、age、gender、score。
每次执行功能 5,输出一行,包含一个数字,保留两位小数,表示平均分。
当执行功能 7,按存储顺序输出所有学生信息,每个学生信息占一行,信息以一个空格分隔,依次为学生的 ID、name、age、gender、score,然后结束程序。

输入样例

insert 5
20000101011 wangcai 15 f 100
20000101012 xiaoqiang 25 m 70
20000101013 xingxing 35 f 67
20000101014 afa 11 f 78
20000101015 aqi 19 m 26
del 20000101013
calc
update 20000101014
20000101014 kaka 12 m 90
Find 20000101015
clear
insert 2
20000101011 wangcai 15 f 100
20000101012 xiaoqiang 25 m 70
exit

输出样例

68.50
20000101015 aqi 19 m 26
20000101011 wangcai 15 f 100
20000101012 xiaoqiang 25 m 70

注意
本题目输入输出量较大,推荐使用更快的输入输出方式,例如:scanf、printf。

数据范围
每组操作数量最多不超过 10001000 次。
添加学生功能中,每次 nn 不超过 2020。
学号 ID 为11位数,姓名 name 长度不超过 1010 且都为小写字母,年龄 age 在 00 到 100100 之间,性别 gender 为 m 或者 f ,信息学成绩 score 为整数,在 00 到 100100 之间。
数据保证学号ID不重复。

解题思路
  1. 数据结构设计
  • 结构体定义:定义 Student 结构体来存储单个学生的信息,包含学号 id、姓名 name、年龄 age、性别 gender 和成绩 score。
  • 静态数组存储:使用静态数组 students[20005] 存储所有学生的信息,同时定义全局变量 studentCount 记录当前学生数量,totalScore 记录所有学生的总成绩。
  1. 功能函数实现
  • 添加学生(insertStudents):
    • 接收要添加的学生数量 n 作为参数。
    • 循环 n 次,每次读取一个学生的学号、姓名、年龄、性别和成绩,并将其存储到数组中。
    • 每添加一个学生,更新 studentCount 和 totalScore。
  • 删除学生(deleteStudent):
    • 接收要删除的学生的学号 id 作为参数。
    • 遍历数组,找到学号匹配的学生。
    • 从 totalScore 中减去该学生的成绩,将其后的学生信息依次前移覆盖该学生,同时 studentCount 减 1。
  • 修改学生信息(updateStudent):
    • 接收要修改信息的学生的学号 id 作为参数。
    • 遍历数组,找到学号匹配的学生。
    • 先从 totalScore 中减去该学生原来的成绩,再读取新的信息并更新到数组中,最后将新成绩累加到 totalScore 中。
  • 查找学生信息(findStudent):
    • 接收要查找的学生的学号 id 作为参数。
    • 遍历数组,找到学号匹配的学生并输出其信息。
  • 统计学生数据(calculateAverage):
    • 若 studentCount 为 0,输出 0.00。
    • 否则,计算并输出 totalScore 除以 studentCount 的结果,保留两位小数。
  • 清空数据(clearData):将 studentCount 和 totalScore 重置为 0,相当于清空所有学生信息。
  • 输出所有学生信息(printAllStudents):遍历数组,依次输出每个学生的信息。
  1. 主函数逻辑
  • 使用 while (true) 循环不断读取用户输入的操作指令。
  • 根据不同的操作指令,执行相应的功能函数:
    • 若指令为 insert,读取要添加的学生数量 n,调用 insertStudents 函数。
    • 若指令为 del,读取要删除的学生的学号 id,调用 deleteStudent 函数。
    • 若指令为 update,读取要修改信息的学生的学号 id,调用 updateStudent 函数。
    • 若指令为 Find,读取要查找的学生的学号 id,调用 findStudent 函数。
    • 若指令为 calc,调用 calculateAverage 函数。
    • 若指令为 clear,调用 clearData 函数。
    • 若指令为 exit,调用 printAllStudents 函数输出所有学生信息,然后退出循环,结束程序。
  1. 输入输出优化
    考虑到输入输出量较大,部分输入使用 scanf,部分输出使用 printf 以提高效率。对于字符串输入,使用 cin 处理姓名和性别等信息。同时,使用 std::string 类型存储操作指令,方便进行字符串比较。
参考代码
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;// 定义学生结构体,用于存储学生的各项信息
struct Student {long long id;  // 学生的学号,使用 long long 类型以适应可能较长的学号string name;   // 学生的姓名,使用 string 类型方便处理字符串int age;       // 学生的年龄,使用 int 类型存储整数string gender; // 学生的性别,使用 string 类型存储 "m" 或 "f" 等字符串int score;     // 学生的信息学成绩,使用 int 类型存储整数
};// 定义一个静态数组,用于存储学生信息,最多可存储 20005 个学生
Student students[20005];
// 记录当前学生的数量,初始化为 0
int studentCount = 0;
// 记录所有学生的总成绩,初始化为 0
int totalScore = 0;// 添加学生的函数,参数 n 表示要添加的学生数量
void insertStudents(int n) {// 循环 n 次,依次输入每个学生的信息for (int i = 0; i < n; ++i) {// 学生数量加 1studentCount++;// 读取学生的学号scanf("%lld", &students[studentCount].id);// 读取学生的姓名cin >> students[studentCount].name;// 读取学生的年龄scanf("%d", &students[studentCount].age);// 读取学生的性别cin >> students[studentCount].gender;// 读取学生的成绩scanf("%d", &students[studentCount].score);// 将该学生的成绩累加到总成绩中totalScore += students[studentCount].score;}
}// 删除学生的函数,参数 id 表示要删除的学生的学号
void deleteStudent(long long id) {// 遍历所有学生,查找要删除的学生for (int i = 1; i <= studentCount; ++i) {if (students[i].id == id) {// 从总成绩中减去要删除学生的成绩totalScore -= students[i].score;// 将后面的学生信息依次向前移动,覆盖要删除的学生信息for (int j = i; j < studentCount; ++j) {students[j] = students[j + 1];}// 学生数量减 1studentCount--;// 找到并删除学生后,提前返回return;}}
}// 修改学生信息的函数,参数 id 表示要修改信息的学生的学号
void updateStudent(long long id) {// 遍历所有学生,查找要修改信息的学生for (int i = 1; i <= studentCount; ++i) {if (students[i].id == id) {// 从总成绩中减去该学生原来的成绩totalScore -= students[i].score;// 读取新的学号scanf("%lld", &students[i].id);// 读取新的姓名cin >> students[i].name;// 读取新的年龄scanf("%d", &students[i].age);// 读取新的性别cin >> students[i].gender;// 读取新的成绩scanf("%d", &students[i].score);// 将新的成绩累加到总成绩中totalScore += students[i].score;// 找到并修改学生信息后,提前返回return;}}
}// 查找学生信息的函数,参数 id 表示要查找的学生的学号
void findStudent(long long id) {// 遍历所有学生,查找指定学号的学生for (int i = 1; i <= studentCount; ++i) {if (students[i].id == id) {// 找到学生后,输出该学生的信息printf("%lld %s %d %s %d\n", students[i].id, students[i].name.c_str(), students[i].age, students[i].gender.c_str(), students[i].score);// 找到学生后,提前返回return;}}
}// 统计学生数据的函数,用于计算并输出学生的平均成绩
void calculateAverage() {// 如果学生数量为 0,输出 0.00if (studentCount == 0) {printf("0.00\n");} else {// 计算平均成绩并输出,保留两位小数printf("%.2f\n", (double)totalScore / studentCount);}
}// 清空数据的函数,将学生数量和总成绩重置为 0
void clearData() {studentCount = 0;totalScore = 0;
}// 输出所有学生信息的函数,遍历所有学生并输出其信息
void printAllStudents() {for (int i = 1; i <= studentCount; ++i) {printf("%lld %s %d %s %d\n", students[i].id, students[i].name.c_str(), students[i].age, students[i].gender.c_str(), students[i].score);}
}int main() {string op;  // 用于存储用户输入的操作指令while (true) {// 读取用户输入的操作指令cin >> op;if (op == "insert") {int n;// 读取要添加的学生数量scanf("%d", &n);// 调用添加学生的函数insertStudents(n);} else if (op == "del") {long long id;// 读取要删除的学生的学号scanf("%lld", &id);// 调用删除学生的函数deleteStudent(id);} else if (op == "update") {long long id;// 读取要修改信息的学生的学号scanf("%lld", &id);// 调用修改学生信息的函数updateStudent(id);} else if (op == "Find") {long long id;// 读取要查找的学生的学号scanf("%lld", &id);// 调用查找学生信息的函数findStudent(id);} else if (op == "calc") {// 调用统计学生数据的函数calculateAverage();} else if (op == "clear") {// 调用清空数据的函数clearData();} else if (op == "exit") {// 调用输出所有学生信息的函数printAllStudents();// 退出循环,结束程序break;}}return 0;
}
http://www.dtcms.com/wzjs/266657.html

相关文章:

  • 武汉php做网站深圳网站关键词优化推广
  • 网站开发 工作日志seo网络营销外包公司
  • 深圳注册公司在哪里注册上海百度推广优化公司
  • seo在线优化工具seo的优化方案
  • 企业为什么要做短视频营销教程seo推广排名网站
  • 网站建设与规划周志总结种子资源地址
  • 树形结构网站案例西点培训学校
  • 济宁网站建设品牌建设的五个要素
  • 数码产品商城网站建设按效果付费的推广
  • 做网站网页兼容性什么文案容易上热门
  • 网站建设策划结束语批量外链工具
  • 在柬埔寨做网站彩票推广南宁seo推广公司
  • 学生空间建设网站品牌营销策划方案怎么做
  • cnblogs wordpress百度seo高级优化
  • 网页小游戏入口石家庄seo网络推广
  • 罗湖福田app网站开发百度动态排名软件
  • 可以做直播的游戏视频网站网推公司干什么的
  • 如何通过c语言来做网站哈尔滨最新今日头条新闻
  • 网站登录流程图seo营销推广公司
  • 深圳html5网站开发sem是什么设备
  • 网站站点是什么线上推广渠道
  • 建设银行给税对账在什么网站深圳推广公司介绍
  • 手机软件下载网站seo平台怎么样
  • 网站建设和平面设计网络推广公司哪里好
  • physon可以做网站网络营销优化推广
  • 建e室内设计网官网全景效果图九幺seo工具
  • 嘉兴哪里做网站专业的郑州网站推广
  • 网站集约化建设要求外链群发软件
  • wordpress邮件重置密码下载优化大师安装桌面
  • 六安做网站的公司软文推广范文