《C++》课程设计学生成绩管理系统Word下载.docx

上传人:b****6 文档编号:20515035 上传时间:2023-01-23 格式:DOCX 页数:30 大小:87.36KB
下载 相关 举报
《C++》课程设计学生成绩管理系统Word下载.docx_第1页
第1页 / 共30页
《C++》课程设计学生成绩管理系统Word下载.docx_第2页
第2页 / 共30页
《C++》课程设计学生成绩管理系统Word下载.docx_第3页
第3页 / 共30页
《C++》课程设计学生成绩管理系统Word下载.docx_第4页
第4页 / 共30页
《C++》课程设计学生成绩管理系统Word下载.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

《C++》课程设计学生成绩管理系统Word下载.docx

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

《C++》课程设计学生成绩管理系统Word下载.docx

C++语言面向对象的编程思想来完成系统的设计,突出函数特征,以多个函数实现每一个子功能,并且画出功能模块图,进行简单界面设计,能够实现友好的交互;

另一方面要具有清晰的程序流程图和数据结构的详细定义,熟练掌握C++语言对文件的各种操作。

据学生成绩表特点,决定选用链表这种数据结构来作为组成成绩数据库的基本框架。

链表是最简单也是最常用的一种动态数据结构。

它是对动态获得的内存进行组织的一种结构。

选用链表有即用即申请,不会造成内存空间的浪费;

数据之间既有独立性,又便于数据的相互连系;

便于

数据的添加及删除等优点。

而用模块化程序设计理念,对各个功能定义不同函数分块处理,这样有利于后期调试及今后对功能的完善。

功能图如下:

每条链表有自己独立的函数和特定的功能,“学生信息管理”里面包含了学生成绩的排序等特有函数,而且主函数简单易懂明了。

其中三条链表中都有上面所画功能图的功能,让人能一目了然。

3系统设计

经过我们的讨论决定将“学生成绩管理系统”分为三块,包括学生基本信息管理系统、学生课程管理系统和班级管理系统。

每个人各自负责自己的一部分,然后共同讨论,编写出主函数。

主要编写部分学生基本信息管理系统:

学生信息管理系统内共包含了7个不同的函数,而每一个函数是一个模块,并对它们具体编写,使之具有不同的功能,能实行相应的操作。

3.1各模块功能分析

1.增添学生信息:

增添学生信息包括增添学生的姓名、学号、基本科目的成绩等,用voidsadd()函数去实现。

2、删除学生信息:

具体定义voidsremove();

函数,使之实现其功能。

3、查找学生信息:

定义voidssearch()函数去具体实现其操作,可以输入学号或姓名找到相应学生的信息,若不存在,则显示“未找到”。

4、排序:

根据学生情况,先定义voidstaxis()函数可选择按学号排序和以总分排序,然后,分别用voidpxh()函数和voidpAA()函数去实现它们的具体功能。

5、保存学生信息:

定义voidssave()函数

6、读取学生信息:

定义voidsread()函数,具体解法可从源程序中得出。

7、处理学生信息模块菜单:

具体功能由voidMenu()函数实现。

此模块可如下编写:

intstudentlist:

:

MenuSelect()//处理学生信息模块菜单

