资源描述
C++课程设计报告
题 目: 学生成绩管理程序
课 程: C++程序设计
院 (部): 计算机与信息技术学院
专 业: 软件工程
班 级: 2015级4班
学生姓名: 魏和
学 号: 155606304
完成日期: 2016年6月20日
南阳师院软件工程专业C++语言课程设计报告
目 录
1 课程设计目的 1
2 任务与要求 1
3 主要数据结构(类 函数) 1
4 程序功能结构 1
5 功能测试 1
6 课程设计总结 1
7 附:课程设计源代码 1
C++语言课程设计报告书
1.课程设计目的
(1)学习综合运用C高级语言课程和其他先修课程的知识,提高分析和解决实际问题的的能力,进一步巩固、加深和拓宽所学的知识;进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。
(2)全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法;独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
(3)掌握程序设计中的常用算法和C语言的编程技巧和上机调试程序的方法。
(4)在参与一系列子项目的实践过程中,提高如何综合运用所学知识解决实际问题的能力,以及获得相关项目管理和团队合作等众多方面的具体经验。
2.课程设计任务与要求
任务:编写学生成绩管理程序,用于高等院校对学生成绩的管理。程序能够实现学生成绩列表、成绩查询、最低和最高成绩、成绩修改、按成绩排序、成绩分段统计、保存成绩表、退出管理程序等功能。
要求:每个学生对象的数据包括id(学号)、name(姓名)、sex(性别)、score[6](5门课的成绩和平均成绩),类的成员函数实现构造对象、输出对象数据、修改对象数据、计算平均成绩、提取对象数据等功能,其它功能由普通函数来实现。程序运行初始,应展示程序全部功能代码及选择界面,按照功能代码的选择可以测试相应的功能。
主界面如下:
3.主要数据结构(类,函数)
类:class Student
数据成员:id、name、sex、score[6]。
成员函数:
构造函数:
Student(string,string,char,float,float,float,float,float);
输出对象数据函数:void display();
修改学生成绩函数:void modify();
提取对象数据函数:string get_id();
计算平均成绩函数:void average();
普通函数:
输出主界面函数:void surface()
中调用
输出表头函数:void table()
4.程序功能结构
程序主要功能如图1所示。
功能选择
退出
最高最低成绩
查询学生成绩
输出成绩列表
图1 程序功能结构图
每个功能有确定的代码,选择功能对应的代码,如图2所示。即可测试相应的功能。
5.功能测试
┏━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 学生成绩管理程序 ┃
┃ ┃
┃功能选项(0-7): ┃
┃ 1——输出成绩列表 ┃
┃ 2——查询学生成绩 ┃
┃ 3——最高最低成绩 ┃
┃ 4——修改学生成绩 ┃
┃ 5——成绩排名列表 ┃
┃ 6——分段统计成绩 ┃
┃ 7——补考学生列表 ┃
┃ 0——退出 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━┛
6.课程设计总结
通过此次课程设计,使我更加扎实的掌握了有关编程方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!
课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。
7.附件:程序源代码
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
class Student
{
private:
string id;
string name;
char sex;
float score[6];
public:
Student(string i=" ",string nam=" ",char s='m',float s1=0,float s2=0,float s3=0,float s4=0,float s5=0);
void average();
void display();
void modify();
string get_id(){return id;}
float get_score(int n);
};
Student::Student(string i,string nam,char s,float s1,float s2,float s3,float s4,float s5)
{
id=i;
name=nam;
sex=s;
score[0]=0;
score[1]=s1;
score[2]=s2;
score[3]=s3;
score[4]=s4;
score[5]=s5;
average();
}
void Student::display()
{
cout<<setw(12)<<id<<setw(10)<<name<<" "<<sex<<setw(7)<<score[1]<<setw(7)<<score[2]<<setw(7)<<score[3]<< cout<<setw(12)<<id<<setw(10)<<name<<" "<<sex<<setw(7)<<score[1]<<setw(7)<<score[2]<<setw(7)
<<score[3]<<setw(7)<<score[4]<<setw(7)<<score[5]<<setw(7)<<score[0]<<endl;
}
void Student::modify()
{
int i;
cout<<"修改第几门课的成绩:";
cin>>i;
cout<<"输入该课程新成绩:";
cin>>score[i];
average();
}
void Student::average()
{
float sum=0;
for(int k=1;k<6;k++)
sum+=score[k];
score[0]=sum/5;
}
float Student::get_score(int n)
{
return score[n];
}
void surface()
{
cout<<"\n\n";
cout<<" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;
cout<<" ┃ 学生成绩管理程序 ┃"<<endl;
cout<<" ┃ ┃"<<endl;
cout<<" ┃ 设计人:魏栗君 ┃"<<endl;
cout<<" ┃ 2016 06 ┃"<<endl;
cout<<" ┃功能选项(0-7): ┃"<<endl;
cout<<" ┃ 1——输出成绩列表 ┃"<<endl;
cout<<" ┃ 2——查询学生成绩 ┃"<<endl;
cout<<" ┃ 3——最高最低成绩 ┃"<<endl;
cout<<" ┃ 4——修改学生成绩 ┃"<<endl;
cout<<" ┃ 5——成绩排名列表 ┃"<<endl;
cout<<" ┃ 6——分段统计成绩 ┃"<<endl;
cout<<" ┃ 7——补考学生列表 ┃"<<endl;
cout<<" ┃ 0——退出 ┃"<<endl;
cout<<" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl;
}
void table()
{cout<<setw(12)<<"Student id"<<setw(15)<<" Name sex"<<" score1 score2 score3 score4 score5 average"<<endl;}
void list(Student *p)
{
table();
for(int j=0;j<10;j++)
{
p[j].display();
}
cout<<endl;
}
void search(Student *p)
{
int i;
string m;
cout<<"输入要查询的学号";
cin>>m;
for(i=0;i<10;i++)
if(p[i].get_id()==m)
{
table();
p[i].display();
break;
};
if(i==10)
cout<<"查无此人"<<endl;
}
void max_min(Student *p)
{
float m=p[0].get_score(0),w=m;
int i,j,k;
for(i=1;i>10;i++)
{
float f=p[i].get_score(0);
if(f>m){m=f;k=i;}
else if(f>w){w=f;j=i;}
}
cout<<"The tiptpo score is:\n";
table();
p[k].display();
cout<<"The lowst score is:\n";
table();
p[j].display();
}
void sort(Student *p)
{
Student s;
int i,j,k;
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
if(p[k].get_score(0)<p[j].get_score(0)) k=j;
if(k!=i){s=p[i];p[i]=p[k];p[k]=s;}
}
list(p);
}
void change(Student *p)
{
int i;
string m;
cout<<"输入学号";
cin>>m;
for(i=0;i<10;i++)
if(p[i].get_id()==m)
{
table();
p[i].display();
p[i].modify();
cout<<"修改后的成绩"<<endl;
p[i].display();
break;
};
if(i==10)
cout<<"查无此人"<<endl;
}
void stat(Student *p)
{
cout<<" 90--100 80--89 70--79 60--69 0--59"<<endl;
for(int m=1;m<6;m++)
{
int s9=0,s8=0,s7=0,s6=0,s0=0;
for(int i=0;i<10;i++)
{
float f=p[i].get_score(m);
if(f>=90)s9++;
else if(f>=80)s8++;
else if(f>=70)s7++;
else if(f>=60)s6++;
else s0++;
}
cout<<"score"<<m<<" "<<s9<<setw(9)<<s8<<setw(9)<<s7<<setw(9)<<s6<<setw(9)<<s0<<endl;
}
}
void fail(Student *p)
{
table();
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
if(p[i].get_score(j)<60)
{
p[i].display();
break;
}
}
}
void choose(Student *p)
{
int n;
while(2)
{
cout<<"请选择(0-7):";
cin>>n;
switch(n)
{
case 1:
list(p);
break;
case 2:
search(p);
break;
case 3:
max_min(p);
break;
case 4:
change(p);
break;
case 5:
sort(p);
break;
case 6:
stat(p);
break;
case 7:
fail(p);
break;
}
if(n==0)exit(0);
surface();
}
}
Student stu[10]={
Student("1101310123","马斌",'m',83,87,95,99,89),Student("1101310124","柯海涛",'f',98,79,74,65,80),
Student("1101310125","李存良",'f',85,98,99,100,76),Student("1101310128","王家恒",'m',100,98,99,96,95),
Student("1101310129","黄龙",'m',75,60,52,68,66),Student("1101310217","魏栗君",'m',98,89,92,94,89),
Student("1101310213","孙柯",'f',90,67,55,72,41),Student("1101310217","唐小A",'m',63,87,70,69,80),
Student("1101310223","陈帅",'m',96,97,100,99,89),Student("1101310230","杜小B",'m',86,87,85,89,89)};
int main()
{
Student *pt=stu;
surface();
choose(pt);
return 0;
}
14
展开阅读全文