第六组学生成绩管理.docx

上传人:b****8 文档编号:23868559 上传时间:2023-05-21 格式:DOCX 页数:24 大小:230.95KB
下载 相关 举报
第六组学生成绩管理.docx_第1页
第1页 / 共24页
第六组学生成绩管理.docx_第2页
第2页 / 共24页
第六组学生成绩管理.docx_第3页
第3页 / 共24页
第六组学生成绩管理.docx_第4页
第4页 / 共24页
第六组学生成绩管理.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

第六组学生成绩管理.docx

《第六组学生成绩管理.docx》由会员分享,可在线阅读,更多相关《第六组学生成绩管理.docx(24页珍藏版)》请在冰豆网上搜索。

第六组学生成绩管理.docx

第六组学生成绩管理

 

课程名称:

C++程序设计

课程代码:

408025

题目:

学生成绩管理系统

年级/专业/班:

09级计算机系软件工程一班

学生姓名:

封宏伟段伟刘文佑刘文飞黄定芳

学号:

094361270943612809436129

0943613009436131

指导教师:

袁辉勇

开题时间:

2010年9月5日

完成时间:

2010年9月27日

 

目录

一引言3

二设计目的与任务3

三设计方案3

1总体设计3

2详细设计4

3、程序清单5

4、程序调试与体会13

5、运行结果14

四结论16

五致谢17

六参考文献17

 

摘要

成绩管理是一个教育单位不可缺少的重要组成部分,它的内容对于学校的教务管理人员来说至关重要,作为计算机应用的一部分,利用计算机进行学生成绩信息的管理无疑是一条行之有效且高效的办法。

学生成绩管理系统在学校日常管理中占有极其重要的地位,本课程设计中将设计一个实用的小型学生成绩管理系统程序,使用C++语言实现该系统,要求不用链表。

程序有输入学生记录、删除记录、查找学生记录、排序统计学生总分、输出学生成绩的功能,并且能够对指定的文件操作,也可将多个文件组成一个文件。

关键词:

输入修改删除查询排序文件操作.

Abstract

Performancemanagementisoneofthemostindispensableandimportantpartineducationunit,itscontentisveryimportantfortheeducationaladministrationpersonnelintheschool.Asapartofcomputerapplication,Itisnodoubttousecomputertomanagetheinformationofstudent’sachievementeffectivelyandefficiently.

Studentperformancemanagementsystemplaysanextremelyimportantroleinschool’sdailymanagementoccupies.We’lldesignasmallandpracticalstudentperformancemanagementsysteminthiscause.Byingusingc++languageprogramtorealizethissystem,butnothelist.Programincludesthefunction,inputtingrecords,deletingrecords,seekingforrecords,statisticsforrecordsandoutputtingtheachievements.Andwecanoperatthespecifiedfile,alsowecanmakemultiplefilesintoafile.

Keywords:

input,change,delete,seekfor,operatfile.

 

《C++程序设计》课程设计

------学生成绩理系统

一引言

随着人们生活水平的提高,计算机发展异常迅速。

如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。

通过计算机对各类信息的管理已经成为一种高效、快捷的方式。

本课程设计就是用C++开发一个学生成绩管理系统,实现对学生成绩信息的查询、添加、删除、更新操作,旨在对学生成绩实现计算机化的管理,提高工作效率,提高管理水平。

二设计目的与任务

1、设计目的:

这个程序是通过C++语言采用向量的方法来设计的。

通过本次的C++课程设计,我们将会把平日书本上的知识真正应用到了实际中来。

深入了解C++各类及相关函数的应用,结合其它相关知识,如软件工程等,把所学知识融会贯通。

体会团队合作及分工合作的效果。

2、设计任务:

我们此次做的学生管理系统将要完成以下功能:

1、设计菜单实现功能选择;

2、输入功能:

输入学生信息,并保存到文件中;

3、计算每个学生的总分与平均分并排序;

4、能根据学号修改学生信息;

5、能根据学号删除学生信息;

6、查询功能:

1)能够根据学号查询学生信息;

2)能够根据姓名、班级查询学生信;

3)统计学生成绩,按照班级和科目计算平均分。

