学生管理系统

    技术2024-08-02  69

    @学生管理系统

    石家庄铁道大学小学期作业

    记录

    直接上代码:

    //main.cpp: #include "Stu_manage_stl.h" using namespace std; int main() { int choice; Stu_manage_stl st; while (true) { st.show_meau(); cout << "请输入你的选择" << endl; cin >> choice; switch (choice) { case 1: st.creat_txt(); break; //(1)创建功能:创建存储学生信息的文件,文件路径和文件名可以输入。 case 2: st.export_(); break; //(2)文件导入:输入文件路径和文件名读取文件内全部学生信息,需要判断文件是否存在。 case 3: st.show_(); break; //(3)显示功能:全部学生记录的显示 case 4: st.add_num(); break; //(4)输入功能:一.次输入n位同学的基本信息,n可以输入。 case 5: st.Del_stu(); break; //(5)删除功能:按学号删除一位学生记录。 case 6: st.change_stu(); break; //(6)修改功能:按学号修改-位学生记录。 case 7:st.find(); break; //(7)查找功能:按学号查找学生记录。 case 8:st.sum_aver(); break; //(8)汇总功能:计算学生的平均分和总分。 case 9:st.sort_(); break; //(9)排序功能:按学号或总分进行升序或降序排序。 case 10: st.import_(); break; //需要先进行 操作1.创建文件 //(10)导出功能:将学生信息输出到文件中。 case 11: st.insert_(); break; //(11)插入功能:可根据需要添加n位学生信息到指定位置,n可以输入。 case 12:st.exit_System(); break; // 退出 break; default: break; } } return 0; } //class Stu_manage_stl.h #pragma once #include<vector> #include<fstream> #include<iostream> #include<algorithm> #include<string> using namespace std; typedef struct StuInfo { string stu_name; int stu_num; float Chinese, Math, Eng, aver, sum_; StuInfo(int num, string name, float m, float e, float c, float a = 0, float s = 0) { stu_num = num, stu_name = name; Math = m; Eng = e; Chinese = c; aver = a; sum_ = s; } StuInfo() {}; }StuInfo; class Stu_manage_stl { vector<Stu_manage_stl> stu_vector; StuInfo stu_info; int now_num;// mark now the number of students public: Stu_manage_stl(StuInfo ); Stu_manage_stl(); ~Stu_manage_stl(); void creat_txt(); void show_meau(); void add_num(); void show_info_all(); void show_info_id(int x); void show_(); int get_id() { return this->stu_info.stu_num; } void import_(); void export_(); int get_file_lines(string path); void Del_stu(); void change_stu(); void find(); void sum_aver(); void sort_(); friend bool cmp1(Stu_manage_stl x1, Stu_manage_stl x2); friend bool cmp2(Stu_manage_stl x1, Stu_manage_stl x2); friend bool cmp3(Stu_manage_stl x1, Stu_manage_stl x2); friend bool cmp4(Stu_manage_stl x1, Stu_manage_stl x2); void insert_(); void exit_System() { cout << "欢迎下次使用" << endl; system("pause"); exit(0); } }; //class Stu_manage_stl.cpp #include "Stu_manage_stl.h" Stu_manage_stl::Stu_manage_stl() {}; bool cmp1(Stu_manage_stl x1, Stu_manage_stl x2); bool cmp2(Stu_manage_stl x1, Stu_manage_stl x2); bool cmp3(Stu_manage_stl x1, Stu_manage_stl x2); bool cmp4(Stu_manage_stl x1, Stu_manage_stl x2); Stu_manage_stl::Stu_manage_stl(StuInfo x ) { this->now_num = 0; this->stu_info = x; } Stu_manage_stl::~Stu_manage_stl() {} void Stu_manage_stl::creat_txt() { cout << "in put the file's path:"; string file_path; cin >> file_path; ifstream ifs(file_path, ios::in); if (ifs.is_open()) { cout << "success to creat!" << endl; ifs.close(); } else { cout << "fail to creat" << endl; ifs.close(); } } void Stu_manage_stl::show_meau() { cout << "***学生管理系统***" << endl; cout << "***1.创建***" << endl; cout << "***2.导入***" << endl; cout << "***3.显示***" << endl; cout << "***4.输入***" << endl; cout << "***5.删除***" << endl; cout << "***6.修改***" << endl; cout << "***7.查询***" << endl; cout << "***8.汇总***" << endl; cout << "***9.排序***" << endl; cout << "***10.导出***" << endl; cout << "***11.插入***" << endl; cout << "***12.退出***" << endl; system("pause"); } void Stu_manage_stl::add_num() { int added_num = 0; cout << "请输入想要添加学生的数量" << endl; cin >> added_num; if (added_num > 0) { int id; float math, chinese, eng; string name; for (int i = 0; i < added_num; i++) { StuInfo tmp; cout << "学生姓名"; cin >> tmp.stu_name; cout << "学生学号"; cin >> tmp.stu_num; cout << "语文成绩"; cin >> tmp.Chinese; cout << "英语成绩"; cin >> tmp.Eng; cout << "数学成绩"; cin >> tmp.Math; this->stu_vector.push_back(tmp); cout << "--------------------------------------------------" << endl; } cout << "学生添加成功!" << endl; } else { cout << "输入数据有误" << endl; } this->now_num += added_num; system("pause"); system("cls"); } void Stu_manage_stl::show_info_all() { cout << "当前共有 " << now_num << " 学生" << endl; for (auto i = this->stu_vector.begin(); i != this->stu_vector.end(); i++) this->show_info_id(i->get_id()); system("pause"); system("cls"); } void Stu_manage_stl::show_info_id(int idx) { vector<Stu_manage_stl> ::iterator itor= stu_vector.begin(); for (auto i = this->stu_vector.begin(); i != this->stu_vector.end(); i++) { if (i->get_id() == idx) { itor = i; break; } } cout << "name : " << itor->stu_info.stu_name << "\t id : " << itor->stu_info.stu_num << "\tmath : " << itor->stu_info.Math << "\tchinese : " << itor->stu_info.Chinese << "\teng : " << itor->stu_info.Eng << endl; } void Stu_manage_stl::show_() { cout << " 1.show all stu 2.input the id you want to show:"; int choice; cin >> choice; if (choice == 1) { this->show_info_all(); } else { cout << "in put the id:"; int idx; cin >> idx; this->show_info_id(idx); } } void Stu_manage_stl::import_() { cout << " input the file''s path or directly the name(when cin the name The default is in the current file)" << endl; cout << "path or name: "; string path_or_name; cin >> path_or_name; ofstream ofs(path_or_name, ios::out); if (ofs.is_open()) { for (auto itor = this->stu_vector.begin(); itor != this->stu_vector.end(); itor++) ofs << "name: " << itor->stu_info.stu_name << "\t id: " << itor->stu_info.stu_num << "\tmath: " << itor->stu_info.Math << "\tchinese: " << itor->stu_info.Chinese << "\teng: " << itor->stu_info.Eng << endl; cout << "success to import to " << path_or_name << endl; ofs.close(); } else { cout << " fail to open!" << endl; ofs.close(); } system("paues"); system("cls"); } void Stu_manage_stl::export_() { cout << "cin the file's name or path you want to export:"; string name_or_path; cin >> name_or_path; int lines = this->get_file_lines(name_or_path); ifstream ifs(name_or_path, ios::in); cout << "the file has" << lines << " students" << endl; for (int i = 0; i < lines; i++) { StuInfo tmpp; string absorb;// used to absorb the such as "name" "id" ifs >>absorb >>tmpp.stu_name >> absorb>>tmpp.stu_num >>absorb>> tmpp.Math >>absorb>> tmpp.Chinese >>absorb >>tmpp.Eng; Stu_manage_stl tmp(tmpp); this->stu_vector.push_back(tmp); } this->now_num += lines; system("pause"); system("cls"); } int Stu_manage_stl::get_file_lines(string path) { int lines=0; ifstream ifs(path, ios::in); if (ifs.is_open()) { string tmp; while (getline(ifs, tmp, '\n')) { lines++; } ifs.close(); } else { ifs.close(); return -1; } return lines; } void Stu_manage_stl::Del_stu() { cout << "cin the stu's id you want to delete: "; int id = 0; cin >> id; bool flag = false; for (auto i = this->stu_vector.begin(); i != this->stu_vector.end(); i++) { if (i->get_id() == id) { flag = true; break; } } if (flag == true) for (auto i = this->stu_vector.begin(); i != this->stu_vector.end(); i++) { if (i->get_id() == id) { this->stu_vector.erase(i); break; } } else cout << "flil to find this student" << endl; system("pause"); system("cls"); } void Stu_manage_stl:: change_stu() { cout << "cin the stu's id you want to change:"; int idx; cin >> idx; bool flag = false; for (auto i = this->stu_vector.begin(); i != this->stu_vector.end(); i++) { if (i->get_id() == idx) { flag = true; break; } } if (flag == true) for (auto i = this->stu_vector.begin(); i != this->stu_vector.end(); i++) { if (i->get_id() == idx) { cout << "学生姓名"; cin >> i->stu_info.stu_name; cout << "学生学号"; cin >> i->stu_info.stu_num; cout << "语文成绩"; cin >> i->stu_info.Chinese; cout << "英语成绩"; cin >> i->stu_info.Eng; cout << "数学成绩"; cin >> i->stu_info.Math; break; } } else cout << "flil to find this student" << endl; system("pause"); system("cls"); } void Stu_manage_stl::find() { cout << "cin the stu's id you want to find:"; int idx; cin >> idx; bool flag = false; for (auto i = this->stu_vector.begin(); i != this->stu_vector.end(); i++) { if (i->get_id() == idx) { flag = true; break; } } if (flag == true) for (auto i = this->stu_vector.begin(); i != this->stu_vector.end(); i++) { if (i->get_id() == idx) { this->show_info_id(idx); break; } } else cout << "flil to find this student" << endl; system("pause"); system("cls"); } void Stu_manage_stl::sum_aver() { for (auto i = this->stu_vector.begin(); i != this->stu_vector.end(); i++) { i->stu_info.sum_ = i->stu_info.Chinese + i->stu_info.Eng + i->stu_info.Math; i->stu_info.aver = (i->stu_info.sum_) / 3; cout <<"ID: " <<i->stu_info.stu_num<<"\tsum:" << i->stu_info.sum_ << "\taver: " << i->stu_info.aver << endl; } system("pause"); system("cls"); } void Stu_manage_stl::sort_() { cout << "1 . sort by id \n2.sort by sum marks:"; cout << "your choice:"; int choice; cin >> choice; if (choice == 1) { cout << "1.Ascending\t2.Descending :"; int A_D; cin >> A_D; if (A_D == 1) { auto itor_b = this->stu_vector.begin(); auto itor_e = this->stu_vector.end(); sort(itor_b, itor_e, cmp1); } else { auto itor_b = this->stu_vector.begin(); auto itor_e = this->stu_vector.end(); sort(itor_b, itor_e, cmp2); } } else if (choice == 2) { cout << "1.Ascending\t2.Descending :"; int A_D; cin >> A_D; if (A_D == 1) { auto itor_b = this->stu_vector.begin(); auto itor_e = this->stu_vector.end(); sort(itor_b, itor_e, cmp3); } else { auto itor_b = this->stu_vector.begin(); auto itor_e = this->stu_vector.end(); sort(itor_b, itor_e, cmp4); } } system("pause"); system("cls"); } bool cmp1(Stu_manage_stl x1, Stu_manage_stl x2) { return x1.stu_info.stu_num < x2.stu_info.stu_num; } bool cmp2(Stu_manage_stl x1, Stu_manage_stl x2) { return x1.stu_info.stu_num > x2.stu_info.stu_num; } bool cmp3(Stu_manage_stl x1, Stu_manage_stl x2) { return x1.stu_info.sum_ < x2.stu_info.sum_; } bool cmp4(Stu_manage_stl x1, Stu_manage_stl x2) { return x1.stu_info.sum_ > x2.stu_info.sum_; } void Stu_manage_stl::insert_() { int idx; cout << " insert by (id) cin>>id:"; cin >> idx; for (auto i = this->stu_vector.begin(); i != this->stu_vector.end(); i++) { if (i->stu_info.stu_num == idx) { StuInfo tmp; cout << "学生姓名"; cin >> tmp.stu_name; cout << "学生学号"; cin >> tmp.stu_num; cout << "语文成绩"; cin >> tmp.Chinese; cout << "英语成绩"; cin >> tmp.Eng; cout << "数学成绩"; cin >> tmp.Math; Stu_manage_stl tmpp(tmp); this->stu_vector.insert(i, tmpp); break; } } }

    怎么说呢对一个大一的来说,写个三四百行的程序,还是听难得,我是FW hh

    Processed: 0.014, SQL: 9