学生信息管理系统(C++)
来源:互联网 发布:淘宝开店挣钱吗 编辑:程序博客网 时间:2024/05/08 01:07
学生信息管理系统中学生信息包含学号,姓名,性别以及年龄,能够进行的操作有输入学生信息,添加,删除,修改和查询某个学生信息,还有显示全部学生信息和删除全部学生信息。程序的主体是一个student类,数据成员为学生信息,成员函数是对学生信息的操作,主要思路是将输入每个学生信息分别保存到student类的对象中,然后将这些对象保存到vector容器中,可以在容器内对学生信息进行添加,删除等操作,然后再将容器上的内容写入到文本文件上,这样之前写入的学生信息就不会随着退出系统而消失。
下面是程序源码:
#include<iostream>#include<fstream>#include<sstream>#include<string>#include<vector>#include<algorithm>using namespace std;class student{ friend vector<student> save(); friend void print(vector<student>&); friend void write(vector<student>&);public: student() = default; ~student() = default; void set(); //初始化信息,第一次对信息的录入 void add(); //添加学生信息 void del(); //删除某学生信息 void change(); //修改某学生信息 void search(); //查询某学生信息 void display(); //显示全部学生信息 void alldel(); //删除全部学生信息private: string name, sex, num, age; //学生信息包含学号,姓名,性别,年龄};vector<student> save();void print(vector<student>&);void write(vector<student>&);void student::set(){ string setname, setsex, setnum, setage; vector<student> vec=save(); cout << "当学号输入为'#'时,停止输入!!!" << endl; while (1) //依次录入相应个数的学生信息 { cout << "请输入学号:" << endl; cin >> setnum; if (setnum == "#") break; if (setnum != "#") { student data; data.num = setnum; cout << "请输入姓名:" << endl; cin >> setname; data.name = setname; cout << "请输入性别:" << endl; cin >> setsex; data.sex = setsex; cout << "请输入年龄:" << endl; cin >> setage; data.age = setage; vec.push_back(data); } } write(vec);}void student::add(){ string addnum, addage,addname, addsex; vector<student> vec = save(); student data; cout << "请输入您要添加的数据" << endl; cout << "请输入学号:" << endl; cin >> data.num; cout << "请输入姓名:" << endl; cin >> data.name; cout << "请输入性别:" << endl; cin >> data.sex; cout << "请输入年龄:" << endl; cin >> data.age; vec.push_back(data); write(vec); cout << "添加成功!" << endl;}void student::del(){ vector<student> vec=save(); print(vec); size_t k; cout << "你想删除第几个?" << endl; cin >> k; k = k - 1; if (k >= vec.size()) { cerr << "out of the size!" << endl; exit(1); } auto p = vec.begin() + k; vec.erase(p); //删除迭代器所指的对象 write(vec); cout << "删除成功!" << endl;}void student::change(){ vector<student> vec=save(); print(vec); int k; student item; cout << "修改第几个数据?" << endl; cin >> k; k = k - 1; cout << "请输入新的数据:" << endl; cout << "请输入学号:" << endl; cin >> item.num; cout << "请输入姓名:" << endl; cin >> item.name; cout << "请输入性别:" << endl; cin >> item.sex; cout << "请输入年龄:" << endl; cin >> item.age; *(vec.begin() + k) = item; write(vec); cout << "修改成功!" << endl;}void student::search(){ string searchnum, searchname; vector<student> vec=save(); char ch; int w = 0; cout << "a.按学号查找 b.按姓名查找" << endl; cout << "请输入a或者b!" << endl; cin >> ch; if (ch == 'a') { cout << "请输入学号!" << endl; cin >> searchnum; for (auto& i : vec) if (i.num == searchnum) { w = 1; cout << " 学号 姓名 性别 年龄 " << endl; cout << " " << i.num; cout << " " << i.name; cout << " " << i.sex; cout << " " << i.age << endl; } if (w == 0) cout << "无此人信息!" << endl; } else if (ch == 'b') { cout << "请输入姓名!" << endl; cin >> searchname; for (auto& i : vec) if (i.name == searchname) { w = 1; cout << " 学号 姓名 性别 年龄 " << endl; cout << " " << i.num; cout << " " << i.name; cout << " " << i.sex; cout << " " << i.age << endl; } if (w == 0) cout << "无此人信息!" << endl; } else cout << "没有此选项!" << endl;}void student::display(){ vector<student> vec=save(); print(vec);}void student::alldel(){ vector<student> vec = save(); vec.erase(vec.begin(), vec.end()); write(vec);}vector<student> save() //将文本中的学生信息保存到vector上{ vector<student> vec; string line; ifstream infile("C:/Users/leizh/Documents/Visual Studio 2015/Projects/SIMC/SIMC/file.txt", iostream::in); if (!infile) { cerr << " open error" << endl; exit(1); } while (getline(infile, line)) { student data; istringstream item(line); item >> data.num >> data.name >> data.sex >> data.age; vec.push_back(data); } infile.close(); return vec;}void write(vector<student>& v) // 将vector上保存的学生信息写入到文本中{ sort(v.begin(), v.end(), [](const student& a, const student& b) {return a.num < b.num; }); // 对学生信息按学号排序 ofstream outfile("C:/Users/leizh/Documents/Visual Studio 2015/Projects/SIMC/SIMC/file.txt", iostream::out); if (!outfile) { cerr << " open error" << endl; exit(1); } for (auto& i : v) { outfile << i.num << " "; outfile << i.name << " "; outfile << i.sex << " "; outfile << i.age << " " << endl; } outfile.close();}void print(vector<student>& v) //输出vector上保存的学生信息{ cout << " 学号 姓名 性别 年龄 " << endl; for (auto& i : v) { cout << " " << i.num; cout << " " << i.name; cout << " " << i.sex; cout << " " << i.age << endl; }}student stu;void main(){ void menu(); menu(); char ch; cin >> ch; while (ch != '0') { system("cls"); //清屏 switch (ch) { case '1':stu.set(); break; case '2':stu.add(); break; case '3':stu.del(); break; case '4':stu.change(); break; case '5':stu.search(); break; case '6':stu.display(); break; case '7':stu.alldel(); break; case '0':cout << "退出系统!"; break; default:cout << "没有此选项!" << endl; break; } menu(); cin >> ch; }}void menu() //主菜单{ cout << endl << 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;}
Demo:
阅读全文
0 0
- C#-学生信息管理系统
- 学生信息管理系统(C++)
- 学生信息管理系统(c/c++)
- 学生信息管理系统C实现
- C语言学生信息管理系统
- c语言学生信息管理系统
- 学生信息管理系统(c++)
- 学生信息管理系统 c语言
- object c 学生信息管理系统
- 学生成绩信息管理系统(c++)
- C语言:学生信息管理系统
- c语言学生信息管理系统
- 学生信息管理系统(C语言版)
- C语言 学生信息管理系统
- C语言学生信息管理系统
- 学生信息管理系统(c语言)
- 学生信息管理系统(C语言)
- C语言实现学生信息管理系统
- 寻找丑数
- UE4出现texture streaming poor over红字解决方案
- 数组的一些常用方法分析 介绍
- maven仓库--私服(Nexus的配置使用)
- 友元函数和友元类
- 学生信息管理系统(C++)
- POJ3414 Pots —— BFS + 模拟
- 大数据预科班3_小案例
- pandas选取一列画直方图
- Qt--委托
- <9>—— Palindrome Number
- Java虚拟机体系结构
- java中的匿名内部类总结
- Leetcode日志--LongestPalindromicSubstring