C++学生成绩管理系统完整Word文件下载.docx

上传人:b****4 文档编号:18021403 上传时间:2022-12-12 格式:DOCX 页数:75 大小:924.68KB
下载 相关 举报
C++学生成绩管理系统完整Word文件下载.docx_第1页
第1页 / 共75页
C++学生成绩管理系统完整Word文件下载.docx_第2页
第2页 / 共75页
C++学生成绩管理系统完整Word文件下载.docx_第3页
第3页 / 共75页
C++学生成绩管理系统完整Word文件下载.docx_第4页
第4页 / 共75页
C++学生成绩管理系统完整Word文件下载.docx_第5页
第5页 / 共75页
点击查看更多>>
下载资源
资源描述

C++学生成绩管理系统完整Word文件下载.docx

《C++学生成绩管理系统完整Word文件下载.docx》由会员分享,可在线阅读,更多相关《C++学生成绩管理系统完整Word文件下载.docx(75页珍藏版)》请在冰豆网上搜索。

C++学生成绩管理系统完整Word文件下载.docx

请输入(0~8):

通过键盘输入数字0~10后,程序能够执行相应的功能,执行完后回到上述主菜单继续等待用户输入,输入数字0后退出程序。

(1)选择“登记”后,输入学生个数。

按程序提示输入学号、姓名、性别、年级、班级、三个科目成绩、总分、总排名、各科目排名。

(2)选择“编辑”,按提示输入要删除的学生的学号,输入学号,若改学号存在,则编辑相应的学生记录,如果该学号不存在,返回主菜单

(3)选择“顺序”后,会显示从成绩高到低还是相反。

该操作会改变程序中链表的连接顺序,因此浏览时候显示也是顺序改变后的链表顺序输出。

(4)

(5)选择“全部”,系统会按照年级显示全部学生其成绩。

(6)选择“个人”,系统会提示输入学生姓名或者学号进行寻找并显示。

(7)选择“考试”,会按照每一年级的每一次考试显示成绩。

(8)选择“专业”,会按照专业进行成绩输出。

(9)选择“指定”,里面还有八种显示方式:

分数段、排名、学期、班级、大一至大四,可以按照其进行浏览。

(10)进行系统相关的设置,如是否显示欢迎窗口,是否自动读取信息或是手动、是否浏览显示全部等

(0)退出操作。

二、系统分析与模块设计

《学生成绩管理系统》结构图

三、系统设计

1.系统总体框架

《学生成绩管理系统》流程图

2.系统关键算法流程图

(1).系统包含的类库

#include<

iostream>

string>

fstream>

iomanip>

conio.h>

windows.h>

(2).主函数

创建Manage对象象象

进入start并进行信息读取等前提操作,然后进入用户界面开始有用户选择操作

(3)student类的设计与分析

classstudent/*定义学生成绩类*/

{

private:

Score*sco;

stringname;

stringpro;

//专业

intclas;

intgrade;

stringnum;

charsex;

Student*next;

};

表1student类说明表

名称

属性

说明

sco

数据成员

成绩类开头

name

说明学生姓名

pro

说明学生专业

clas

说明学生班级

grade

说明学生年级

num

说明学生学号

sex

说明学生性别

next

说明指向下一个节点的指针

(4).Manage类的设计与分析