三设计方案

1总体设计

按照学生成绩管理系统的设计要求,我们的设计将由六个部分组成,如图1所示。

在该程序中用于保存数据的底层数据结构是数组。

使用了处理成绩管理操作的面向用户使用的类,它包含了所有功能的用户界面以及用户交互的实现。

还有处理学生信息记录的底层类,针对输入记录、删除记录、查询记录以及保存和读取记录等操作进行与底层数据结构相关的处理。

该类不涉及任何与用户界面或用户交互的操作。

图1功能图

定义两个类:

学生类和操作类,两者的属性和关系下图所示:

图2类图

2详细设计

在该课程设计中,设计要求实现的功能较多,大体可分为:

1)输入学生信息2)修改学生信息

3)删除学生信息4)计算每个学生总分与平均分并排序和显示

5)查询学生信息6)关闭程序

程序中用到的函数:

通过下列成员函数来说明设计中需要考虑的问题。

1、voidinput(student*p);

该函数的功能是输入学生信息.

2、voidalter(student*head);

该函数的功能修改学生信息.

3、student*delet(student*head);

该函数的功能删除学生信息.

4、student*find(student*head,char*num1);

该函数的功能查找学生信息.

5、voidFindNum(student*head,charnum1[]);

该函数的功能按学号查找学生信息.

6、voidFindName(student*head,charname1[]);

该函数的功能按名字查找学生信息.

7、voidFindClas(student*head,charclas1[]);

该函数的功能按班级查找学生信息.

8、voidSumSort(student*head);

该函数的功能计算学生成绩总分并排序.

9、voidprint(student*p);

该函数的功能输出学生信息.

3、程序清单

#include//学生成绩管理系统

#include

usingnamespacestd;

#defineNULL0

classgrade//成绩类

{

public:

floatchin;

floatmath;

floatengl;

floatsynt;

floattoscore;

floatavscore;

};

classstudent:

publicgrade//学生类

{

charname[100];

charsex;

charnum[100];

charclas[100];

gradeg;

student*next,*q,*q1,*q2,*enpt;

public:

student*insert(student*head);

voidinput(student*p);

voidalter(student*head);

student*delet(student*head);

student*find(student*head,char*num1);

voidFindNum(student*head,charnum1[]);

voidFindName(student*head,charname1[]);

voidFindClas(student*head,charclas1[]);

voidSumSort(student*head);

voidprint(student*p);

};

voidstudent:

:

input(student*p)//输入学生信息

{

cout<<"请输入学生的姓名、学号、性别(男—b,女—g)、班级"<

cin>>p->name>>p->num>>p->sex>>p->clas;

cout<<"请输入该学生的语、数、英、综合四科的成绩"<

cin>>p->chin>>p->engl>>p->math>>p->synt;

}

voidstudent:

:

print(student*p)

{

cout<<"姓名"<name<<"学号:

"<num;

cout<<"性别:

"<sex<<"班级:

"<clas;

cout<<"语文:

"<chin<<"数学:

"<math<<"英语:

"<engl<<"综合:

"<synt<

}

student*student:

:

insert(student*h)//插入学生信息

{

student*p1=newstudent;

p1->next=NULL;

input(p1);

if(h==NULL)

{

h=p1;h->next=NULL;

returnh;

}

else

{

h->next=p1;

returnp1;

}

}

voidstudent:

:

alter(student*head)//修改学生信息

{

charnum1[100];

cin>>num1;

q=find(head,num1);

if(q!

=NULL)

{

cout<<"请重新输入需要修改的学生的信息:

"<

input(q);

}

else

{

cout<<"需要修改的学生不存在,请检查是否书写有误"<

}

}

student*student:

:

delet(student*head)//删除学生信息

{

charnum1[100];

cin>>num1;

q=head;//q->next=NULL;

while(q!

=NULL)

{

if(strcmp(num1,q->num)==0)break;

q1=q;q=q->next;

}

if(q!

=NULL)

{

if(q==head)//删除头结点,真麻烦,要小心

{

q=q->next;

free(head);

cout<<"删除已完毕,请选择其他功能继续"<

returnq;

}

else//删除其他节点

q1->next=q->next;

cout<<"删除已完毕,请选择其他功能继续"<

}

else

{

cout<<"需要删除的学生不存在,请检查是否书写有误"<

return0;

}

returnhead;

}

