这个是最基本的系统
具备基本的增改删查,还有打印显示,非常原始,后期会不定期更新~~~
话不多说,直接上代码:
/ 数据结构_课程设计_学生管理系统.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 /*原作者:苏格扯底 *首次编写时间:2020年10月5日 * 完成时间:2020年10月7日 * * */ #include <iostream> #include <iomanip> #define I 0 //用于初始阶段指2录入单一学科分数 using namespace std; typedef struct file { string name;//姓名 int num;//学号 float score[10]; //分数(这里分数可以有不同学科) file* next; }file; class cla//班级 { public: cla(); cla(string );//班级名称 ~cla(); //更改班级名称 void changeclaname(string); /*创建学生列表*/ void createn(int); //打印学生列表 void print(); //插入新的学生信息 void insertx(string, int, float); //查找。输入姓名和学号,并返回所在节点 int searchx(string, int, file& s); //查找。输入姓名和学号 int searchx(string xname, int xnum); //删除,输入姓名和学号 void deletex(string , int); //查找重复 void derepeat(); //计算平均分 float averagescore(); private: file* head;//头节点 string classname;//班级名称 int stunum;//学生人数 int totalscore[10];//全部分数之和,用于计算平均分 }; cla::cla() { head = new file; head->next = NULL; this->stunum = 0; this->classname = "网络工程1班(默认设定班级)"; this->totalscore[I] = 0; } cla::cla(string classname) //给班级命名 { head = new file; this->classname = classname; this->stunum = 0; head->next = NULL; this->totalscore[I] = 0; } cla::~cla() { delete head; } void cla::changeclaname(string classname) { this->classname = classname; } void cla::createn(int n)//共插入i个学生 { file*s ,* p = head; for (int i = 0; i < n; i++) { //对单个学生进行录入信息 s = new file; cout << "请输入第" << i + 1 << "个人的姓名" << endl; cin >> s->name; cout << "请输入第" << i + 1 << "个人的学号" << endl; cin >> s->num; cout << "请输入第" << i + 1 << "个人的分数" << endl; cin >> s->score[I]; this->totalscore[I] += s->score[I]; //全体学生分数增加 cout << "第" << i + 1 << "个人输入完成\a" << endl << endl; s->next = p->next; p->next = s; p = s; this->stunum++; //学生人数+1 } } void cla::print() { cout << endl; cout<< right << setw(16) << "班级名称:" << this->classname << endl; cout<< right << setw(16) << "班级人数:" << this->stunum << endl; //第一行输出:编号|姓名|学号|分数 cout << left << setw(4) << "编号" << setw(12) << "|姓名" << setw(12) << "|学号" << setw(10) << "|分数" << endl; file* p = this->head->next; int i = 1; while (p) { //之后顺次输出:编号|姓名|学号|分数 cout << left << setw(4) << i++ << setw(12) << "|"+ p->name << "|"<<setw(11) << p->num << "|"<< setw(9) << p->score[I] << endl; p = p->next; } cout << left << setw(28)<< "均分|——————————" << "|" << setw(9) << this->averagescore() << endl; } void cla::insertx(string xname, int xnum, float xscore) { file* s, * p = head; s = new file; s->name = xname; s->num = xnum; s->score[I] = xscore; this->totalscore[I] += s->score[I]; //全体学生分数增加 this->stunum++; //学生人数+1 s->next = p->next; p->next = s; p = s; } int cla::searchx(string xname, int xnum) { file* p = head->next; while (p) { if (xnum == p->num) { if (xname == p->name) { return 1; //成功找到 } return -1; //错误,学号重复 } p = p->next; } return 0; //没有查询到该学生信息 } int cla::searchx(string xname, int xnum, file& s) //函数重载 { file* p = head->next; while (p) { if (xnum == p->num) { if (xname == p->name) { return 1; //成功找到 s = *p; } return -1; //错误,学号重复 } p = p->next; } return 0; //没有查询到该学生信息 } void cla::deletex(string xname, int xnum) { file* p = head,*s = p->next; while (s) { if (xnum == s->num) { if (xname == s->name) { p->next = s->next; delete s; return; } cout << endl << "出错,学号与姓名不符" << endl; return; } p = s; s = p->next; } cout << "没有查找到相关学生信息" << endl; } void cla::derepeat() { } float cla::averagescore() { return this->totalscore[I]/this->stunum; } int main() { cla clas("对外贸易一班"); clas.createn(1); clas.print(); clas.insertx("王五", 2, 100); clas.print(); clas.insertx("李四", 88, 100); clas.print(); cout << clas.searchx("李四", 88); clas.deletex("赵六", 88); }