classList{

intset[SET];

Student*stu;

public:

//添加

voidAdd();

//添加学生

voidAddScore(Student*istudent);

//添加成绩

//浏览

intisEmpty();

intinfoPass(stringinum,stringiname,charisex,intigrade,inticlas);

voidSkimAll();

voidSkimClas();

voidSkimPro();

voidSpecSkim();

//指定的其他浏览方式

voidSkimByScore();

voidSkimByTerms();

voidSkimByPlace();

voidSkimByTest();

voidSkimByGrade(intigrade);

voidFind(stringT);

//查找

voidPrintAllScore(Score*q);

//打印成绩,本程序用来打印第二次开始的考试成绩

voidInitScore();

//未给出成绩的学生进行0赋值

voidDelete();

//删除

voidEdit(stringY);

//编辑

voidEditScore(Student*istu);

voidOrderConscore();

//按总成绩排序

voidOrderObject();

//排名次

voidCompare();

//比较

voidSave();

//保存

intRead();

//读取

stringOfProfe();

//选择学院专业

intWINAPIWinMain(HINSTANCEhInst,HINSTANCEhPrevInstance,LPSTRlpszCmdParam,intnCmdShow);

//显示欢迎对话框

intcountSpecStudent(intigrade);

//返回指定年级的学生数

intcountConStudent();

//返回总学生数

//默认设置

voidDefaultSetting();

//进行默认设置

voidReadSet();

//读取默认设置

voidSaveSet();

//保存默认设置

int*ReturnSet();

charReturnjudgeOfadd();

voidJudgeOfSave();

//判断是否保存已修改的信息

voidStart();

//类内部开始运行的操作

voidInterface();

//用户使用界面

Add()

成员函数

添加学生

AddScore()

添加成绩

isEmpty()

判断是否有学生

infoPass()

判断输入信息合法性

SkimAll()

全部浏览

SkimClas

按班级浏览

SkimPro()

按专业浏览

SpecSkim()

其他浏览方式

Find(stringT)

按学号寻找

PrintAllScore(Score*q)

输出所有学生数量

InitScore()

初始化成绩未满的学生的成绩

Delete()

删除学生

Edit(stringY)

编辑学生信息

EditScore(Student*istu)

编辑学生成绩

OrderConscore()

将链表改变连接顺序进而改变输出顺序

OrderObject()

给每个学生每次考试排名次

Save()

保存学生信息

Read()

读取学生信息

OfProfe()

选择学生专业

countSpecStudent(intigrade)

返回相应年级学生数量

countConStudent()

返回总学生数

DefaultSetting()

默认设置

ReadSet()

读取设置

SaveSet()

保存设置

ReturnSet()

返回设置

(5).Score类

Score()

构造函数

无参构造函数

Score(int*sc)

只含成绩构造函数

Score(int*sc,int*or,intCon)

含全部信息构造函数

ReturnConScore()

返回总分数

(6).输入学生资料模块:

主要功能用来对学生的成绩进行收集和输入。

在学生信息保存在系统中的前提下,输入要输入的人数,成绩录入需要输入学生资料,比如学号,姓名。

在准确输入学生资料后,就可以对该学生的各科成绩进行录入。

该学生各科成绩输入成功后,输入下一个学生资料时会先判断是否学号是否与之前的学生相同,如果相同,则显示提示信息,不同则继续输入

(6)输出学生资料模块:

主要功能用来对学生的成绩进行输出。

在系统已经录入了学生资料成绩的前提下,使用该功能可以显示所有学生的信息,资料等等。

具体包括学生的学号,姓名和各科成绩。

在查看学生的资料,成绩各方面的信息后,按任意键就可以返回到主菜单

(5)查找并显示学生资料模块

主要功能是用来查找学生资料。

在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,这样系统就会显示该学生资料和各科成绩等信息

(6)按学号查找,修改学生资料模块

主要功能是用来修改学生资料。

在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生学号,系统就会显示该学生资料和各科成绩等信息,这样就可以修改该学生的资料,成绩等信息。

(7)按学号查找,删除该学生资料模块

主要功能是用来删除学生资料。

在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生学号,系统查找该学生资料后,就可以删除了。

由于学生辍学,毕业等原因,及时对系统进行更新,删除一些没用的信息,可以使系统更加优化

(8)按学生成绩总分进行排列模块

 主要功能是用来对学生的资料按总分进行排序。

在系统保存学生资料,成绩的前提下,使用此功能可以对学生的资料按总分进行排序,这样就方便查找成绩相同或是相近的同学的资料。

(9)储存学生资料并退出系统模块

主要功能是用来储存学生资料。

在对系统进行一系列操作,比如添加、删除、修改学生资料后,对系统的最新操作进行保存,及时更新系统,方便下一次的操作。

四、运行结果

1.开始界面

2.输入数据

3.搜索数据

4.删除

5.修改数据

7.显示数据

8.系统设置

五、小结

这个程序经过了暑假开始到十月份的修改编辑,要感谢老师及同学的指导,另外程序本身更适合学生数量不是特别多的情况下,加入学生有上千上万个,那么应该在添加几个类,在学生类之上的类,这样才可以大大方便了各种操作以及浏览等。

六、参考资料

《C++程序设计教程》

CSDN程序员社区

代码:

/*

*学生成绩管理系统

*类:

StudentScoreManage

*可保存学科:

语文数学英语

*时间段:

大一至大四

*说明:

该程序针对学生数较少的情况,假如面对上千上万的学生数,应该再将其中的存储结构进行改变,

*分别分层次存储,例如大一至大四四个链表表头,在每一个链表中又根据不同分类依据细分,

*例如根据学院、专业等,这样的改变将大大有利于程序进行的寻找、输出、排序等涉及链表的操作,

*当然相应代码也要稍作改变

*/

sstream>

vector>

usingnamespacestd;

#defineCONOBJ3//3科科目

#defineYEARS4//4个学年

#defineSET4//4个设置要求

classScore{

intscore[CONOBJ];

//chinese,math,english三科目分别对应order[0]、order[1]、order[2],每个学期两次考试,分为期中和期末考试

intorder[CONOBJ];

//MAX科学科排名

intConOrder;

//总排名

Score*next;

//定义在学生类当中

Score(){

next=NULL;

inti;

for(i=0;

i<

CONOBJ;

i++){

score[i]=0;

order[i]=0;

}

ConOrder=0;

};

//无参构造函数

Score(int*sc){

score[i]=*sc;

sc++;

}//只有成绩的构造函数

Score(int*sc,int*or,intCon){

intj;

for(j=0;

j<

j++){

score[j]=*sc;

order[j]=*or;

sc++;

or++;

ConOrder=Con;

}//含全部参数的构造函数

intReturnConScore(){//返回总分数

returnscore[0]+score[1]+score[2];

}

//===========================================================

classStudent{

/*Student类中包含Score类

*用来存储众多的成绩,每个学期两次成绩,

每学年两个学期*/

/*

*几个不同参数的Student构造函数的重载,

*分别对应不同形式的构造方式

*/

Student(stringiname):

name(iname),next(NULL){

sco=NULL;

cout<

<

"

\t\t\t\t★成功添加学生"

name<

★\n"

;

}//1.单参数时的构造函数

Student(stringiname="

Noname"

stringipro="

none"

inticlass=0,intigrade=0,stringinum="

0"

charisex='

n'

:

name(iname),num(inum),sex(isex),next(NULL),pro(ipro),clas(iclass),grade(igrade){

return;

}//2.用于添加无输入成绩的构造函数

Student(stringiname,stringipro,inticlas,intigrade,stringinum,charisex,int*score)

name(iname),pro(ipro),clas(iclas),grade(igrade),num(inum),sex(isex),next(NULL){

sco=newScore(score);

cout<

}//3.用于添加有成绩的构造函数

Student(stringiname,stringipro,inticlas,intigrade,stringinum,charisex,int*score,intconor,int*order)

sco=newScore(score,order,conor);

}//4.用于从文件读入时候的构造函数

intCountOfScore();

//统计已经存储的成绩数量,每个学期两次考试,每次考试算作一次成绩录入成绩录入总计〈=4*igrade

friendclassManage;

//============================================

classManage{

/*记录是否执行了修改学生信息操作,等于'

表示未修改信息或者修改完了但已经保存,

等于'

y'

表示已经修改并且还未保存*/

charjudgeOfAdd;

Manage(){

stu=NULL;

/*for(inti=0;

SET;

i++)

set[i]=1;

*/

judgeOfAdd='

Start();

~Manage(){//删除所有记录,释放空间

Student*p=stu;

while(p){

p=p->

next;

deletep;

Student*ReturnStu(){

returnstu;

//=====================================================================

//Student名空间中的成员函数的函数定义

intStudent:

:

CountOfScore(){

Score*p=sco;

p;

p=p->

next,i++);

returni;

}

//=====================================

//Manage名空间中的成员函数的函数定义

int*Manage:

ReturnSet(){

returnset;

}//------------------------------------

charManage:

ReturnjudgeOfadd(){

returnjudgeOfAdd;

}//------------------------------------

intManage:

countSpecStudent(intigrade){//返回指定年级的学生数

Student*p=stu;

intcount=0;

for(;

p!

=NULL;

next)

if(p->

grade==igrade)

count++;

returncount;

}//-------------------------------

intMan

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

当前位置:首页 > 求职职场 > 简历

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

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