C++课程设计 学生成绩排名系统

阅读: 评论:0

2024年2月3日发(作者:)

C++课程设计 学生成绩排名系统

淮 海 工 学 院 计算机工程学院

课程设计报告

设计名称: C++程序设计课程设计

姓 名: 学 号:

专业班级:

系 (院):

设计时间:

设计地点:

指导教师评语:

成绩:

签名:

年 月 日

C++程序设计课程设计报告 第 2 页 共 30 页

1.课程设计目的

本课程设计是网络工程专业重要的实践性环节之一,是在学生学习完《C++程序设计》课程后进行的一次全面的综合练习。本课程设计的目的和任务:

(1)巩固和加深学生对C++课程的基本知识的理解和掌握;

(2)掌握C++编程和程序调试的基本技能;

(3)利用C++进行简单软件设计的基本思路和方法;

(4)提高运用C++解决实际问题的能力;

(5)掌握书写程序设计说明文档的能力。

2.课程设计任务与要求:

要求:

1) 设计题目、设计要求以及系统功能需求分析;

2) 总体设计:包括模块说明、模块结构图和系统流程图;

3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;

4) 源程序代码及设计成果:完整源程序清单和设计成果;

5)总结: 调试分析过程描述:包括测试数据、测试输出结果以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等)包括课程设计过程中的学习体会与收获、对C++和本次课程设计的认识等内容.;

任务:

设计一个学生成绩排名系统,该系统的主要功能如下:

1) 具备对成绩的管理功能(添加、删除、排序)

2) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等)

3) 具备按学号、姓名、或课程名查询成绩的功能。

4)学生成绩应该保存在文件中。

备注:成绩记录以下信息:班级,学号,姓名,课程名,成绩(百分制)。可以用能表示学生成绩的结构体数组存储数据。

C++程序设计课程设计报告 第 3 页 共 30 页

3.课程设计说明书

(一)需求分析(功能设计)

一、模块说明

在本次程序设计中我设计了七个个模块,分别是添加学生信息,对学生信息进行排序,删除学生信息,统计学生信息,查找学生信息,保存学生信息,退出系统。

二、模块结构图

学生成绩排名系统

添加学生成绩

对学生成绩排序

删除学生成绩

统计学生成绩

查询学生成绩

保存学生成绩

退出系统

三.系统流程图

menu

n

N

n=1

n=2

N

n=3

Y

paixu()

delet()

N

n=4

Y

cal()

N

n=5

Y

search()

N

n=6

Y

baocun()

N

n=7

Y

tuichu

Y

add()

Y

C++程序设计课程设计报告 第 4 页 共 30 页

(二)详细设计(各模块流程图)

各功能模块设计思路及流程图:

【1】模块一:

添加学生信息

这一模块首先先输入你要输入的学生人数,然后通过键盘输入学生姓名,学生的班级,学生的学号,学

生的高等数学的成绩,大学英语的成绩以及C++的成绩,然后将其读入文件中。

流程图:

主菜单

输入n=1

输入a

i

Y

N

输入学生属性

不返回

输入c

Y

i++

c=0

Y

N

c=0

N

【2】模块二:

对学生成绩进行排序

这一模块首先通过switch语句选出对学生进行排序的方式,主要方式有按学号进行排序,按高等数学的成绩按从高到低进行排序,按英语成绩按从高到低进行排序,按C++成绩按从高到低进行排序这四种排序方式,选择方式之后,根据是否返回小菜单和主菜单进行1和0的选泽。

流程图:

C++程序设计课程设计报告 第 5 页 共 30 页

r=1

输入i=0

j=n-1

输入r

N

Y N

Y

输入n=2

N

r=0

N

输入b

主菜单

b=1

N

b=2

b=3

i

i++

Y

N

j>i

Y

输入i=0

j=n-1

输入i=0

j=0

i

i++

Y

N

j>i

Y

Y

i

Y

j>i

Y

stu[j].num>

stu[j-1].num

输入s

stu[j].mscore>stu[j].mscoY

输入s

stu[j].escore>

stu[j-1].escore

Y

输入s

S=stu[j];

stu[j]= stu[j-1];

stu[j-1]=s

j++

S=stu[j];

stu[j]= stu[j-1];

stu[j-1]=s;j++

S=stu[j];

