C++实现:学生管理系统(详细解析) 您所在的位置:网站首页 学生管理系统系统结构图 C++实现:学生管理系统(详细解析)

C++实现:学生管理系统(详细解析)

2023-09-16 09:46| 来源: 网络整理| 查看: 265

课程设计报告 1.题目要求

学生成绩管理系统

(1)增加记录:要求可以连续增加多条记录。 (2)查找:可以根据姓名(或学号)查找某个学生的课程成绩,查找某门课程成绩处于指定分数段内的学生名单等等。可以实现模糊查询,即输入名字的一部 分,可以列出满足条件的所有记录。再从这个记录中进行二次选择。 (3)删除一个学生的记录:要求可以先查找,再删除。删除前,要求用户确认。 (4)成绩修改:若输入错误可进行修改;要求可以先查找,再修改。 (5)统计分析:对某个班级学生的单科成绩进行统计,求出平均成绩;求平均成绩要求实现函数的重载,既能求单科的平均成绩,又能求三科总分的平均成绩。 求出一门课程标准差和合格率; (6)排序功能:要求按总分进行排序(从高到低),若总分相同,则按数学排序; 若总分和数学相同,则按物理排序;若总分和各科成绩都相同,则按学号排 序; (7)文件操作:可以打开文件,显示班级的所有学生信息;可以将增加或修改后的成绩重新写入文件;可以将排序好的信息写入新的文件;

2.需求分析

基本思路

设计一个学生的类。类的设计测试数据的记录和将要实现的功能。学生成绩

管理系统有若干学生成绩记录组成,学生一条记录包括:学号、姓名、数学

成绩、物理成绩和英语成绩。主函数显示功能菜单,供用户选择操作。每步操

作之前,都要显示菜单。在主函数中调用类的方法。

编译环境

在VS2019中运行

3.整体设计

【1】录入学生信息 【2】显示学生信息 【3】修改学生信息 【4】查找学生信息 【5】删除学生信息 【6】学生信息文件 【7】成绩排序功能 【8】存入新文件 【9】统计分析成绩 请选择功能:

4.详细设计 主函数设计 int main() { int n,i=1; student_system s; do { cout string name; string ID; float math; float english; float physics; float sum; }; class student_system { private: float average=0; float standard=0; float physics_average; float math_average; float english_average; float physics_standard = 0; float math_standard = 0; float english_standard = 0; float math_num; float physics_num; float english_num; float num; student h; vector a = {50,h}; int j = 0; public: int g=0; void display();//文件输入功能 void inputfile();//信息录入 void showfile();//显示功能 void amendfile();//修改功能 void findfile();//寻找功能 void dfindfile();//单个寻找功能 void deletefile();//删除功能 void Mfindfile();//模糊寻找 void Ffindfile();//成绩范围寻找 void rankfile();//排序功能 void storefile();//文件输出存储 void statistics();//统计分析功能 }; 文件输入功能

注意:下面的展示需将文件“成绩.txt”放入同级文件目录中,也可复制完整路径打开,如下: 在这里插入图片描述

//文件输入 void student_system::display() { string b[50][5]; string filename; cout filename; ifstream infile(filename.c_str(), ios::in);//读入文件信息,注意文件名字是“成绩.txt”,并且该文件要存到程序所在的文件夹中 if (!infile) { cerr a[j].english >> a[j].physics) { a[j].sum = a[j].math + a[j].english + a[j].physics; MAX++; j++; } }

效果如下

在这里插入图片描述

在这里插入图片描述

文件输出功能 //文件输出 void student_system::storefile() { string filename; cout > filename; ofstream outfile(filename.c_str(), ios::out); if (!outfile) { cerr a[j].sum = a[j].math + a[j].english + a[j].physics; cout if (a[i].math >= 60) math_num++; else continue; } cout if (a[i].physics >= 60) physics_num++; else continue; } cout int n, k; cout j; j--; cout int n; cout n; switch (n) { case 1: dfindfile(); break; case 2: Ffindfile(); break; case 3: Mfindfile(); break; default: break; } }

在这里插入图片描述

删除学生信息 //删除学生信息 void student_system::deletefile() { int find; do { cout find; j = find - 1; cout int n; cout n; switch (n) { case 1: dfindfile(); break; case 2: Ffindfile(); break; case 3: Mfindfile(); break; default: break; } } 1.单个信息查找 //单个查找学生信息 void student_system::dfindfile() { int n=1; string name,ID1; int find; cout n; switch (n) { case 1: cout find; j = find - 1; break; case 2: cout ID1; for (int i = 0; i j = i; break; } else if (a[i].ID != ID1 && i if (a[i].name == name) { j = i; break; } else if (a[i].name != name && i char m[20]; int n; int s[50]; do { int z = 0; cout m; char* str = m; char h[7],H[20]; for (int j = 0; j s[z] = j; z++; cout j = s[i]; string str2 = a[j].name; string str3 = a[j].ID; str2.copy(h, 7, 0); *(h + strlen(h)) = '\0'; str3.copy(H, 20, 0); *(H + strlen(H)) = '\0'; char* str1 = h; char* str4 = H; if (strstr(str1, str) != NULL || strstr(str4, str) != NULL) { cout case 1: cout cout cout case 0: for (int i = 0; i i; j--) if (a[i].sum


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有