{

chars[10];

intcn;

cout<

<

"

\t**********************\n"

;

\t-----学生信息管理-----\n"

\t1……增加学生\n"

\t2……删除学生\n"

cout<

\t3……修改学生\n"

\t4……查询学生信息\n"

\t5……排序\n"

\t6……保存信息\n"

\t7……读取信息\n"

\t0.返回主菜单\n"

\t选择0-7:

for(;

{

gets(s);

cn=atoi(s);

if(cn>

7)

cout<

\n\t输入错误,重选0-7:

else

break;

}

returncn;

}

3.2类、函数及说明

本链表里定义的类如下:

一.

#definemax100000

#include<

string>

usingnamespacestd;

classstudent//定义student类

{

public:

student*next;

stringname;

//学生姓名

longnum;

//学生学号

intx,y,z;

//学生成绩

intAA;

//学生总成绩

voidplay();

//显示函数

student(stringsname,longsnum,intsx,intsy,intsz);

//构造函数

};

二.

#include"

student.h"

classstudentlist

private:

student*stu;

intMenuSelect();

//显示和处理学生信息模块菜单

studentlist()//构造函数初始化

{

stu=0;

sread();

}

~studentlist()//定义析构函数

student*p;

p=stu;

while(p)

{

p=p->

next;

deletestu;

stu=p;

}

voidsadd();

//增添学生信息

voidsremove();

//删除学生信息

voidsamend();

//修改学生信息

voidssearch();

//查找学生信息

voidstaxis();

//排序

voidssave();

//保存学生信息

voidsread();

//读取学生信息

voidpxh();

//以学号排序

voidpAA();

以总分排序

voidMenu();

//处理学生信息模块菜单

3.3重要模块算法

运用“冒泡法”,以学生的学号或总成绩排序:

下面例举出运用指针按学号从小到大排序

voidstudentlist:

pxh()//按学号从小到大排序

student*p1,*p2;

intn;

p1=stu;

n=1;

while(p1->

next)

{n++;

p1=p1->

共有"

n<

条信息..."

endl;

inti;

for(i=1;

i<

n;

i++)

p1=stu;

if(p1->

num>

p1->

next->

num)

p2=p1->

p1->

next=p1->

p2->

next=p1;

stu=p2;

while(p1->

p2=p1;

p1=p1->

if(p1->

{

p2->

p1->

p1=p2->

}

do

p1->

play();

p1=p1->

}while(p1);

}

显示结果下图所示:

按总分从小到大排序

4系统测试

1.界面管理:

进入1,学生资料管理系统

2.主菜单管理:

进入6,排序

可以分为按学号从小到大和按成绩从低到高两种排序方式:

3,功能选择:

4.删除和修改学生信息:

5.保存和读取学生信息:

输入相应的数字,即可以得到相应的结果,进行对应的操作,若操作错误,则会给出相应的提醒。

5心得体会

整整两周的程序设计弄我把本以为开学的轻松抛得一干二净,只是在心中默默地说到“要想把一个程序设计完全弄好还真不是一件简单的是。

虽然,上学期我们也搞了C语言程序设计,可跟这次比起来真的是有一定的差距。

因为上学期老师不是抓的太严,所以我们大部分的人的任务是只要把程序看懂就足够了,而源程序一般都是从网上找的,实践报告也马马虎虎就能过了,可这学期完全不同。

因为三个人一组每人都必须要有自己的链表,所以网上的程序一般都不符合老师要求,我们只能认认真真地也了。

在大家的共同努力下,我们总算将此程序设计出来。

尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个大型程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。

另外平时扎实的基础也很关键,因为如果你平时学得就不怎么样,那么你面对这么一个比较有难度的程序,你可能会望而却步,看他人的程序都是个难点,更别说让你自己去设计。

为了解决此。

类问题,最好就是多向同学,老师请教,不要怕难为情。

尤其是老师,评他们多年的编写程序的经验,要解决我们的问题,对他们来说只是smallcase。

在设计这个程序时,我们刚开始是根据老师给我们提供的资料,用画图以及循环将框架设计出来,但是接下去便无从下手了,计算是个关键和难点,我们也查了相应的资料,但是它上面用得是坐标来做的,所以为了方便设计程序,我们也改为坐标来做的,这样计算问题解决了。

接下去就是按键问题,我们的资料是用鼠标做的,所以关于按键这个函数就只能我们自己设计,还好手头有类似的资料,经过自己的反复尝试以及与与同学的讨论,这也不难,最好还是被我们搞定了。

最后就是闪烁,这个设计的方法很死板,都一个类型,就是算坐标比较烦琐,要确定好它的位置,但是这些只要你自己愿意去尝试,问题都可以迎刃而解的。

在学程序的过程中,还确实遇到了不少麻烦。

首先,因为我们都已经习惯了把所有程序都写在一起,而老师要求必须分模块写,确实这样做对我们真的是有很大的帮助,特别有利于错误的查找;

接着是链表的应用,由于以前很少接触链表,在C语言中我们也只学了一些简单的数组和指针等,而链表是属于数据结构部分,我们这学期才开始学习,特别对于排序,要用到链表就更有一定的难度。

于是,只好看书、查找资料,认真地去学习,去理解,终究还是有所收获。

在编写“stuent”链表的时候,我给它设计了不同的独立模块,分别去实现不同的功能。

如:

增添学生信息、删除学生信息、修改学生信息、查找学生信息、排序、保存学生信息读取学生信息、以学号排序、以总分排序和处理学生信息模块菜单等。

不停地思索,然后不停地学习,看着程序一点点地被自己亲手编写出来正是有一种说不出的高兴,即使有些部分是仿照老师的编写的。

呵呵,原来,只要肯学就一定会有所所获!

参考文献

[1]严蔚敏吴伟民.数据结构(C语言版)北京:

清华大学出版社

[2]王竹林.校园网组建与管理[M].北京:

清华大学出版社,2002

[3]陈维兴,林小茶《C++面向对象程序设计教程》清华大学出版

[4]网站:

附录源程序

#include"

iostream>

student:

student(stringsname,longsnum,intsx,intsy,intsz)//初始化构造函数

name=sname;

num=snum;

x=sx;

y=sy;

z=sz;

voidstudent:

play()

{cout<

name<

学生的学号是"

num<

数学:

x<

语文:

<

y<

英语:

z<

总分:

AA<

/*******************************************************************/

studentlist.h"

fstream>

voidstudentlist:

sadd()//增添学生信息

student*q;

stringname1;

longnum1;

intx1,y1,z1;

system("

cls"

);

\n**增加的学生**\n"

请输入学生的(中间用空格间隔)"

姓名学号数学成绩语文成绩英语成绩:

cin>

>

name1>

num1>

x1>

y1>

z1;

q=newstudent(name1,num1,x1,y1,z1);

q->

next=0;

AA=x1+y1+z1;

if(stu)

student*t;

t=stu;

if(t->

num==num1)

学号已存在,请重新输入"

return;

while(t->

if(t->

cout<

return;

t=t->

t->

next=q;

else

stu=q;

输入完毕"

sremove()//删除学生信息

intnum1;

\n**删除学生信息**\n"

请输入想要删除学生的学号:

num1;

while(p1)

if(p1->

else

if(p1!

=NULL)

确定删除吗?

[Y/N]"

charc;

cin>

c;

if(toupper(c)!

='

Y'

)return;

if(p1==stu)

stu=p1->

deletep1;

找到学号为"

num1<

的学生,并删除\n"

未找到想要删除的学生!

\n"

samend()//修改学生信息

\n**修改学生信息**\n"

输入要修改学生的学号"

=NULL)

学号是"

的学生的信息"

姓名"

数学"

语文"

英语"

请输入修改后的信息:

姓名数学成绩语文成绩英语成绩"

name>

x>

y>

z;

AA=p1->

x+p1->

y+p1->

修改成功"

未找到!

ssearch()//查找学生信息

\n**查询学生信息**\n"

请输入查询方式:

1.按学号查询"

2.按姓名查询"

3.返回"

charc;

switch(c)

case'

1'

longnum1;

要查询的学号"

cin>

student*p1,*p2;

p1=stu;

while(p1)

if(p1->

break;

else

{

p2=p1;

p1=p1->

}

if(p1!

姓名:

数学:

语文:

英语:

查询完毕..."

else

2'

stringname1;

要查询的学生姓名"

name1;

name==name1)

name1<

学号:

3'

return;

p1

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

当前位置:首页 > 高等教育 > 理学

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

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