stu[j]= stu[j-1];

stu[j-1]=s;j++

C++程序设计课程设计报告 第 6 页 共 30 页

【3】模块三:

删除学生信息

这个模块通过输入学号找出你要删除的学生,然后通过循环语句将它后面的数一个一个的赋值给前面的数,从而把这个是给替代掉。达到删除的功能。

流程图:

输入num

输入i=0

主菜单

i

i++

N

num=stu[i].numY

j=i

i=j+1

i++

Y

stu【i-1】=stu【i】

输出信息

i

C++程序设计课程设计报告 第 7 页 共 30 页

【4】模块四:

统计学生信息

这个模块主要通过循环语句先算出各个学生的总成绩以及平均分,并且输出他们的信息,然后采用选择法选出总分最高以及最低的学生,并输出他们的名字。最后通过循环语句和if语句的结合算出各科成绩的及格率。最后返回主菜单。

流程图:

主菜单

输入i=0

Y

i

i++

输入min

min=stu【0】.total

Y

输入r

stu[i].total=stu[i].cscore+stu[i].mscore+stu[i].escore

stu【i】>=60

输出stu【i】.total

Y

输出stu【i】.total/3

r++;

stu[i].total

N

i++

r=n

Y

输出信息

N

Y

min=stu[i].total;

i++;

输入i=0

i

【5】模块五:

查询学生信息

这个模块主要是通过三种方式进行学生信息的查询,分别是姓名查询,学号查询,课程名查询;找到学生之后输出学生基本信息,如果查找的学生不在列表中,则重新输入。

C++程序设计课程设计报告 第 8 页 共 30 页

流程图:

主菜单

输入a

Y

a=1

N

输入name

a=2

输入i

Y

a=3

输入b

输入num

i

Y

N

n=stu[i].num

Y

输出信息

n=stu[i].num

Y

输出信息

i

Y

N

i++

输出信息

i++

输入i

b=gaodengshuxuY

N

b=daxueyingyu

C++程序设计课程设计报告 第 9 页 共 30 页

【6】模块六:

保存学生信息

这个模块通过使用ACII码的文件的应用,将数据存入到文件中。

流程图:

主菜单

输入信息

输入文件

【7】模块七:

退出系统

(三)代码设计(函数主要代码及注释)

#include

#include

#include

#include

using namespace std;

int n;

struct Student

{

char name[20];

double Class;

int num;

float mscore;

float escore;

float cscore;

float total;

};Student stu[20];

C++程序设计课程设计报告 第 10 页 共 30 页

int main()

{

void menu();

void read();

read();

cout<<"*******************************学生成绩排名系统******************************"<

cout<<"本系统主要完成对学生成绩的管理还有统计的功能,请按照提示进行操作,否则将会出现错误,请慎重操作。"<

cout<<"注意要先实行第一步!"<

menu();

return 0;

}

void menu() //进行数据操作的选择

{

void choose();

cout<<"********************************* 主菜单 *********************************"<

cout<<" ** (1)添加学生成绩 ** "<

cout<<" ****** (2)对学生成绩进行排序 ****** "<

}

void add() //添加学生信息

{

}

void input()

void back();

void input();

input();

back();

cout<<" ********** (3)删除学生成绩 ********** "<

cout<<" ************** (4)统计学生成绩 ************** "<

cout<<" ********** (5)查询学生成绩 ********** "<

cout<<" ****** (6)保存学生成绩 ****** "<

cout<<" ** (7)退出系统 ** "<

cout<<"****************************************************************************"<

cout<<"请选择你要实现的功能"<

cout<<"你输入的数字是:";

choose();

C++程序设计课程设计报告 第 11 页 共 30 页

{

}

void delet() //删除学生信息

