用C++编写一个学生成绩管理系统

"学生成绩管理系统" 本节将讨论如何使用 C++ 编写一个学生成绩管理系统,并编写一个友元函数能完成对成绩进行从高到低排序。 我们需要定义一个学生类,用于存储学生的信息,包括姓名、学号、年龄、性别、英语成绩、数学成绩、计算机成绩和平均成绩。在这个类中,我们还需要定义一些成员函数,用于添加、删除、修改和显示学生信息。 下面是学生类的定义: ```cpp class student { public: char name[20]; int num; int age; char sex; double en; double ma; double com; double ave; student *next; student *stu; student(); // 构造函数 void display(); student(char n[20], int nu, int ag, char se, double e, double m, double c, double av); ~student(); // 析构函数 void Set(); // 添加 void Delete(); // 删除 void Alter(); // 修改 void List(); // 显示 void aver(); // 计算平均成绩 void ssearch(); // 查询 // 友元函数 friend void caozuo(int); }; ``` 在这个类中,我们定义了一个构造函数 `student()`, 用于初始化学生对象的成员变量。我们还定义了一个析构函数 `~student()`, 用于释放学生对象所占用的内存。 在 `student` 类中,我们还定义了一些成员函数,用于实现学生信息的添加、删除、修改和显示。例如,`Set()` 函数用于添加一个新的学生信息,`Delete()` 函数用于删除一个学生信息,`Alter()` 函数用于修改一个学生信息,`List()` 函数用于显示所有学生信息。 此外,我们还定义了一个友元函数 `caozuo(int)`, 用于对成绩进行从高到低排序。 下面是 `student` 类的实现: ```cpp student::student() { strcpy(name, "nomame"); num = 0; sex = 'M'; age = 0; double en = 0; double ma = 0; double com = 0; double ave = 0; } student::student(char n[20], int nu, int ag, char se, double e, double m, double c, double av) { strcpy(name, n); num = nu; sex = se; age = ag; en = e; ma = m; com = c; ave = av; } student::~student() {} void student::aver() { double z; z = en + ma + com; ave = z / 3; } ``` 在上面的代码中,我们实现了 `student` 类的构造函数和析构函数。我们还实现了 `aver()` 函数,用于计算学生的平均成绩。 现在,让我们来实现添加、删除、修改和显示学生信息的函数。 我们实现 `Set()` 函数,用于添加一个新的学生信息: ```cpp void student::Set() { cout << "请输入姓名:" << endl; cin >> name; cout << "请输入学号:" << endl; cin >> num; cout << "请输入年龄:" << endl; cin >> age; cout << "请输入性别:" << endl; cin >> sex; cout << "请输入英语成绩:" << endl; cin >> en; cout << "请输入数学成绩:" << endl; cin >> ma; cout << "请输入计算机成绩:" << endl; cin >> com; s[i] = new student(name, num, age, sex, en, ma, com, ave); i++; } ``` 接下来,我们实现 `Delete()` 函数,用于删除一个学生信息: ```cpp void student::Delete() { cout << "请输入您要删除的学生姓名:" << endl; cin >> name; for (int h = 0; h < i; h++) { if (strcmp(name, s[h]->name) == 0) { i--; s[h] = s[h + 1]; h++; } else cout << "您要求删除的对象本来就不存在!请检查输入的正确性!"; } } ``` 然后,我们实现 `Alter()` 函数,用于修改一个学生信息: ```cpp void student::Alter() { cout << "请输入您要修改的学生的姓名:" << endl; cin >> name; for (int h = 0; h < i; h++) { if (strcmp(name, s[h]->name) == 0) { int nu; int ag; char se; double e; double m; double c; cout << "请输入新的姓名:" << endl; cin >> name; cout << "请输入新的学号:" << endl; cin >> nu; cout << "请输入新的年龄:" << endl; cin >> ag; cout << "请输入新的性别:" << endl; cin >> se; cout << "请输入新的英语成绩:" << endl; cin >> e; cout << "请输入新的数学成绩:" << endl; cin >> m; cout << "请输入新的计算机成绩:" << endl; cin >> c; s[h]->name = name; s[h]->num = nu; s[h]->age = ag; s[h]->sex = se; s[h]->en = e; s[h]->ma = m; s[h]->com = c; } } } ``` 我们实现 `List()` 函数,用于显示所有学生信息: ```cpp void student::List() { for (int h = 0; h < i; h++) { cout << "名字:" << s[h]->name << " " << "学号:" << s[h]->num << " " << "性别:" << s[h]->sex << "年龄:" << s[h]->age << "英语:" << s[h]->en << " " << "数学:" << s[h]->ma << " " << "计算机:" << s[h]->com << endl; } } ``` 现在,让我们来实现友元函数 `caozuo(int)`, 用于对成绩进行从高到低排序: ```cpp void caozuo(int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n - i - 1; j++) { if (s[j]->ave < s[j + 1]->ave) { student *temp = s[j]; s[j] = s[j + 1]; s[j + 1] = temp; } } } } ``` 在上面的代码中,我们使用了冒泡排序算法对成绩进行从高到低排序。 我们已经实现了一个学生成绩管理系统,能够添加、删除、修改和显示学生信息,并且能够对成绩进行从高到低排序。




















剩余12页未读,继续阅读

- weisme2013-03-22一般般,还有错
- _喵星星2012-12-25思路很清晰,,但是有错误,编译通不过
- 小斯加纳什2013-06-17编译不过去啊

- 粉丝: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 2020 年度计算机视觉课程实习作业任务
- 计量自动化系统在计量运维工作中应用.docx
- 电气自动化技术在生产运行电力系统中的运用探讨1.docx
- 新时期网页设计中计算机图像处理技术应用研究.docx
- 室内无线网络论文:室内无线传感器网络簇头节点.doc
- 基于OBE视角的工程项目管理课程教学改革与探讨.docx
- Java程序分析研究报告第1-4章练习题参考标准答案.doc
- Excel表格模板:写字楼装修装潢报价(预算表).xlsx
- 单片机多模式带音乐跑马灯设计文档.doc
- 清华大学计算机系图形学试题.doc
- 电力系统信息网络安全防护及措施分析.docx
- 基于单片机的酒精测试仪大学本科方案设计书方案设计书开题报告书.doc
- NET的中小型企业项目管理平台完整需求分析.doc
- 工程施工企业项目管理中的博弈分析.doc
- 计算机视觉领域常用的工具代码合集
- 透明计算课程移动医疗电子病历大数据.ppt


