集中上机实习报告
姓 名:
学 号:
班 级:
时 间:
选 题:学生成绩管理系统
学生成绩管理系统
题目要求:
编写学生成绩管理系统:
有 5 个学生,每个学生有 2 门课成绩,从键盘上输入以上数据(学生信息
包括学号、姓名,以及 2 门课成绩),保存在一个文本文件中。
计算出每个学生的总成绩,并将学生数据(包括学生 2 门课的总成绩)按
总分由高到低排序后保存到磁盘文件 sort.txt 中。
统计平均成绩,不及格比例,及格比例、优良中所占比例。
要求用菜单方式选择功能
需求分析:
本题要求设计一个学生成绩管理系统,本系统要能从键盘上输入学生相关
信息,并保存在一个文本文件中,所以需要新建一个文本文件,并将输入的信
息存入其中。同时系统还要能计算每个学生的总分,并按总分排序、将结果保
存在 sort.txt 的文本文件中,所以此处同样要新建文本文件,并将数据重新排序。
系统还要能计算平均成绩及不及格比例、及格比例及优良中等各种比例。系统
要采用菜单方式选择功能。为了能够更友好的使用本系统,本系统同时也需要
一个简洁明了的界面。本题目中要求的是有 5 个学生,但是再设计过程中也应
该考虑到后续的可升级性,所以应该设计成很容易改变学生个数。本程序中对
于总成绩的理解是学生所有科目的成绩之和,对于平均成绩的理解是所有学生
所有科目的成绩的平均数,不及格及及格比例也是所有学生所有科目的总的各
种比例。
系统设计:
在分析了系统需求之后了解到了系统所需要的具体功能,同时也对系统的
大概设计思路有了一些想法。在经过具体思考后,终于得出了具体操作方案。
首先,建立一个 Student 类来保存学生的学号、姓名、成绩等信息;然后再
建立一个 SSMS 类(即 Students Scores Management System)来保存系统所需的
各种功能。
需要一个 void add()成员函数来添加学生信息;需要一个 void saveoriginal()
成员函数来保存添加入的学生信息到文本文件 original.txt 中;需要一个 void
showoriginal() 成 员 函 数 来 显 示 位 于 original.txt 中 的 信 息 ; 需 要 一 个 void
countTscore()成员函数来计算每个学生的总成绩;需要一个 void sort()成员函数
来按总分排序;需要一个 void savesorted()成员函数来保存排序后的信息到文件
sort.tx 中 t;需要一个 void showsorted()成员函数来显示位于 sort.txt 中的信息;
需要一个 void calculate()成员函数来计算平均成绩、不及格比例、及格比例及优
良中比例。
为了实现菜单方式选择功能,还需要一个 switch()函数,同时配合 switch()
函数使用的还应该有一个 do{ }while()函数以实现循环。
为了实现存入文件及从文件读出,我们还需要定义输入/输出文件流,需要
包含库文件 fstream。
为了使得输出界面美观,需要使用 setw()函数控制输出格式,需要包含库文
件 iomanip,同时,还需要清屏函数 system("cls")。
具体算法及函数设计思路:
void add()
本函数主要通过循环方式不断输入学生信息,在输入完成后调用 saveoriginal()
函数,进入文件保存过程。
void saveoriginal()
本函数通过循环方式将学生信息写入文本文件中。
void showoriginal()
本函数通过循环方式将学生信息输出到显示器上。
void countTscore()
本函数通过 for 循环将分数加起来。
void sort()
本函数通过冒泡排序法,通过比较总分大小排序。
void savesorted()
本函数通过循环方式保存学生信息到文本文件,此处比 void saveoriginal()
多一个总分。
void showsorted()
本函数通过循环方式输出。
void calculate()
本函数主要是计算各种比例及输出。
源码:
#include<iostream>
#include<iomanip>
#include<fstream>
#define SIZE 5 //设置学生数量
#define LENGTH 12 //控制输出间隔(setw(LENGTH))
using namespace std;
class Student //定义一个学生类,包含学生的信息
- 1
- 2
前往页