{

void back();

int i,a,j,p;

cout<<"你要删除的学生的学号:";

cin>>a;

int r=0;

cout<<"你要输入的学生个数为:";

cin>>n;

ofstream outfile("e:",ios::app);

if(!outfile)

{

}

for(int i=0;i

{

}

();

cout<<"学生的名字:";

cin>>stu[i].name;

cout<<"学生的班级:";

cin>>stu[i].Class;

cout<<"学号:";

cin>>stu[i].num;

cout<<"高等数学:";

cin>>stu[i].mscore;

cout<<"大学英语:";

cin>>stu[i].escore;

cout<<"大学语文:";

cin>>stu[i].cscore;

r++;

if(r==n)

break;

cout<<"open error!"<

exit(1);

C++程序设计课程设计报告 第 12 页 共 30 页

}

void paixu() //对学生信息进行排序

{

cout<<"A.按照学号进行排序"<

cout<<"B.按照数学成绩从高到低进行排序"<

cout<<"C.按照英语成绩从高到低进行排序"<

cout<<"D.按照语文成绩从高到低进行排序"<

cout<<"请选择进行排序的方式?(用A,B,C,D进行选择):";

char a;

cin>>a;

switch(a)

{

void num();

void mscore();

void escore();

void cscore();

for(i=0;i

if(a==stu[i].num)

{

}

j=i;

for(p=j+1;p

stu[p-1]=stu[p];

cout<<"删除成功!!";

n=n-1;

break;

if(i==n && a!=stu[i].num)

{

}

back();

cout<<"你要删除的学生不在列表中"<

delet();

case 'A':num();break;

case 'B':mscore();break;

case 'C':escore();break;

case 'D':cscore();break;

C++程序设计课程设计报告 第 13 页 共 30 页

}

void num() //学号排序

{

void back2();

int i;

Student s;

cout<<"学生姓名"<

<

}

for(i=0;i

}

void mscore() //数学成绩排序

{

void back2();

int i;

{

}

for(i=0;i

cout<

<

for(int j=n-1;j>i;j--)

{

}

if(stu[j].num>stu[j-1].num)

{

s=stu[j];

stu[j]=stu[j-1];

stu[j-1]=s;

}

back2();

Student s;

cout<<"学生姓名"<

<<"高等数学"<

for(i=0;i

{

for(int j=n-1;j>i;j--)

{

C++程序设计课程设计报告 第 14 页 共 30 页

}

for(i=0;i

cout<

<

}

if(stu[j].mscore>stu[j-1].mscore)

{

s=stu[j];

stu[j]=stu[j-1];

stu[j-1]=s;

}

back2();

}

void escore() //英语成绩排序

{

}

void back2();

int i;

Student s;

cout<<"学生姓名"<

<<"高等数学"<

for(i=0;i

{

}

for(i=0;i

cout<

<

for(int j=n-1;j>i;j--)

{

}

if(stu[j].escore>stu[j-1].escore)

{

s=stu[j];

stu[j]=stu[j-1];

stu[j-1]=s;

}

back2();

C++程序设计课程设计报告 第 15 页 共 30 页

void cscore() //语文成绩排序

{

void back2();

int i;

Student s;

cout<<"学生姓名"<

<<"高等数学"<

for(i=0;i

{

}

for(i=0;i

cout<

<

for(int j=n-1;j>i;j--)

{

}

if(stu[j].cscore>stu[j-1].cscore)

{

s=stu[j];

stu[j]=stu[j-1];

stu[j-1]=s;

}

back2();

}

void cal() //学生成绩统计

{

void back();

float max=stu[0].total;

int order=0;

float min=stu[n-1].total;

int o=n-1;

int i;

for(i=0;i

{

stu[i].total=stu[i].mscore+stu[i].escore+stu[i].cscore;

cout<

<

C++程序设计课程设计报告 第 16 页 共 30 页

cout<<"平均分:"<

}

for(i=0;i

}

cout<<"最低分为"<

cout<<"高等数学及格率:";

float r=0;

}

cout<<"最高分为"<

for(i=0;i

{

if(stu[i].total

{

}

min=stu[i].total;

o=i;

{

if(stu[i].total>max)

{

}

max=stu[i].total;

order=i;

for(i=0;i

{

}

cout<

cout<<"大学英语及格率:";

float t=0;

if(stu[i].mscore>=60)

r++;

for(i=0;i

{

if(stu[i].escore>=60)

t++;

}

C++程序设计课程设计报告 第 17 页 共 30 页

cout<

cout<<"大学语文及格率:";

float e=0;

for(i=0;i

{

}

cout<

back();

if(stu[i].cscore>=60)

e++;

}

void search() //查询学生成绩

{

}

void seek_name() //姓名查询

{

void back1();

char a[20];int i;

cout<<"你要查的学生的姓名:";

void seek_name();

void seek_num();

void seek_sub();

cout<<"请选择根据什么信息查询"<

cout<<"[1]学生姓名"<

cout<<"[2]学号"<

cout<<"[3]课程名"<

cout<<"请输入你要序号:";

int k;

cin>>k;

switch(k)

{

}

case 1:seek_name();break;

case 2:seek_num();break;

case 3:seek_sub();break;

C++程序设计课程设计报告 第 18 页 共 30 页

cin>>a;

int r=0;

for(i=0;i

}

void seek_num() //学号查询

{

void back1();

double a;int i;

int k=0;

cout<<"你要查询的学生的学号:";

back1();

{

}

if(r==1)

{

}

cout<<"你所查找的学生不在列表中!!请重新输入:";

seek_name();

if(strcmp(a,stu[i].name)==0)

{

cout<<"学生的名字:";

cout<

cout<<"学生的班级:";

cout<

cout<<"学号:";

cout<

cout<<"高等数学:";

cout<

cout<<"大学英语:";

cout<

cout<<"大学语文:";

cout<

}

else

r=1;

break;

C++程序设计课程设计报告 第 19 页 共 30 页

cin>>a;

}

void seek_sub() //课程查询

{

void back1();

string a;

int i;

cout<<"你要查询的课程名:";

cin>>a;

for(i=0;i

{

}

if(k==1)

{

}

back1();

cout<<"你所查找的学生不在列表中!!请重新输入:";

seek_num();

if(a==stu[i].num)

{

cout<<"学生的名字:";

cout<

cout<<"学生的班级:";

cout<

cout<<"学号:";

cout<

cout<<"高等数学:";

cout<

cout<<"大学英语:";

cout<

cout<<"大学语文:";

cout<

}

else

k=1;

break;

C++程序设计课程设计报告 第 20 页 共 30 页

if(a=="gaodengshuxue")

{

}

if(a=="daxueyingyu")

{

}

if(a=="daxueyuwen")

{

}

for(i=0;i

{

}

cout<<"大学语文:";

cout<

for(i=0;i

{

}

cout<<"大学英语:";

cout<

for(i=0;i

{

}

cout<<"高等数学:";

cout<

back1();

}

void baocun() //保存数据

{

void back();

ofstream outfile("E:",ios::app);

if(!outfile)

{

}

for(int i=0;i

{

cerr<<"open error!"<

exit(1);

C++程序设计课程设计报告 第 21 页 共 30 页

}

void read() /*读出学生信息*/

{

ifstream infile("E:",ios::app);

}

();

cout<<"保存成功!!"<

back();

outfile<

outfile<

outfile<

outfile<

outfile<

outfile<

outfile<

if(!infile)

else

{

for(int i=0;i

{

cout<<"******************************* 学生成绩未录入 ******************************"<

infile>>stu[i].name;

infile>>setw(5)>>stu[i].Class;

infile>>setw(5)>>stu[i].num;

infile>>setw(5)>>stu[i].mscore;

infile>>setw(5)>>stu[i].escore;

infile>>setw(5)>>stu[i].cscore;

}

();

for(i=0;i

{ cout<<"学生的名字:";

cout<

cout<<"学生的班级:";

cout<

cout<<"学号:";

cout<

C++程序设计课程设计报告 第 22 页 共 30 页

}

void back()

{

int a;

cout<<"是否返回主菜单?(1是返回主菜单,0是不返回):";

cin>>a;

if(a==0)

cout<<"程序结束!!";

}

cout<<"高等数学:";

cout<

cout<<"大学英语:";

cout<

cout<<"大学语文:";

cout<

}

cout<

if(a==1)

menu();

if(a!=0&&a!=1)

{

cout<<"请重新输入:";

cin>>a;

back();

}

void back1()

{

int a;

cout<<"是否返回小菜单?(0是返回小菜单,1是返回主菜单):";

cin>>a;

if(a==0)

search();

}

if(a==1)

menu();

if(a!=0&&a!=1)

C++程序设计课程设计报告 第 23 页 共 30 页

{

cout<<"请重新输入:";

cin>>a;

back1();

}

void back2()

{

int a;

cout<<"是否返回菜单?(0是返回菜单,1是返回主菜单):";

cin>>a;

if(a==0)

paixu();

}

if(a==1)

menu();

if(a!=0&&a!=1)

{

cout<<"请重新输入:";

cin>>a;

back2();

}

void choose()

{

int i;

cin>>i;

}

switch(i)

{

case 1:add();break;

case 2:paixu();break;

case 3:delet();break;

case 4:cal();break;

case 5:search();break;

case 6:baocun();break;

}

}

case 7:cout<<"退出系统,谢谢使用!!";break;

C++程序设计课程设计报告 第 24 页 共 30 页

4.课程设计成果

主要的功能界面说明及截图

1.添加学生成绩:

C++程序设计课程设计报告 第 25 页 共 30 页

2.对学生成绩进行排序:

按数学成绩进行排序:

C++程序设计课程设计报告 第 26 页 共 30 页

按英语成绩进行排序:

按语文成绩进行排序:

C++程序设计课程设计报告 第 27 页 共 30 页

3.删除学生成绩:

4.统计学生成绩:

C++程序设计课程设计报告 第 28 页 共 30 页

5.查询学生成绩:

按学生姓名进行查询:

按学生学号进行查询:

C++程序设计课程设计报告 第 29 页 共 30 页

按课程名进行查询:

6.保存学生成绩:

7.退出系统:

C++程序设计课程设计报告 第 30 页 共 30 页

5.课程设计心得

(1) 课程设计中遇到的问题及解决办法

在删除模块中删除数据时删最后一个数据老是出错,删前面的都可以,删最后一个可以删除成功但是还会显示不在列表中,检查后发现时For循环的控制出错了;在一开始结构体定义的时候,也出现很多错误;还有排序时循环的控制,统计时最小数的出错,和按学号查询时老查不到最后一位的成绩还有程序是格式的控制和各类种种小错误。我通过百度,阅览书籍和向同学询问等方式,解决了这些问题,最后基本完成了整个程序排名系统的功能。

(2)课程设计心得

在这次C++课程设计中我学到了许多东西。刚开始拿到手时,感觉整个人都懵了,压根不知道该从哪里下手,只能去看一些相关的书籍或者上网浏览来寻找一个大体的目标。找到目标后,渐渐一步步的开始慢慢琢磨慢慢编程。在多次运行中发现错误,在错误中加以改正,并逐渐完善好程序。

在写代码的过程中,感觉又把整本书复习了一篇。程序运行主要用了for循环语句,程序上的功能也实现了,学生成绩管理系统的功能需求分析 :学生成绩管理系统主要提供学生资料的输入,学生资料的输出,学生资料的查询,学生资料删除,以及学生成绩的排序等.通过这次对学生成绩排名系统的编写,使我对现在所学的东西和以前所学的东西有了统一的了解和综合的运用, 使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。

程序中我使用struct结构体的知识定义了一个学生类。然后设计了菜单选择,一共设有七个模块,分别是添加学生信息,对学生信息进行排序,删除学生信息,统计学生信息,查询学生信息,保存学生信息,最后是退出系统。首先是增加学生信息的函数,设定添加几个学生,然后根据屏幕上的提示输入学生的姓名,学号,班级,高数成绩,英语成绩,语文成绩。在排序的函数中,主要有按学号、数学、英语还有语文成绩这四个内容进行排序,主要采用的是冒泡法。我对冒泡排序法还算熟悉,但是实际运用中却总是出错,经过几番调试和修改才能正确的运行。其次是删除学生的函数,将要删除的那个学生用下面的学生进行替代,这样就得到了想要的结果。然后是统计学生的函数,先定义了总分这个鼠标,但是并不能满足要求把,于是我就把total这个数加到定义的struct中,功能得到实现,最高分最低分采用选择法。继而写的是查询函数,这个过程并没有遇到太大的问题。第六个模块写的是将数据保存到文件,我一开始对文件的编写和运用并不熟练,经过查阅资料和同学的指导后,有了初步的掌握。最后是退出系统。虽然调试过程中出现很多错误,并不是那么的一帆风顺,但是通过各方面的咨询和查找也基本实现了这个系统的功能。在修改程序中也学习了不少的东西,对于在学习中原来存有的漏洞,进行了很好的弥补。

总而言之,课程设计让我更深刻理解C++,也提高我的动手能力,是一次不错的锻炼机会。

C++课程设计 学生成绩排名系统

本文发布于:2024-02-03 15:39:14,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170694595450784.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23