#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
//学生模块
class PartyMember {
private:
std::string name;
int count;
public:
PartyMember(const std::string& name) : name(name), count(0) {
std::cout << "*****团员 " << name << " 加入党组织*****" << std::endl;
}
void applyForTraining() {
std::cout << "*****团员 " << name << " 提交入党申请*****" << std::endl;
count++;
}
void attendTraining() {
if (count < 1) {
std::cout << "*****团员 " << name << " 还未提交申请,请提交申请后再进行培训*****" << std::endl;
} else {
std::cout << "*****团员 " << name << " 进行培训*****" << std::endl;
count++;
}
}
void applyForConfirmation() {
if (count < 4) {
std::cout << "*****团员 " << name << " 培训次数未达到3次,无法申请转正*****" << std::endl;
} else {
std::cout << "*****团员 " << name << " 提交转正申请*****" << std::endl;
}
}
const std::string& getName() const {
return name;
}
int getCount() const {
return count;
}
};
//学生模块
//团支书模块
struct Member3 {
std::string name;
int score;
};
bool compareByScore(const Member3& a, const Member3& b) {
return a.score > b.score;
}
void tuiyou()
{
std::vector<Member3> members3;
// 输入团员信息
int numMembers;
std::cout << "请输入团员人数:";
std::cin >> numMembers;
for (int i = 0; i < numMembers; i++) {
Member3 member3;
std::cout << "请输入团员姓名:";
std::cin >> member3.name;
std::cout << "请输入团员分数:";
std::cin >> member3.score;
members3.push_back(member3);
}
// 根据分数排序
std::sort(members3.begin(), members3.end(), compareByScore);
// 输出推优结果
std::cout << "推优结果:" << std::endl;
for (const auto& member3 : members3) {
std::cout << "姓名:" << member3.name << ",分数:" << member3.score;
if (member3.score > 80) {
std::cout << "(推优成功)";
}
std::cout << std::endl;
}
}
// 查看团员荣誉函数
struct Award {
std::string name;
std::string description;
};
void displayAwards(const std::vector<Award>& awards) {
std::cout << "奖项列表:" << std::endl;
for (const auto& award : awards) {
std::cout << "奖项名称:" << award.name << std::endl;
std::cout << "奖项描述:" << award.description << std::endl;
std::cout << "-------------------" << std::endl;
}
}
void addAward(std::vector<Award>& awards) {
Award newAward;
std::cout << "请输入奖项名称:";
getline(std::cin, newAward.name);
std::cout << "请输入奖项描述:";
getline(std::cin, newAward.description);
awards.push_back(newAward);
std::cout << "奖项添加成功!" << std::endl;
}
void deleteAward(std::vector<Award>& awards) {
std::string nameToDelete;
std::cout << "请输入要删除的奖项名称:";
getline(std::cin, nameToDelete);
for (auto it = awards.begin(); it != awards.end(); ++it) {
if (it->name == nameToDelete) {
awards.erase(it);
std::cout << "奖项删除成功!" << std::endl;
return;
}
}
std::cout << "未找到该奖项!" << std::endl;
}
void saveToFile(const std::vector<Award>& awards, const std::string& filename) {
std::ofstream file(filename);
if (file.is_open()) {
for (const auto& award : awards) {
file << award.name << std::endl;
file << award.description << std::endl;
}
std::cout << "奖项信息已保存到文件!" << std::endl;
} else {
std::cout << "无法打开文件!" << std::endl;
}
file.close();
}
void Honor() {
std::vector<Award> awards;
std::string filename = "awards.txt";
std::ifstream file(filename);
if (file.is_open()) {
std::string line;
while (getline(file, line)) {
Award award;
award.name = line;
getline(file, line);
award.description = line;
awards.push_back(award);
}
file.close();
std::cout << "奖项信息已从文件加载!" << std::endl;
} else {
std::cout << "无法打开文件,将创建新的奖项列表!" << std::endl;
}
while (true) {
std::cout << "请选择操作:" << std::endl;
std::cout << "1. 查看奖项" << std::endl;
std::cout << "2. 添加奖项" << std::endl;
std::cout << "3. 删除奖项" << std::endl;
std::cout << "4. 保存奖项信息到文件" << std::endl;
std::cout << "5. 退出程序" << std::endl;
int choice;
std::cin >> choice;
std::cin.ignore(); // 忽略输入缓冲区中的换行符
switch (choice) {
case 1:
displayAwards(awards);
break;
case 2:
addAward(awards);
break;
case 3:
deleteAward(awards);
break;
case 4:
saveToFile(awards, filename);
break;
case 5:
break;
default:
std::cout << "无效的选择!" << std::endl;
break;
}
}
}
// 记录团员个人资料和推优记录函数
struct Member2 {
std::string name;
int age;
std::string position;
};
void saveMemberInfo(const Member2& member3) {
std::ofstream outputFile("members3.txt", std::ios::app);
if (outputFile.is_open()) {
outputFile << member3.name << " " << member3.age << " " << member3.position << std::endl;
outputFile.close();
std::cout << "团员信息已保存!" << std::endl;
} else {
std::cout << "无法打开文件!" << std::endl;
}
}
void readMemberInfo() {
std::ifstream inputFile("members3.txt");
if (inputFile.is_open()) {
std::string line;
while (getline(inputFile, line)) {
std::cout << line << std::endl;
}
inputFile.close();
} else {
std::cout << "无法打开文件!" << std::endl;
}
}
void Record(){
int choice;
Member2 member3;
do {
std::cout << "1. 保存团员信息" << std::endl;
std::cout << "2. 读取团员信息" << std::endl;
std::cout << "3. 退出" << std::endl;
std::cout << "请选择操作:";
std::cin >> choice;
switch (choice) {
case 1:
std::cout << "请输入团员姓名:";
std::cin >> member3.name;
std::cout << "请输入团员年龄:";
std::cin >> member3.age;
std::cout << "请输入团员职位:";
std::cin >> member3.position;
saveMemberInfo(member3);
break;
case 2:
readMemberInfo();
break;
case 3:
std::cout << "程序已退出。" << std::endl;
break;
default:
std::cout << "无效的选择,请重新输入。" << std::endl;
break;
}
} while (choice != 3);
}
//团支书模块
//外部函数加这里
int main()
{
string username, password;
do {
cout << endl;
cout << "*********************************************" << endl;
cout << "** *党员发展管理系统* **" << endl;
cout << "** 1、 学 生 **" << endl;
cout << "** 2、 团 支 部 **" << endl;
cout << "** 3、 党 支 部 **" << endl;
cout << "*********************************************" << endl;
cout << endl;
cout << "请选择要登陆的用户(选择数字1,2,3):";
cin >> username;
// 进行登录验证
if (username == "1") {
cout << "登录成功,欢迎学生用户!" << endl;
PartyMember member1("张三");
while (true) {
std::cout << "请选择功能:\n";
std::cout << "1入党申请\n";
std::cout << "2进行培训\n";
std::cout << "3转正申请\n";
std::cout << "4申请转接关系\n";
int choice1;
std::cin >> choice1;
switch (choice1) {
case 1:
member1.applyForTraining();
break;
case 2:
member1.attendTraining();
break;
case 3:
member1.applyForConfirmation();
break;
case 4:
std::cout << "申请提交成功,耐心等待相关人员进行转接手续";
break;
default:
std::cout << "输入错误,请重新选择\n";
break;
}
}
} else if (username == "2") {
cout << "登录成功,欢迎团支部用户!" << endl;
while (true) {
std::cout << "请选择功能:\n";
std::cout << "1 进行团员推优\n";
std::cout << "2 团员荣誉\n";
std::cout << "3 团员记录\n";
int choice2;
std::cin >> choice2;
switch (choice2) {
case 1:
tuiyou();
break;
case 2:
Honor();
break;
case 3:
Record();
break;
default:
std::cout << "*************输入错误,请重新选择*************\n";
break;
}
}
} else if (username == "3") {
cout << "登录成功,欢迎党支部用户!" << endl;
//主函数加这里
} else {
cout << "登录失败,请检查用户名是否正确。" << endl;
}
// 退出循环的条件是用户输入错误的用户名和密码
} while (username != "学生" && username != "团支部" && username != "党支部");
return 0;
}
```c++
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <fstream>
using namespace std;
struct Member4 {
std::string name;
double score2;
};
struct Member5 {
string name;
string id;
string date;
};
bool compareByScore(const Member4& A, const Member4& B) {
return A.score2 > B.score2;
}
//functiong4的函数
void addMember(vector<Member5>& members5) {
Member5 newMember;
cout << "请输入入党成员的姓名:";
cin >> newMember.name;
cout << "请输入入党成员的身份证号码:";
cin >> newMember.id;
cout << "请输入入党成员的入党日期:";
cin >> newMember.date;
members5.push_back(newMember);
}
void saveMembers(const vector<Member5>& members5, const string& filename) {
ofstream file(filename);
if (file.is_open()) {
for (const Member5& member5 : members5) {
file << member5.name << " " << member5.id << " " << member5.date << endl;
}
file.close();
cout << "成功保存入党成员信息!" << endl;
} else {
cout << "无法打开文件进行保存!" << endl;
}
}
void loadMembers(vector<Member5>& members5, const string& filename) {
ifstream file(filename);
if (file.is_open()) {
members5.clear();
string line;
file.close();
cout << "成功加载入党成员信息!" << endl;
} else {
cout << "无法打开文件进行加载!" << endl;
}
}
void printMembers(const vector<Member5>& members5) {
for (const Member5& member5 : members5) {
cout << "姓名:" << member5.name << endl;
cout << "身份证号码:" << member5.id << endl;
cout << "入党日期:" << member5.date << endl;
cout << "------------------------" << endl;
}
}
//functiong4的函数
void function1() {
int score3;
std::vector<Member4> members4;
// 输入审核人信息
int numMembers4;
std::cout << "请输入需要审核的人数:";
std::cin >> numMembers4;
for (int i = 0; i < numMembers4; i++) {
Member4 member4;
std::cout << "请输入审核推优团员的姓名:";
std::cin >> member4.name;
std::cout << "请输入审核推优团员的培训时间(以年为单位):";
std::cin >> member4.score2;
members4.push_back(member4);
}
std::sort(members4.begin(), members4.end(), compareByScore);
// 输出审核结果
std::cout << "审核结果:" << std::endl;
for (const auto& member4 : members4) {
std::cout << "姓名:" << member4.name << ",分数:" << member4.score2;
if (member4.score2 >=1) {
std::cout << "(审核通过,确认该推优成员资格有效)";
}else {
std::cout << "(该成员的培训时间不足一年,审核不成功)";}
std::cout << std::endl;
}
}
void function2() {
std::vector<Member4> members4;
// 输入成功审核了的人的信息
int numMembers4;
std::cout << "请输入需要确定入党积极分子的人数:";
std::cin >> numMembers4;
for (int i = 0; i < numMembers4; i++) {
Member4 member4;
std::cout << "请输入成员的姓名:";
std::cin >> member4.name;
std::cout << "请输入该成员的得票分数(100分为满分):";
std::cin >> member4.score2;
members4.push_back(member4);
}
std::sort(members4.begin(), members4.end(), compareByScore);
// 输出投票结果
std::cout << "投票结果:" << std::endl;
for (const auto& member4 : members4) {
std::cout << "姓名:" << member4.name << ",分数:" << member4.score2;
if (member4.score2 >= 50) {
std::cout << "(投票成功,该成员确定为入党积极分子)";
}else {
std::cout << "(得票未达半数,不能确定其成为入党积极分子)";}
std::cout << std::endl;
}
}
void function3(){
string answer;
std::vector<Member4> members4;
// 执行入党审核
int numMembers4;
std::cout << "请输入需要确定入党的人数:";
std::cin >> numMembers4;
for (int i = 0; i < numMembers4; i++) {
Member4 member4;
std::cout << "请输需审核批准成员的姓名:";
std::cin >> member4.name;
std::cout << "请输入该成员的信息:";
std::cout << "成为入党积极分子后是否经过一年以上的培养考察,并且成为了预备党员(yes/no):";
cin >> answer;
if(answer=="yes"){
std::cout << "该成员成为预备党员后是否间隔了一年并提出的转正申请(yes/no):";
cin >> answer;
if(answer=="yes"){
std::cout << "请输入该成员的得票分数(100分为满分):";
std::cin >> member4.score2;
}else{cout << "审核不通过\n"<<std::endl;}
}else{cout <<"审核不通过\n"<< std::endl;}
members4.push_back(member4);
}
std::sort(members4.begin(), members4.end(), compareByScore);
// 输出投票结果
std::cout << "投票结果:" << std::endl;
for (const auto& member4 : members4) {
std::cout << "姓名:" << member4.name << ",分数:" << member4.score2;
if (member4.score2 >= 50) {
std::cout << "(投票成功,该成员确定为党员)";
}else {
std::cout << "(得票未达半数或者审核未通过)";}
std::cout << std::endl;
}
}
void function4() {
vector<Member5> members5;
string filename = "members.txt";
loadMembers(members5, filename);
while (true) {
cout << "请选择操作:\n1. 添加入党成员\n2. 查看入党成员\n"<< endl;
int choice5;
cin >> choice5;
switch (choice5) {
case 1:
addMember(members5);
saveMembers(members5, filename);
break;
case 2:
printMembers(members5);
break;
default:
cout << "无效的选择!" << endl;
break;
}
}
}
int main() {
while (true) {
cout << "***************欢迎来到党支部界面***************" << endl << endl;
cout << "---------------请输入您的选择---------------" << endl;
cout << "| |" << endl;
cout << "| 1. 审核推优人员 |" << endl;
cout << "| |" << endl;
cout << "| 2. 召开会议确定入党积极分子 |" << endl;
cout << "| |" << endl;
cout << "| 3. 入党批准 |" << endl;
cout << "| |" << endl;
cout << "| 4. 记录成功入党成员 |" << endl;
cout << "| |" << endl;
cout << "----------------------------------------------" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
function1();
break;
case 2:
function2();
break;
case 3:
function3();
break;
case 4:
function4();
break;
default:
cout << "您输入的选择有误,请重新输入。" << endl;
// 执行重新输入的代码逻辑
break;
}
}
return 0;
}
如何将上面两个代码合并在一起,我想实现一个简单的党员发展管理程序,另外两个模块已经合并在一起了,该如何把最后一个党支部的代码合并在一块呢,下面的代码是党支部的代码,如何将下面的代码合并到上面的代码中去,实现功能合并?
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
//学生模块
class PartyMember {
private:
std::string name;
int count;
public:
PartyMember(const std::string& name) : name(name), count(0) {
std::cout << "*****团员 " << name << " 加入党组织*****" << std::endl;
}
void applyForTraining() {
std::cout << "*****团员 " << name << " 提交入党申请*****" << std::endl;
count++;
}
void attendTraining() {
if (count < 1) {
std::cout << "*****团员 " << name << " 还未提交申请,请提交申请后再进行培训*****" << std::endl;
}
else {
std::cout << "*****团员 " << name << " 进行培训*****" << std::endl;
count++;
}
}
void applyForConfirmation() {
if (count < 4) {
std::cout << "*****团员 " << name << " 培训次数未达到3次,无法申请转正*****" << std::endl;
}
else {
std::cout << "*****团员 " << name << " 提交转正申请*****" << std::endl;
}
}
const std::string& getName() const {
return name;
}
int getCount() const {
return count;
}
};
//学生模块
//团支书模块
struct Member3 {
std::string name;
int score;
};
bool compareByScore(const Member3& a, const Member3& b) {
return a.score > b.score;
}
void tuiyou()
{
std::vector<Member3> members3;
// 输入团员信息
int numMembers;
std::cout << "请输入团员人数:";
std::cin >> numMembers;
for (int i = 0; i < numMembers; i++) {
Member3 member3;
std::cout << "请输入团员姓名:";
std::cin >> member3.name;
std::cout << "请输入团员分数:";
std::cin >> member3.score;
members3.push_back(member3);
}
// 根据分数排序
std::sort(members3.begin(), members3.end(), compareByScore);
// 输出推优结果
std::cout << "推优结果:" << std::endl;
for (const auto& member3 : members3) {
std::cout << "姓名:" << member3.name << ",分数:" << member3.score;
if (member3.score > 80) {
std::cout << "(推优成功)";
}
std::cout << std::endl;
}
}
// 查看团员荣誉函数
struct Award {
std::string name;
std::string description;
};
void displayAwards(const std::vector<Award>& awards) {
std::cout << "奖项列表:" << std::endl;
for (const auto& award : awards) {
std::cout << "奖项名称:" << award.name << std::endl;
std::cout << "奖项描述:" << award.description << std::endl;
std::cout << "-------------------" << std::endl;
}
}
void addAward(std::vector<Award>& awards) {
Award newAward;
std::cout << "请输入奖项名称:";
getline(std::cin, newAward.name);
std::cout << "请输入奖项描述:";
getline(std::cin, newAward.description);
awards.push_back(newAward);
std::cout << "奖项添加成功!" << std::endl;
}
void deleteAward(std::vector<Award>& awards) {
std::string nameToDelete;
std::cout << "请输入要删除的奖项名称:";
getline(std::cin, nameToDelete);
for (auto it = awards.begin(); it != awards.end(); ++it) {
if (it->name == nameToDelete) {
awards.erase(it);
std::cout << "奖项删除成功!" << std::endl;
return;
}
}
std::cout << "未找到该奖项!" << std::endl;
}
void saveToFile(const std::vector<Award>& awards, const std::string& filename) {
std::ofstream file(filename);
if (file.is_open()) {
for (const auto& award : awards) {
file << award.name << std::endl;
file << award.description << std::endl;
}
std::cout << "奖项信息已保存到文件!" << std::endl;
}
else {
std::cout << "无法打开文件!" << std::endl;
}
file.close();
}
void Honor() {
std::vector<Award> awards;
std::string filename = "awards.txt";
std::ifstream file(filename);
if (file.is_open()) {
std::string line;
while (getline(file, line)) {
Award award;
award.name = line;
getline(file, line);
award.description = line;
awards.push_back(award);
}
file.close();
std::cout << "奖项信息已从文件加载!" << std::endl;
}
else {
std::cout << "无法打开文件,将创建新的奖项列表!" << std::endl;
}
while (true) {
std::cout << "请选择操作:" << std::endl;
std::cout << "1. 查看奖项" << std::endl;
std::cout << "2. 添加奖项" << std::endl;
std::cout << "3. 删除奖项" << std::endl;
std::cout << "4. 保存奖项信息到文件" << std::endl;
std::cout << "5. 退出程序" << std::endl;
int choice;
std::cin >> choice;
std::cin.ignore(); // 忽略输入缓冲区中的换行符
switch (choice) {
case 1:
displayAwards(awards);
break;
case 2:
addAward(awards);
break;
case 3:
deleteAward(awards);
break;
case 4:
saveToFile(awards, filename);
break;
case 5:
break;
default:
std::cout << "无效的选择!" << std::endl;
break;
}
}
}
// 记录团员个人资料和推优记录函数
struct Member2 {
std::string name;
int age;
std::string position;
};
void saveMemberInfo(const Member2& member3) {
std::ofstream outputFile("members3.txt", std::ios::app);
if (outputFile.is_open()) {
outputFile << member3.name << " " << member3.age << " " << member3.position << std::endl;
outputFile.close();
std::cout << "团员信息已保存!" << std::endl;
}
else {
std::cout << "无法打开文件!" << std::endl;
}
}
void readMemberInfo() {
std::ifstream inputFile("members3.txt");
if (inputFile.is_open()) {
std::string line;
while (getline(inputFile, line)) {
std::cout << line << std::endl;
}
inputFile.close();
}
else {
std::cout << "无法打开文件!" << std::endl;
}
}
void Record() {
int choice;
Member2 member3;
do {
std::cout << "1. 保存团员信息" << std::endl;
std::cout << "2. 读取团员信息" << std::endl;
std::cout << "3. 退出" << std::endl;
std::cout << "请选择操作:";
std::cin >> choice;
switch (choice) {
case 1:
std::cout << "请输入团员姓名:";
std::cin >> member3.name;
std::cout << "请输入团员年龄:";
std::cin >> member3.age;
std::cout << "请输入团员职位:";
std::cin >> member3.position;
saveMemberInfo(member3);
break;
case 2:
readMemberInfo();
break;
case 3:
std::cout << "程序已退出。" << std::endl;
break;
default:
std::cout << "无效的选择,请重新输入。" << std::endl;
break;
}
} while (choice != 3);
}
//团支书模块
//外部函数加这里
struct Member4 {
std::string name;
double score2;
};
struct Member5 {
string name;
string id;
string date;
};
bool compareByScore1(const Member4& A, const Member4& B) {
return A.score2 > B.score2;
}
//functiong4的函数
void addMember(vector<Member5>& members5) {
Member5 newMember;
cout << "请输入入党成员的姓名:";
cin >> newMember.name;
cout << "请输入入党成员的身份证号码:";
cin >> newMember.id;
cout << "请输入入党成员的入党日期:";
cin >> newMember.date;
members5.push_back(newMember);
}
void saveMembers(const vector<Member5>& members5, const string& filename) {
ofstream file(filename);
if (file.is_open()) {
for (const Member5& member5 : members5) {
file << member5.name << " " << member5.id << " " << member5.date << endl;
}
file.close();
cout << "成功保存入党成员信息!" << endl;
}
else {
cout << "无法打开文件进行保存!" << endl;
}
}
void loadMembers(vector<Member5>& members5, const string& filename) {
ifstream file(filename);
if (file.is_open()) {
members5.clear();
string line;
file.close();
cout << "成功加载入党成员信息!" << endl;
}
else {
cout << "无法打开文件进行加载!" << endl;
}
}
void printMembers(const vector<Member5>& members5) {
for (const Member5& member5 : members5) {
cout << "姓名:" << member5.name << endl;
cout << "身份证号码:" << member5.id << endl;
cout << "入党日期:" << member5.date << endl;
cout << "------------------------" << endl;
}
}
//functiong4的函数
void function1() {
int score3;
std::vector<Member4> members4;
// 输入审核人信息
int numMembers4;
std::cout << "请输入需要审核的人数:";
std::cin >> numMembers4;
for (int i = 0; i < numMembers4; i++) {
Member4 member4;
std::cout << "请输入审核推优团员的姓名:";
std::cin >> member4.name;
std::cout << "请输入审核推优团员的培训时间(以年为单位):";
std::cin >> member4.score2;
members4.push_back(member4);
}
std::sort(members4.begin(), members4.end(), compareByScore1);
// 输出审核结果
std::cout << "审核结果:" << std::endl;
for (const auto& member4 : members4) {
std::cout << "姓名:" << member4.name << ",分数:" << member4.score2;
if (member4.score2 >= 1) {
std::cout << "(审核通过,确认该推优成员资格有效)";
}
else {
std::cout << "(该成员的培训时间不足一年,审核不成功)";
}
std::cout << std::endl;
}
}
void function2() {
std::vector<Member4> members4;
// 输入成功审核了的人的信息
int numMembers4;
std::cout << "请输入需要确定入党积极分子的人数:";
std::cin >> numMembers4;
for (int i = 0; i < numMembers4; i++) {
Member4 member4;
std::cout << "请输入成员的姓名:";
std::cin >> member4.name;
std::cout << "请输入该成员的得票分数(100分为满分):";
std::cin >> member4.score2;
members4.push_back(member4);
}
std::sort(members4.begin(), members4.end(), compareByScore1);
// 输出投票结果
std::cout << "投票结果:" << std::endl;
for (const auto& member4 : members4) {
std::cout << "姓名:" << member4.name << ",分数:" << member4.score2;
if (member4.score2 >= 50) {
std::cout << "(投票成功,该成员确定为入党积极分子)";
}
else {
std::cout << "(得票未达半数,不能确定其成为入党积极分子)";
}
std::cout << std::endl;
}
}
void function3() {
string answer;
std::vector<Member4> members4;
// 执行入党审核
int numMembers4;
std::cout << "请输入需要确定入党的人数:";
std::cin >> numMembers4;
for (int i = 0; i < numMembers4; i++) {
Member4 member4;
std::cout << "请输需审核批准成员的姓名:";
std::cin >> member4.name;
std::cout << "请输入该成员的信息:";
std::cout << "成为入党积极分子后是否经过一年以上的培养考察,并且成为了预备党员(yes/no):";
cin >> answer;
if (answer == "yes") {
std::cout << "该成员成为预备党员后是否间隔了一年并提出的转正申请(yes/no):";
cin >> answer;
if (answer == "yes") {
std::cout << "请输入该成员的得票分数(100分为满分):";
std::cin >> member4.score2;
}
else { cout << "审核不通过\n" << std::endl; }
}
else { cout << "审核不通过\n" << std::endl; }
members4.push_back(member4);
}
std::sort(members4.begin(), members4.end(), compareByScore1);
// 输出投票结果
std::cout << "投票结果:" << std::endl;
for (const auto& member4 : members4) {
std::cout << "姓名:" << member4.name << ",分数:" << member4.score2;
if (member4.score2 >= 50) {
std::cout << "(投票成功,该成员确定为党员)";
}
else {
std::cout << "(得票未达半数或者审核未通过)";
}
std::cout << std::endl;
}
}
void function4() {
vector<Member5> members5;
string filename = "members.txt";
loadMembers(members5, filename);
while (true) {
cout << "请选择操作:\n1. 添加入党成员\n2. 查看入党成员\n" << endl;
int choice5;
cin >> choice5;
switch (choice5) {
case 1:
addMember(members5);
saveMembers(members5, filename);
break;
case 2:
printMembers(members5);
break;
default:
cout << "无效的选择!" << endl;
break;
}
}
}
void PartyBranch()
{
while (true) {
cout << "***************欢迎来到党支部界面***************" << endl << endl;
cout << "---------------请输入您的选择---------------" << endl;
cout << "| |" << endl;
cout << "| 1. 审核推优人员 |" << endl;
cout << "| |" << endl;
cout << "| 2. 召开会议确定入党积极分子 |" << endl;
cout << "| |" << endl;
cout << "| 3. 入党批准 |" << endl;
cout << "| |" << endl;
cout << "| 4. 记录成功入党成员 |" << endl;
cout << "| |" << endl;
cout << "----------------------------------------------" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
function1();
break;
case 2:
function2();
break;
case 3:
function3();
break;
case 4:
function4();
break;
default:
cout << "您输入的选择有误,请重新输入。" << endl;
// 执行重新输入的代码逻辑
break;
}
}
}
int main()
{
string username, password;
do {
cout << endl;
cout << "*********************************************" << endl;
cout << "** *党员发展管理系统* **" << endl;
cout << "** 1、 学 生 **" << endl;
cout << "** 2、 团 支 部 **" << endl;
cout << "** 3、 党 支 部 **" << endl;
cout << "*********************************************" << endl;
cout << endl;
cout << "请选择要登陆的用户(选择数字1,2,3):";
cin >> username;
// 进行登录验证
if (username == "1") {
cout << "登录成功,欢迎学生用户!" << endl;
PartyMember member1("张三");
while (true) {
std::cout << "请选择功能:\n";
std::cout << "1入党申请\n";
std::cout << "2进行培训\n";
std::cout << "3转正申请\n";
std::cout << "4申请转接关系\n";
int choice1;
std::cin >> choice1;
switch (choice1) {
case 1:
member1.applyForTraining();
break;
case 2:
member1.attendTraining();
break;
case 3:
member1.applyForConfirmation();
break;
case 4:
std::cout << "申请提交成功,耐心等待相关人员进行转接手续";
break;
default:
std::cout << "输入错误,请重新选择\n";
break;
}
}
}
else if (username == "2") {
cout << "登录成功,欢迎团支部用户!" << endl;
while (true) {
std::cout << "请选择功能:\n";
std::cout << "1 进行团员推优\n";
std::cout << "2 团员荣誉\n";
std::cout << "3 团员记录\n";
int choice2;
std::cin >> choice2;
switch (choice2) {
case 1:
tuiyou();
break;
case 2:
Honor();
break;
case 3:
Record();
break;
default:
std::cout << "*************输入错误,请重新选择*************\n";
break;
}
}
}
else if (username == "3") {
cout << "登录成功,欢迎党支部用户!" << endl;
PartyBranch();
//主函数加这里
}
else {
cout << "登录失败,请检查用户名是否正确。" << endl;
}
// 退出循环的条件是用户输入错误的用户名和密码
} while (username != "学生" && username != "团支部" && username != "党支部");
return 0;
}
请注意,在下面代码中,我将两个模块的代码整合在一起,并进行了一些必要的修正和修改。
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <fstream>
using namespace std;
//学生模块
class PartyMember {
private:
std::string name;
int count;
public:
PartyMember(const std::string& name) : name(name), count(0) {
std::cout << "*****团员 " << name << " 加入党组织*****" << std::endl;
}
void applyForTraining() {
std::cout << "*****团员 " << name << " 提交入党申请*****" << std::endl;
count++;
}
void attendTraining() {
if (count < 1) {
std::cout << "*****团员 " << name << " 还未提交申请,请提交申请后再进行培训*****" << std::endl;
} else {
std::cout << "*****团员 " << name << " 进行培训*****" << std::endl;
count++;
}
}
void applyForConfirmation() {
if (count < 4) {
std::cout << "*****团员 " << name << " 培训次数未达到3次,无法申请转正*****" << std::endl;
} else {
std::cout << "*****团员 " << name << " 提交转正申请*****" << std::endl;
}
}
const std::string& getName() const {
return name;
}
int getCount() const {
return count;
}
};
//团支书模块
struct Member3 {
std::string name;
int score;
};
bool compareByScore(const Member3& a, const Member3& b) {
return a.score > b.score;
}
void tuiyou() {
std::vector<Member3> members3;
// 输入团员信息
int numMembers;
std::cout << "请输入团员人数:";
std::cin >> numMembers;
for (int i = 0; i < numMembers; i++) {
Member3 member3;
std::cout << "请输入团员姓名:";
std::cin >> member3.name;
std::cout << "请输入团员分数:";
std::cin >> member3.score;
members3.push_back(member3);
}
// 根据分数排序
std::sort(members3.begin(), members3.end(), compareByScore);
// 输出推优结果
std::cout << "推优结果:" << std::endl;
for (const auto& member3 : members3) {
std::cout << "姓名:" << member3.name << ",分数:" << member3.score;
if (member3.score > 80) {
std::cout << "(推优成功)";
}
std::cout << std::endl;
}
}
//查看团员荣誉函数
struct Award {
std::string name;
std::string description;
};
void displayAwards(const std::vector<Award>& awards) {
std::cout << "奖项列表:" << std::endl;
for (const auto& award : awards) {
std::cout << "奖项名称:" << award.name << std::endl;
std::cout << "奖项描述:" << award.description << std::endl;
std::cout << "------------------------" << std::endl;
}
}
//保存奖项函数
void saveAwards(const std::vector<Award>& awards, const std::string& filename) {
std::ofstream outputFile(filename);
if (outputFile.is_open()) {
for (const auto& award : awards) {
outputFile << award.name << "," << award.description << std::endl;
}
std::cout << "奖项已成功保存到文件:" << filename << std::endl;
} else {
std::cout << "保存奖项失败,无法打开文件:" << filename << std::endl;
}
outputFile.close();
}
int main() {
std::vector<PartyMember> partyMembers;
std::vector<Award> awards;
std::string filename = "awards.txt";
// 团员模块
PartyMember member1("张三");
member1.applyForTraining();
member1.attendTraining();
member1.attendTraining();
member1.attendTraining();
member1.applyForConfirmation();
partyMembers.push_back(member1);
PartyMember member2("李四");
member2.applyForTraining();
member2.attendTraining();
member2.attendTraining();
member2.applyForConfirmation();
partyMembers.push_back(member2);
// 团支书模块
tuiyou();
// 查看团员荣誉
displayAwards(awards);
// 保存奖项
saveAwards(awards, filename);
return 0;
}
合并两段代码需要注意语法兼容性、标识符冲突以及代码正确性。通过仔细检查和测试,你应该能够成功将两段代码合并成一个功能完整的代码
程序源代码:
#include <bits/stdc++.h>
using namespace std;
//所选磁道个数
int N;
//磁头的开始位置
int start;
//请求服务序列
int sequence[1024];
//记录数组,用于在SSTF和SCAN算法中记录序列中的磁道与当前磁道的距离,然后从中挑选最小的进行下一次访问
int record[1024];
//tag数组,用于记录序列中的磁道是否已经被访问过
bool tag[1024];
//先来先服务算法(FCFS)
void FCFS(){
int cnt,i;
cnt = 0;
printf("磁道移动顺序如下:\n");
printf("%d->%d",start,sequence[0]);
cnt += abs(sequence[0] - start); //记录移动的磁道数
for(i = 1;i < N;++i){
printf("->%d",sequence[i]);
cnt += abs(sequence[i] - sequence[i-1]);
}
printf("\nFCFS算法:一共移动了 %d 个磁道!平均寻道长度为 %lf\n", cnt, cnt * 1.0 / N);
}
//最短寻道时间优先算法(SSTF)
void SSTF(){
int cnt,i,j,mv,mi,place;
cnt = 0; //磁道移动距离
//初始化record数组
memset(record,1025,sizeof(record));
//初始化tag
memset(tag,0,sizeof(tag));
place = start; //磁道位置
printf("磁道移动顺序如下:\n");
printf("%d",start);
for(i = 0; i<N;++i){
//写record数组,记录序列中的磁道与当前磁道的距离
for(j = 0;j < N;++j){
record[j] = abs(sequence[j] - place);
}
//从record中挑选出最小的
mv = 1025; //记录当前最小值
mi = -1; //记录取最小值时的位置
for(j = 0;j<N;++j){
//当前位置没被访问过
if(!tag[j] && mv > record[j]){
mv = record[j];
mi = j;
}
}
if(mi == -1){
printf("error");
}
//访问到sequence[mi]这个位置
printf("->%d",sequence[mi]);
cnt += abs(sequence[mi] - place); //记录移动距离
place= sequence[mi]; //更新当前磁道位置
tag[mi] = 1; //标识当前位置已访问
}
printf("\nSSTF算法:一共移动了 %d 个磁道!平均寻道长度为 %lf\n", cnt, cnt * 1.0 / N);
}
//扫描算法(SCAN)
void SCAN(){
int cnt,i,j,mv,mi,place,direction;
cnt = 0; //磁道移动距离
direction = rand() % 2; //随机方向,0为向下,1为向上
//初始化record数组
memset(record,1025,sizeof(record));
//初始化tag
memset(tag,0,sizeof(tag));
place = start; //磁道位置
printf("磁道移动顺序如下:\n");
printf("%d",start);
for(i = 0; i<N;++i){
//写record数组,记录序列中的磁道与当前磁道的距离
for(j = 0;j < N;++j){
record[j] = abs(sequence[j] - place);
}
//从record中挑选出最小的
mv = 1025; //记录当前最小值
mi = -1; //记录取最小值时的位置
for(j = 0;j<N;++j){
//当前位置没被访问过,并且如果direction为1就往大了找,为0就往小了找
if(!tag[j] && mv > record[j] && ((direction == 1 && sequence[j] >= place) || (direction == 0 && sequence[j] <= place))){
mv = record[j];
mi = j;
}
}
if(mi == -1){
//找不到了,需要调换方向
direction = !direction;
--i;
continue;
}
//访问到sequence[mi]这个位置
printf("->%d",sequence[mi]);
cnt += abs(sequence[mi] - place); //记录移动距离
place= sequence[mi]; //更新当前磁道位置
tag[mi] = 1; //标识当前位置已访问
}
printf("\nSCAN算法:一共移动了 %d 个磁道!平均寻道长度为 %lf\n", cnt, cnt * 1.0 / N);
}
void init(){
int i;
srand((unsigned long)time(0));
N = rand() % 1001; //随机磁道个数
start = rand() % 1001; //随机磁头位置
//随机初始化序列
for(i = 0;i <N;++i){
sequence[i] = rand() % 1001;
}
printf("初始化磁道的个数为%d,序列如下:\n",N);
for(i = 0;i < N;++i){
printf("%d ",sequence[i]);
}
printf("\n当前磁头的位置位于%d\n", start);
}
int main(){
init(); //初始化数据
printf("\n================= FCFS =================\n");
FCFS();
printf("\n================= SSTF =================\n");
SSTF();
printf("\n================= SCAN =================\n");
SCAN();
return 0;
}
根据提供的参考资料,主要是无头单项非循环链表的实现,下面是党支部的代码片段:
// 党支部代码片段
typedef struct {
char name[50];
int age;
char gender[10];
} PartyMember;
typedef struct PartyBranchNode {
PartyMember member;
struct PartyBranchNode* next;
} PartyBranchNode;
PartyBranchNode* head = NULL;
// 添加党员
void addPartyMember(char name[], int age, char gender[]) {
PartyBranchNode* newNode = (PartyBranchNode*)malloc(sizeof(PartyBranchNode));
strncpy(newNode->member.name, name, sizeof(newNode->member.name));
newNode->member.age = age;
strncpy(newNode->member.gender, gender, sizeof(newNode->member.gender));
newNode->next = NULL;
if (head == NULL) {
head = newNode;
} else {
PartyBranchNode* cur = head;
while (cur->next != NULL) {
cur = cur->next;
}
cur->next = newNode;
}
}
// 删除党员
void removePartyMember(char name[]) {
if (head == NULL) {
return;
} else if (strcmp(head->member.name, name) == 0) {
PartyBranchNode* temp = head;
head = head->next;
free(temp);
} else {
PartyBranchNode* prev = NULL;
PartyBranchNode* cur = head;
while (cur != NULL && strcmp(cur->member.name, name) != 0) {
prev = cur;
cur = cur->next;
}
if (cur != NULL) {
prev->next = cur->next;
free(cur);
}
}
}
// 查找党员
PartyBranchNode* findPartyMember(char name[]) {
PartyBranchNode* cur = head;
while (cur != NULL && strcmp(cur->member.name, name) != 0) {
cur = cur->next;
}
return cur;
}
// 显示所有党员
void displayPartyMembers() {
PartyBranchNode* cur = head;
while (cur != NULL) {
printf("姓名:%s 年龄:%d 性别:%s\n", cur->member.name, cur->member.age, cur->member.gender);
cur = cur->next;
}
}
已合并的代码在这里未给出,现在我们将党支部的代码与已合并的代码结合起来,假设已合并的代码中存在一个名为managePartyMembers
的函数用来管理党员。我们只需要在managePartyMembers
函数中调用党支部的函数即可。
// 已合并的代码,假设存在一个函数 managePartyMembers
void managePartyMembers() {
// 这里是已合并的代码逻辑
// 调用党支部功能
addPartyMember("张三", 30, "男");
addPartyMember("李四", 28, "女");
removePartyMember("王五");
PartyBranchNode* member = findPartyMember("赵六");
if (member != NULL) {
printf("找到党员:%s\n", member->member.name);
} else {
printf("未找到该党员\n");
}
displayPartyMembers();
// 继续已合并的代码逻辑
}
在managePartyMembers
函数内部,我们调用了党支部的函数,例如addPartyMember
函数用来添加党员,removePartyMember
函数用来删除党员,findPartyMember
函数用来查找党员,displayPartyMembers
函数用来显示所有党员。
这样,我们就将党支部的代码与已合并的代码功能完整地合并在一起了。