student*student:

:

find(student*head,char*num1)//查找学生信息

{

q=head;

while(q!

=NULL)

{

if(strcmp(num1,q->num)==0)returnq;

q=q->next;

}

returnq;

}

voidstudent:

:

FindNum(student*head,charnum1[])

{

q=head;

while(q!

=NULL)

{

if(strcmp(num1,q->num)==0)

{

print(q);

cout<<"查找完毕,请选择其他查询功能继续,返回主菜单请按4"<

return;

}

q=q->next;

}

cout<<"查找完毕,没有找到相关信息!

"<

}

voidstudent:

:

FindName(student*head,charname1[])

{

q=head;

intflag=0;

while(q!

=NULL)

{

if(strcmp(name1,q->name)==0)

{

print(q);

cout<<"查找完毕,请选择其他查询功能继续,返回主菜单请按4"<

flag=1;

}

q=q->next;

}

if(flag==0)cout<<"查找完毕,没有找到相关信息!

"<

}

voidstudent:

:

FindClas(student*head,charclas1[])

{

q=head;

intflag=0;

while(q!

=NULL)

{

if(strcmp(clas1,q->clas)==0){cout<<"该班第"<

"<

q=q->next;

}

if(flag==0)cout<<"查找完毕,没有找到相关信息!

"<

elsecout<<"查找完毕,请选择其他查询功能继续,返回主菜单请按4"<

}

voidstudent:

:

SumSort(student*head)

{

q=head;

while(q!

=NULL)

{

q->toscore=q->chin+q->math+q->engl+q->synt;

q->avscore=q->toscore/4;

q=q->next;

}

q2=head;

q1=q2->next;

while(q2->next)

{

if(q2->toscore>q1->toscore)

{

q2->next=q1->next;

q1->next=head;

head=q1;

//p2=head;

q1=q2->next;

}

else

{

q2=q2->next;

q1=q2->next;

}

}

q=head;

while(q!

=NULL)

{

print(q);

cout<<"总分:

"<toscore<<"平均分:

"<avscore<

q=q->next;

}

}

intmain()

{

student*head=NULL,*p,s;

cout<<"\t█▇▆▄▃▂▁▁▁▁▁▁▁▁▁▁▁▁▂▃▄▅▆▇█▉"<

cout<<"\t★●●●●●●●●●●●●●●●●●●●●●●●●★"<

cout<<"\t★●★请选择主菜单功能:

●★"<

cout<<"\t★●●★"<

cout<<"\t★●1.输入学生信息2.修改学生信息●★"<

cout<<"\t★●3.删除学生信息4.查询学生信息●★"<

cout<<"\t★●5.计算总分与平均分并排序和显示6.关闭程序●★"<

cout<<"\t★●●●●●●●●●●●●●●●●●●●●●●●●★"<

cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<

intfun;//功能键

while

(1)

{

cin>>fun;

if(fun<1||fun>6){cout<<"你的指令有误,请重新输入!

"<

if(fun==6){cout<<"系统已关闭,谢谢你的使用"<

switch(fun)

{

case1:

{

if(head==NULL)

{

head=s.insert(head);

p=head;

}

else

{

p=s.insert(p);

}

cout<<"输入已完毕,请选择其他功能继续"<

}

getchar();

break;

case2:

{

if(head==NULL)

{

cout<<"表为空,没有学生信息"<

}

else

{

cout<<"请输入需要修改的学生的学号:

";

s.alter(head);

cout<<"修改已完毕,请选择其他功能继续"<

}

}

break;

case3:

{

if(head==NULL)

{

cout<<"表为空,没有学生信息,请选择其他功能继续"<

}

else

{

cout<<"请输入需要删除的学生的学号:

";

head=s.delet(head);

}

}

break;

case5:

{

if(head==NULL)

{

cout<<"表为空,没有学生信息,请选择其他功能继续"<

}

else

{

s.SumSort(head);

cout<<"执行已完毕,请选择其他功能继续"<

}

}

break;

case4:

{

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

cout<<"请选择查询功能:

"<

cout<<"1.根据学生学号查询学生信息"<

cout<<"2.根据学生姓名学生查询信息"<

cout<<"3.根据学生班级查询学生信息"<

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

intsearch;

charnum1[100],name1[100],clas1[100];

while

(1)

{

cin>>search;

if(search==4)

{

cout<<"欢迎回到主菜单,请选择其他功能键继续:

"<

break;

}

if(search==1)

{

cout<<"请输入学生的学号:

";

cin>>num1;

s.FindNum(head,num1);

}

else

if(search==2)

{

cout<<"请输入学生的姓名:

";

cin>>name1;

s.FindName(head,name1);

}

else

{

cout<<"请输入学生的班级:

";

cin>>clas1;

s.FindClas(head,clas1);

}

}

}

break;

}

}

return0;

}

4、程序调试与体会

1)调试

在对程序的调过程中,我们遇到了很多不同的问题,在发现问题与解决问题的过程中我们深刻体会到一个程序所要具备的健全性的重要性,我们必须考虑到该程序在解决具体问题的直观性与全面性,也就是要加强程序的可读性,也就是要尽可能地多加注释,这样就大大方便了我们提高了我们的进展。

也会方便读者很容易就了解到程序的层次及功能。

我们所编写的程序具体要求我们输入一条完整的记录其中包括:

学生姓名、学号、性别、班级以及语数外的成绩。

然后将系统中的记录进行排序,程序则调用编好的排序函数进行排序。

同时可以根据需要输入要查找的对象就可以从系统中搜索到所要找的记录及相关信息,如果系统未发现该对象,系统也会作出“不存在该信息”的提示。

通过删除命令代码就可以实现对要求的记录名进行删除工作。

最后还设定了安全退出系统命令。

2)体会

通过本次课程设计,我们整个团队的每个成员都是受益匪浅:

首先,我们深刻感受到平日书本上看似简单的理论知识在真正派上用场的时候当中所涵盖的学问是那么多。

理论与实践的距离之间我们今天的努力还只是一个开始。

在完成此次课程设计的过程中我们屡屡碰到不同的问题。

比如;面向对象的思想。

只有理论知识没有实践经验是不可能成为一名出色的软件设计师的。

理论是实践的基础,实践是对所学知识的巩固与提高,只有理论与实践相结合才能真正掌握知识。

设计思想是很重要的,没有一个人能说自己对于一个问题考虑得面面具到,一个再成功的个人也离不开一个优秀的团体。

所以只有通过大家反覆讨论出来的设计思想才是清晰的、全面的,这是一个好的程序最基本的要求,也是我们成功的决定性因素。

在本次程序设计过程中,大家共同努力,分工合作,一起到图书馆找资料,找范文,共同学习,相互交流所学知识与经验,促使着我们共同进步并顺利地完成了该项任务。

每个人的力量是有限的,但一旦团结起来力量将是无穷的。

在竞争如此激烈的当今社会,这些东西都是我们终生受用的,因此对我们以后的工作和学习奠定了不错的基础。

总体来说,这次课程设计我们付出了努力但也是获得了很多。

5、运行结果

图3是学生成绩管理系统启动后的主界面,主界面上显示的是可以完成的各项操作。

同时我们也对该程序所能实现的功能作了相应的代码进行了标识。

这样用户就可以很方便直观地使用该程序。

图3程序启动

图4是输入数字1执行输入学生信息的操作,提示提示输入学生的姓名、学号、性别、班级以及各门功课的成绩,输入后会在成绩表中存储。

图4输入记录

图5是输入数字2执行修改学生信息的操作,输入学号则修改系统存储的学生的各息。

 

图5修改记录

图6是输入数字3执行删除学生信息的操作,输入学生的学号即可删除该学生的相关信息。

 

图6删除记录

图7是输入数字4执行查询学生信息的操作,可以向系统中查询一名学生的信息。

如选择操作后,输入张三或学号,再执行4操做查

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1