第一百一十天学习记录:C++实战:自我设计用单链表、多态和文件操作写一个公会人员管理系统

本文主要是介绍第一百一十天学习记录:C++实战:自我设计用单链表、多态和文件操作写一个公会人员管理系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实现程序界面展示:

主界面:

在这里插入图片描述

程序输入非正常字符情况保护

在这里插入图片描述
在这里插入图片描述

添加会员信息

在这里插入图片描述

删除会员信息

在这里插入图片描述

查找会员信息

在这里插入图片描述

变更会员会阶

在这里插入图片描述

显示所有会员

在这里插入图片描述

排序会员信息

在这里插入图片描述

查看种族职业

在这里插入图片描述

保存信息的txt文件

在这里插入图片描述

工程文件目录

在这里插入图片描述

main.cpp代码

#include "allmember.h"
#include "alljob.h"
#include "allrace.h"
#include "allrank.h"enum Job
{EXI,//退出ADD,//添加LIS,//显示DEL,//删除MOD,//编辑SER,//查找SOR,//排序CHE //团队
};const int Orcjob[6] = { 1,2,3,4,9,10 };
const int Trolljob[7] = { 1,2,3,4,5,8,10 };
const int Taurenjob[5] = { 1,2,3,6,10 };
const int Forsakenjob[6] = { 1,4,5,8,9,10 };
const int BloodElfjob[7] = { 2,4,5,7,8,9,10 };
const int Humanjob[7] = { 1,4,5,7,8,9,10 };
const int Dwarfjob[6] = { 1,2,4,7,8,10 };
const int Gnomejob[5] = { 1,4,5,9,10 };
const int NightElfjob[6] = { 1,2,4,6,8,10 };
const int Draeneijob[7] = { 1,2,3,5,7,8,10 };void showtable()
{cout << "*****************************************" << endl;cout << "**********公会职业信息管理系统***********" << endl;cout << "*****************************************" << endl;cout << "************1、 添加会员信息*************" << endl;cout << "************2、 显示所有会员*************" << endl;cout << "************3、 删除会员信息*************" << endl;cout << "************4、 变更会员会阶*************" << endl;cout << "************5、 查找会员信息*************" << endl;cout << "************6、 排序会员信息*************" << endl;cout << "************7、 查看种族职业*************" << endl;cout << "************0、 退出管理系统*************" << endl;cout << "*****************************************" << endl;cout << "***请输入您所需要的操作选项,按回车确认:" << endl;
}Allmember* newmember(int Id,string Name,int Sex,int woker,int race,int rank)
{Worker* tmpwoker = NULL;Race* tmprace = NULL;GuildRank* tmprank = NULL;switch (woker){case 1:tmpwoker = new Warrior;break;case 2:tmpwoker = new Hunter;break;case 3:tmpwoker = new Shaman;break;case 4:tmpwoker = new Rogue;break;case 5:tmpwoker = new Mage;break;case 6:tmpwoker = new Druid;break;case 7:tmpwoker = new Paladin;break;case 8:tmpwoker = new Priest;break;case 9:tmpwoker = new Warlock;break;case 10:tmpwoker = new DeathKnight;break;default:break;}switch (race){case 1:tmprace = new Orc;break;case 2:tmprace = new Troll;break;case 3:tmprace = new Tauren;break;case 4:tmprace = new Forsaken;break;case 5:tmprace = new BloodElf;break;case 6:tmprace = new Human;break;case 7:tmprace = new Dwarf;break;case 8:tmprace = new Gnome;break;case 9:tmprace = new NightElf;break;case 10:tmprace = new Draenei;break;default:break;}switch (rank){case 1:tmprank = new President;break;case 2:tmprank = new Official;break;case 3:tmprank = new Elite;break;case 4:tmprank = new Member;break;case 5:tmprank = new Intern;break;default:break;}string m_Sex;if (Sex == 1){m_Sex = "男";}else{m_Sex = "女";}Allmember* ptemp = new Allmember(Id, Name, m_Sex, tmpwoker, tmprace, tmprank);ptemp->p_next = NULL;return ptemp;
}void read_member(Allmember* phead)
{ifstream ifs;ifs.open(FILENAME, ios::in);if (!ifs.is_open()){ifs.close();return;}char ch;ifs >> ch;if (ifs.eof()){ifs.close();return;}ifs.seekg(0, ios::beg);//因为在前面判断数据库是否为空的时候ifs移动了一个字符,因此这里需要将ifs指向置为初始int Id;string Name;int Sex;int worker;int race;int rank;while (ifs >> Id&&ifs >> Name&&ifs >> Sex&&ifs >> worker&&ifs >> race&&ifs >> rank){Allmember* pnew = newmember(Id,Name,Sex,worker,race,rank);phead->p_next = pnew;phead = pnew;}ifs.close();
}Allmember* initList()
{int Id = 0;string Name = "";string Sex = "";Worker* worker = NULL;Race* race = NULL;GuildRank* rank = NULL;Allmember* member = new Allmember(1, Name, Sex, worker, race, rank);member->p_next = NULL;return member;
}void showallmember(Allmember* phead)
{while (phead->p_next){phead->p_next->showInfo();phead = phead->p_next;}
}void savemember(Allmember* phead)
{int Id;string Name;int Sex;int worker;int race;int rank;ofstream ofs;ofs.open(FILENAME, ios::out);while (phead->p_next){Id = phead->p_next->getId();Name = phead->p_next->getName();Sex = phead->p_next->getSex();worker = phead->p_next->getWorker();race = phead->p_next->getRace();rank = phead->p_next->getGuildRank();ofs << Id << " "<< Name << " "<< Sex << " "<< worker << " "<< race << " "<< rank << " " << endl;phead = phead->p_next;}ofs.close();
}bool checkId(int Id, Allmember* phead)
{while (phead->p_next){if (Id == phead->p_next->getId()){return false;}phead = phead->p_next;}return true;
}bool checkrank(Allmember* phead)
{while (phead->p_next){if (1 == phead->p_next->getGuildRank()){return false;}phead = phead->p_next;}return true;
}void addmember(Allmember* phead)
{int Id;string Name;int Sex;int worker;int race;int rank;while (true){int availableChars = (int)cin.rdbuf()->in_avail();if (availableChars){cin.ignore(numeric_limits<streamsize>::max(), '\n');}cout << "请输入新会员编号=>";cin >> Id;if (cin.fail()) {cout << "输入内容不是整数,请重新输入!" << endl;cin.clear();continue;}if (Id < 1 || Id > 9999){cout << "输入编号超出范围(1~9999),请重新输入。" << endl;continue;}bool isOk = checkId(Id, phead);if (isOk){break;}else{cout << "存在重复的编号,请重新输入。" << endl;continue;}}while (true){int availableChars = (int)cin.rdbuf()->in_avail();if (availableChars){cin.ignore(numeric_limits<streamsize>::max(), '\n');}cout << "请输入新会员姓名=>";cin >> Name;if (cin.fail()) {cout << "输入内容错误,请重新输入!" << endl;cin.clear();continue;}break;}cout << "1、男  2、女" << endl;while (true){int availableChars = (int)cin.rdbuf()->in_avail();if (availableChars){cin.ignore(numeric_limits<streamsize>::max(), '\n');}cout << "请输入新会员性别=>";cin >> Sex;if (cin.fail()) {cout << "输入内容不是整数,请重新输入!" << endl;cin.clear();continue;}if (Sex < 1 || Sex > 2){cout << "输入性别选项超出范围(1~2),请重新输入。" << endl;continue;}break;}cout << "1、会长  2、官员  3、精英  4、会员  5、见习" << endl;while (true){int availableChars = (int)cin.rdbuf()->in_avail();if (availableChars){cin.ignore(numeric_limits<streamsize>::max(), '\n');}cout << "请输入新会员公会会阶=>";cin >> rank;if (cin.fail()) {cout << "输入内容不是整数,请重新输入!" << endl;cin.clear();continue;}if (rank < 1 || rank > 5){cout << "输入会阶选项超出范围(1~5),请重新输入。" << endl;continue;}if (rank == 1){bool isOk = checkrank(phead);if (isOk){break;}else{cout << "公会只允许一名会长,请重新输入。" << endl;continue;}}break;}cout << "1、兽人  2、巨魔  3、牛头人 4、被遗忘者  5、血精灵" << endl;cout << "6、人类  7、矮人  8、侏儒   9、暗夜精灵 10、德莱尼" << endl;while (true){int availableChars = (int)cin.rdbuf()->in_avail();if (availableChars){cin.ignore(numeric_limits<streamsize>::max(), '\n');}cout << "请输入新会员种族=>";cin >> race;if (cin.fail()) {cout << "输入内容不是整数,请重新输入!" << endl;cin.clear();continue;}if (race < 1 || race > 10){cout << "输入种族选项超出范围(1~10),请重新输入。" << endl;continue;}break;}switch (race){case 1:cout << "1、战士 2、猎人 3、萨满" << endl;cout << "4、潜行者 5、术士 6、死亡骑士" << endl;break;case 2:cout << "1、战士 2、猎人 3、萨满" << endl;cout << "4、潜行者 5、法师 6、牧师 7、死亡骑士" << endl;break;case 3:cout << "1、战士 2、猎人 3、萨满" << endl;cout << "4、德鲁伊 5、死亡骑士" << endl;break;case 4:cout << "1、战士 2、潜行者 3、法师" << endl;cout << "4、牧师 5、术士 6、死亡骑士" << endl;break;case 5:cout << "1、猎人 2、潜行者 3、法师" << endl;cout << "4、圣骑士 5、牧师 6、术士 7、死亡骑士" << endl;break;case 6:cout << "1、战士 2、潜行者 3、法师" << endl;cout << "4、圣骑士 5、牧师 6、术士 7、死亡骑士" << endl;break;case 7:cout << "1、战士 2、猎人 3、潜行者" << endl;cout << "4、圣骑士 5、牧师 6、死亡骑士" << endl;break;case 8:cout << "1、战士 2、潜行者 3、法师" << endl;cout << "4、术士 5、死亡骑士" << endl;break;case 9:cout << "1、战士 2、猎人 3、潜行者" << endl;cout << "4、德鲁伊 5、牧师 6、死亡骑士" << endl;break;case 10:cout << "1、战士 2、猎人 3、萨满" << endl;cout << "4、法师 5、圣骑士 6、牧师 7、死亡骑士" << endl;break;default:break;}while (true){int availableChars = (int)cin.rdbuf()->in_avail();if (availableChars){cin.ignore(numeric_limits<streamsize>::max(), '\n');}cout << "请输入新会员职业=>";int chjob = 0;cin >> chjob;if (cin.fail()) {cout << "输入内容不是整数,请重新输入!" << endl;cin.clear();continue;}switch (race){case 1:if (chjob < 1 || chjob > 6){cout << "输入职业选项超出范围(1~6),请重新输入。" << endl;continue;}worker = Orcjob[chjob - 1];break;case 2:if (chjob < 1 || chjob > 7){cout << "输入职业选项超出范围(1~7),请重新输入。" << endl;continue;}worker = Trolljob[chjob - 1];break;case 3:if (chjob < 1 || chjob > 5){cout << "输入职业选项超出范围(1~5),请重新输入。" << endl;continue;}worker = Taurenjob[chjob - 1];break;case 4:if (chjob < 1 || chjob > 6){cout << "输入职业选项超出范围(1~6),请重新输入。" << endl;continue;}worker = Forsakenjob[chjob - 1];break;case 5:if (chjob < 1 || chjob > 7){cout << "输入职业选项超出范围(1~7),请重新输入。" << endl;continue;}worker = BloodElfjob[chjob - 1];break;case 6:if (chjob < 1 || chjob > 7){cout << "输入职业选项超出范围(1~7),请重新输入。" << endl;continue;}worker = Humanjob[chjob - 1];break;case 7:if (chjob < 1 || chjob > 6){cout << "输入职业选项超出范围(1~6),请重新输入。" << endl;continue;}worker = Dwarfjob[chjob - 1];break;case 8:if (chjob < 1 || chjob > 5){cout << "输入职业选项超出范围(1~5),请重新输入。" << endl;continue;}worker = Gnomejob[chjob - 1];break;case 9:if (chjob < 1 || chjob > 6){cout << "输入职业选项超出范围(1~6),请重新输入。" << endl;continue;}worker = NightElfjob[chjob - 1];break;case 10:if (chjob < 1 || chjob > 7){cout << "输入职业选项超出范围(1~7),请重新输入。" << endl;continue;}worker = Draeneijob[chjob - 1];break;default:break;}break;}Allmember* pnew = newmember(Id, Name, Sex, worker, race, rank);while (phead->p_next){phead = phead->p_next;}phead->p_next = pnew;cout << "成功添加一名新会员,新会员信息如下:" << endl;pnew->showInfo();
}void statistics(Allmember* phead)
{int total = 0;int sexarr[2] = { 0 };int rankarr[5] = { 0 };int racearr[10] = { 0 };int jobarr[10] = { 0 };while (phead->p_next){++total;if (1 == phead->p_next->getSex()){++sexarr[0];}else{++sexarr[1];}switch (phead->p_next->getGuildRank()){case 1:++rankarr[0];break;case 2:++rankarr[1];break;case 3:++rankarr[2];break;case 4:++rankarr[3];break;case 5:++rankarr[4];break;default:break;}switch (phead->p_next->getRace()){case 1:++racearr[0];break;case 2:++racearr[1];break;case 3:++racearr[2];break;case 4:++racearr[3];break;case 5:++racearr[4];break;case 6:++racearr[5];break;case 7:++racearr[6];break;case 8:++racearr[7];break;case 9:++racearr[8];break;case 10:++racearr[9];break;default:break;}switch (phead->p_next->getWorker()){case 1:++jobarr[0];break;case 2:++jobarr[1];break;case 3:++jobarr[2];break;case 4:++jobarr[3];break;case 5:++jobarr[4];break;case 6:++jobarr[5];break;case 7:++jobarr[6];break;case 8:++jobarr[7];break;case 9:++jobarr[8];break;case 10:++jobarr[9];break;default:break;}phead = phead->p_next;}cout << "***************公会统计信息***************" << endl;cout << "公会总人数:" << total << endl;cout << "公会男性会员:" << sexarr[0] << endl;cout << "公会女性会员:" << sexarr[1] << endl;cout << "------------------------------------------" << endl;cout << "公会会长人数:" << rankarr[0] << endl;cout << "公会官员人数:" << rankarr[1] << endl;cout << "公会精英人数:" << rankarr[2] << endl;cout << "公会会员人数:" << rankarr[3] << endl;cout << "公会见习人数:" << rankarr[4] << endl;cout << "------------------------------------------" << endl;cout << "公会  兽人  人数:" << racearr[0] << endl;cout << "公会  巨魔  人数:" << racearr[1] << endl;cout << "公会 牛头人 人数:" << racearr[2] << endl;cout << "公会被遗忘者人数:" << racearr[3] << endl;cout << "公会 血精灵 人数:" << racearr[4] << endl;cout << "公会  人类  人数:" << racearr[5] << endl;cout << "公会  矮人  人数:" << racearr[6] << endl;cout << "公会  侏儒  人数:" << racearr[7] << endl;cout << "公会暗夜精灵人数:" << racearr[8] << endl;cout << "公会 德莱尼 人数:" << racearr[9] << endl;cout << "------------------------------------------" << endl;cout << "公会  战士  人数:" << jobarr[0] << endl;cout << "公会  猎人  人数:" << jobarr[1] << endl;cout << "公会  萨满  人数:" << jobarr[2] << endl;cout << "公会 潜行者 人数:" << jobarr[3] << endl;cout << "公会  法师  人数:" << jobarr[4] << endl;cout << "公会 德鲁伊 人数:" << jobarr[5] << endl;cout << "公会 圣骑士 人数:" << jobarr[6] << endl;cout << "公会  牧师  人数:" << jobarr[7] << endl;cout << "公会  术士  人数:" << jobarr[8] << endl;cout << "公会死亡骑士人数:" << jobarr[9] << endl;cout << "***************公会统计信息***************" << endl;
}void search(Allmember* phead)
{int Id;while (true){int availableChars = (int)cin.rdbuf()->in_avail();if (availableChars){cin.ignore(numeric_limits<streamsize>::max(), '\n');}cout << "请输入需要查找的编号=>";cin >> Id;if (cin.fail()) {cout << "输入内容不是整数,请重新输入!" << endl;cin.clear();continue;}while (phead->p_next){if (phead->p_next->getId() == Id){phead->p_next->showInfo();return;}phead = phead->p_next;}break;}cout << "查无此人!" << endl;
}void deletemenber(Allmember* phead)
{cout << "注:输入0取消删除操作。" << endl;int Id;while (true){int availableChars = (int)cin.rdbuf()->in_avail();if (availableChars){cin.ignore(numeric_limits<streamsize>::max(), '\n');}cout << "请输入需要删除的编号=>";cin >> Id;if (cin.fail()) {cout << "输入内容不是整数,请重新输入!" << endl;cin.clear();continue;}if (0 == Id){cout << "已取消删除操作。" << endl;return;}while (phead->p_next){if (phead->p_next->getId() == Id){string Name = phead->p_next->getName();Allmember* deltemp;deltemp = phead->p_next;phead->p_next = phead->p_next->p_next;delete deltemp;cout << Name << "已退出公会!" << endl;return;}phead = phead->p_next;}break;}cout << "查无此人!" << endl;
}void modmenber(Allmember* phead)
{Allmember* truephead = phead;cout << "注:输入0取消删除操作。" << endl;int Id;while (true){int availableChars = (int)cin.rdbuf()->in_avail();if (availableChars){cin.ignore(numeric_limits<streamsize>::max(), '\n');}cout << "请输入需要变更职务的编号=>";cin >> Id;if (cin.fail()) {cout << "输入内容不是整数,请重新输入!" << endl;cin.clear();continue;}if (0 == Id){cout << "已取消变更操作。" << endl;return;}while (phead->p_next){if (phead->p_next->getId() == Id){int newrank;cout << "1、会长  2、官员  3、精英  4、会员  5、见习" << endl;while (true){int availableChars = (int)cin.rdbuf()->in_avail();if (availableChars){cin.ignore(numeric_limits<streamsize>::max(), '\n');}cout << "请输入新的公会会阶=>";cin >> newrank;if (cin.fail()) {cout << "输入内容不是整数,请重新输入!" << endl;cin.clear();continue;}if (0 == newrank){cout << "已取消变更操作。" << endl;return;}if (newrank < 1 || newrank > 5){cout << "输入会阶选项超出范围(1~5),请重新输入。" << endl;continue;}if (newrank == 1){bool isOk = checkrank(truephead);if (isOk){break;}else{cout << "公会只允许一名会长,请重新输入。" << endl;continue;}}break;}int oldrank = phead->p_next->getGuildRank();if (oldrank == newrank){cout << "新会阶与原会阶一样。" << endl;return;}int Sex = phead->p_next->getSex();int worker = phead->p_next->getWorker();int race = phead->p_next->getRace();string Name = phead->p_next->getName();Allmember* temp= phead->p_next->p_next;delete phead->p_next;phead->p_next = newmember(Id, Name, Sex, worker, race, newrank);phead->p_next->p_next = temp;if (oldrank > newrank){cout << Name << "已晋升" << endl;}else{cout << Name << "已降职" << endl;}return;}phead = phead->p_next;}break;}cout << "查无此人!" << endl;
}void sortmenber(Allmember* phead)
{Allmember* truephead = phead;cout << "1、按照编号升序排列。" << endl;cout << "2、按照编号降序排列。" << endl;cout << "注:输入0取消删除操作。" << endl;int sortmod;while (true){int availableChars = (int)cin.rdbuf()->in_avail();if (availableChars){cin.ignore(numeric_limits<streamsize>::max(), '\n');}cout << "请输入需要排序的模式=>";cin >> sortmod;if (cin.fail()) {cout << "输入内容不是整数,请重新输入!" << endl;cin.clear();continue;}if (0 == sortmod){cout << "已取消变更操作。" << endl;return;}if (sortmod < 1 || sortmod > 2){cout << "输入选项超出范围(1~2),请重新输入。" << endl;continue;}break;}int total = 0;while (phead->p_next){++total;phead = phead->p_next;}if (total < 2){cout << "当前公会人数少于2人无法排序。" << endl;return;}phead = truephead;int* intarr = new int[total];Allmember** Allmemberarr = new Allmember* [total];int i = 0;while (phead->p_next){Allmemberarr[i] = phead->p_next;intarr[i] = phead->p_next->getId();++i;phead = phead->p_next;}int flag;for (int i = 0; i < total - 1; ++i){flag = 0;for (int j = 0; j < total - i - 1; ++j){if (sortmod == 1){if (intarr[j] > intarr[j + 1]){int tmp = intarr[j];intarr[j] = intarr[j + 1];intarr[j + 1] = tmp;Allmember* sorttemp = Allmemberarr[j];Allmemberarr[j] = Allmemberarr[j + 1];Allmemberarr[j + 1] = sorttemp;flag = 1;}}else{if (intarr[j] < intarr[j + 1]){int tmp = intarr[j];intarr[j] = intarr[j + 1];intarr[j + 1] = tmp;Allmember* sorttemp = Allmemberarr[j];Allmemberarr[j] = Allmemberarr[j + 1];Allmemberarr[j + 1] = sorttemp;flag = 1;}}}if (flag == 0){break;}}phead = truephead;for (int i = 0; i < total; ++i){phead->p_next = Allmemberarr[i];phead = phead->p_next;}phead->p_next = NULL;cout << "排序后结果:" << endl;showallmember(truephead);
}int main()
{showtable();Allmember* pHead = initList();Allmember* pQuit = NULL;read_member(pHead);int choice = 8;do {int availableChars = (int)cin.rdbuf()->in_avail();if (availableChars){cin.ignore(numeric_limits<streamsize>::max(), '\n');}cout << "主菜单选项=>" ;cin >> choice;system("cls");showtable();if (cin.fail()) {cout << "输入内容不是整数,请重新输入!" << endl;cin.clear();continue;}if (choice < 0 || choice> 7 ){cout << "输入数字超出范围,请重新输入。" << endl;continue;}switch (choice){case ADD:addmember(pHead);savemember(pHead);break;case LIS:showallmember(pHead);break;case DEL:deletemenber(pHead);savemember(pHead);break;case MOD:modmenber(pHead);savemember(pHead);break;case SER:search(pHead);break;case SOR:sortmenber(pHead);savemember(pHead);break;case CHE:statistics(pHead);break;default:break;}} while (choice);while (pHead){pQuit = pHead;pHead = pHead->p_next;delete pQuit;	}cout << "欢迎下次使用,再见。" << endl;return 0;
}

20230719修改:代码里有一处内存泄漏没有注意到。
在代码第974行(函数:void sortmenber(Allmember* phead)末尾)插入如下代码:

	showallmember(truephead);if (intarr != NULL){delete intarr;intarr = NULL;cout << "delete intarr" << endl;}if (Allmemberarr != NULL){delete Allmemberarr;Allmemberarr = NULL;cout << "delete Allmemberarr" << endl;}

这篇关于第一百一十天学习记录:C++实战:自我设计用单链表、多态和文件操作写一个公会人员管理系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/420873

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明