学生成绩管理系统C++程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
项目设计题目(学生成绩管理系统)
学号:姓名:自评成绩:成绩:
1.选题意义、依据
学生成绩系统的设计从学生的应用中而来,学生了解该系统的组成和运行过程,它贴近学生的生活能使学生更加方便的使用各个语句、函数、结构体等。
依据学生期末成绩表的格式。
2.系统功能设计与分析(功能模块说明)
系统主要用于从一个文件夹读入学生信息
(101 张三85 78 87
102 李斯57 59 60
103 王红84 79 87
104 赵子龙72 75 76
105 李洪磊88 98 89),包括学生学号、姓名、成绩(数学、英语、数据库),程序中引用了八个函数void Cscore(int); void Rank(int ave); void Listnumber(int i); void Listscore(int i); void Lookup(int); void Alter(int); void Dele(int &i); void Insert(int &i); 系统主要实现的功能有:查询、修改、删除、插入、成绩单(以学号排名)和成绩单(以名次排名)。
Cscore 函数主要是对学生进行排名。具有相同总分的学生具有相同的名次,例如:第三名和第四名具有相同的总分则在表中不会出现第四名,将出现两个第三名紧接着出现第五名学生的情况。
Rank 函数主要用于按平均分对学生进行备注。把学生分为四个等级:>90分为excellent,80—90分为medium,60—80分为qualified,<60分为disqualified。
Listnumber 函数主要用于把学生的信息(学号姓名数学英语数据库总分平均分名次备注)以学号排名的顺序用表的形式输出,方便学生查看。Listnumber 函数中还调用了Cscore 和Rank 函数。
Listscore 函数是把学生的信息以总成绩排名的形式输出。
Lookup 函数主要运用学号或姓名形式查询单个学生信息,如果存在则输出该学生信息(学号姓名数学英语数据库总分平均分名次备注),否则输出“Input message is error.”。
Alter 函数是修改指定学号的学生信息。主要用于修改指定学号学生的各科成绩并输出修改后的学生信息(学号姓名数学英语数据库总分平均分名次备注)。
Delete 函数用于删除指定学生的信息。可用两种方式删除:以学号形式删除学生信息,以姓名形式删除学生信息。若要删除了学生不存在则输出“message
error.”。
Insert 函数用来插入学生的信息,一次调用Insert 函数可以添加多个学生的信息。Insert 函数中还调用了Cscore 和Rank 函数。
3.涉及的主要知识点说明
(1)系统主要运用了函数的声明、定义、调用(值调用和地址调用)。
(2)对文件的读入操作。
(3)在平均分的求取上采用四舍五入的方式,运用了类型转换。
(4)多次运用if和for嵌套,在for嵌套中又运用了break语句。
(5)运用了switch。
(6)对字符数组的比较中运用了strcmp,还运用toupper把小写字母转换成大写。
(7)对学生信息进行的插入和有序删除操作。
(8)运用iomanip对输出进行美观。
4.创新性说明(怎么解决)
创新性:系统可以对具有相同总分学生的学生输出相同的名次。若存在三个相同的分数都为第二名,则在输出时出现三个第二名不会出现第三、四名,紧接着出现第五名。
解决方法:(1)用一个数组记录具有相同分数的人数,数组下标和学生信息所具有的下标相同;(2)删除相同的总分只保留其中一个分数;(3)对删除相同总分的分数按从高到底进行排序;(4)对各个学生的总分进行排名。
5.源代码
//******************************************************************
//Student achievement program
//This program has eight functions of students grade,including list
//score ranking,lookup,alter,delete,insert and rank.From the file read in
//student achievement.Scores of people have the same same place.
//******************************************************************
#include
#include
#include
#include
#include
#include
void Cscore(int);
void Rank(int ave);
void Listnumber(int i);
void Listscore(int i);
void Lookup(int);
void Alter(int);
void Dele(int &i);
void Insert(int &i);
using namespace std;
const int MAX=100;
struct student //定义学生信息结构体
{
int num;
char name[8];
int math;
int english;
int database;
int sum;
int average;
int score;
}stu[MAX];
int main() //主函数
{
int i,k;
char ch;
string filename;
ifstream infile;
cout<<"Please input the filenames: ";
cin>>filename;
infile.open(filename.c_str());
if (!infile)
{
cout<<"Can't open the input file."< return 1; } for (i=0; i { infile>>stu[i].num>>stu[i].name>>stu[i].math>>stu[i].english>>stu[i].database; stu[i].sum=stu[i].math+stu[i].english+stu[i].database; stu[i].average=int(float(stu[i].sum)/3+0.5); } i=i-1; cout< cout<<"Y or N 进入菜单栏"< cin>>ch; ch=toupper(ch); while (ch=='Y')