《学生成绩管理软件》设计文档Word格式文档下载.docx
- 文档编号:6625683
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:42
- 大小:254.85KB
《学生成绩管理软件》设计文档Word格式文档下载.docx
《《学生成绩管理软件》设计文档Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《学生成绩管理软件》设计文档Word格式文档下载.docx(42页珍藏版)》请在冰点文库上搜索。
程序中每一种数据类型用一个类来实现,共设计了1个类。
类base。
类定义了相应的处理各功能的函数及主界面与推出界面。
具体定义如下所示:
(1)结构体structstudent
结构体中定义了int型变量num;
char型数组变量name[20];
float型变量math;
float型变量Eglish;
float型变量Chinese;
float型变量sum;
floa型变量taverage;
int型变量banji;
(2)类base
类base中,定义了:
voidjiemian();
函数:
主要是对界面的统一存放、及利于使用者根据提示进入不同的函数功能区;
voidtuichu();
对退出程序的管理界面;
voidxiugai_score()函数:
对学生成绩的修改函数;
voidtongji_score()函数:
对学生成绩的统计函数;
voidset_score()函数:
对学生成绩的录入;
voiddisplay_score()函数:
显示学生的成绩;
voidsearch_score()函数:
对学生成绩的查询;
并且定义了结构体变量studentstu[100]:
用于存放学生的信息;
及int型变量renshu;
3各函数的功能
界面函数:
jiemian()
主要提示使用者进入不同的功能区。
(1)录入成绩的函数:
voidset_score()
根据提示输入renshu的值;
进入成绩录入循环;
待录入完成后,返回主界面,重新选择下一项功能。
(2)查询学生信息的函数:
voidsearch_score()
根据提示选择不同的查询方式:
1.查询学生的成绩。
2.查询不及格同学的信息。
3.查询学生的名单。
0.返回主界面。
(3)成绩的修改函数:
voidxiugai_score()
根据提示选择不同的修改方式进行相应的修改
(4)统计学生成绩的函数:
voidtontji_score()
出现提示界面:
1、求学生成绩的总分;
2、求学生成绩的平均分;
3、根据学生的平均分对学生的成绩进行排序;
(5)退出程序的函数:
voidtuichu_score()
退出程序;
欢迎下次使用的提示。
4基本功能要求
(1)功能选择可以用菜单来实现
首先是界面*******************
~@^_^@~~@^_^@~
欢迎使用学生成绩管理系统
***********************
请选择(1—6)0★1.成绩的录入0.★2:
修改学生的成绩
★3:
统计学生的成绩
★4:
查询学生的成绩
★5.输出学生的信息
★6:
退出程序
(2)程序结构图
接口设计
外部接口
内部接口
数据结构设计
1逻辑结构设计
数据结构与程序的关系
使用说明
安装与初始化
【在VC6.0环境下直接运行程序即可。
软件主要功能的使用说明
【对软件主要功能的操作和输入输出做简要的说明】
6.运行结果
程序运行时,首先出现主界面菜单,由用户进行功能选择,选择不同的数字,进入不同的功能区。
如图2所示。
图2程序运行主界面
选择1,则显示次级菜单,进入成绩录入界面,如图3所示。
图3成绩录入界面
选择1,进行成绩录入功能,如图4所示。
图4成绩录入
选择0后返回主界面进行其它的操作
图5返回主界面
选择2,进入修改界面:
修改界面
按1,通过寻找姓名的方式查找后修改
选3,进行学生成绩的统计
选4,进入查询界面
按2、3分别进入查询不及格科目及学生的成绩
查询不及格科目结果
查询学生的成绩
选5输出学生的成绩界面
选1输出学生的科目成绩
选2输出学生的总体成绩
第一部分基础实训
第1章类与对象的创建
一、实验目的
1.掌握C++类的概念和基本组成,学会设计类,掌握类的使用方法;
2.熟悉各种成员函数包括构造函数、析构函数、内嵌函数的定义与使用;
3.掌握静态数据成员的使用。
4.掌握C++类的概念和基本组成,学会设计类,掌握类的使用方法;
5.熟悉各种成员函数包括构造函数、析构函数、内嵌函数的定义与使用;
6.掌握静态数据成员的使用。
二、实验内容及步骤
1.在下面的类定义中找出语法错误:
(1)classAA
{
public:
voidprint();
intsum();
AA(){}
AA(int,int);
private:
intx=0;
//私有变量定义时不能初始化
inty;
};
(2)classBB
intone;
inttwo;
boolequal();
BB(int,int);
}//没有分号
(3)classCC
voidset(intx,inty);
CC(){}
CC(intx,inty);
//重载错误
boolCC(intx,inty);
intx;
};
2.改正以下程序中的错误,并分析错误原因。
#include<
iostream.h>
classpoint
{
intx1,x2;
public:
point(intx=0,inty=0){
x1=x;
x2=y;
}//增加的构造函数
intgetx1(){returnx1;
}
intgetx2(){returnx2;
};
voidmain()
{
pointdata(5,5);
cout<
<
data.getx1()<
endl;
data.getx2()<
3.分析找出以下程序中的错误,说明错误原因,给出修改方案使之能正确运行。
#include<
classone
inta1,a2;
one(intx1,intx2){a1=x1;
a2=x2;
onedata(2,3);
data.a1<
data.a2<
4.分析以下程序的错误原因,给出修改方案使之能正确运行。
#include<
classAmplifier
floatinvol,outvol;
Amplifier(floatvin,floatvout)
invol=vin;
outvol=vout;
}
floatgain();
//增加返回类型
floatAmplifier:
:
gain(){returnoutvol/invol;
}//增加返回类型
Amplifieramp(5.0,12.0);
"
Thegainis=>
amp.gain()<
5.考虑下面的声明:
#include"
iostream.h"
classxClass
voidfunc();
voidprint()const;
xClass(){u=0;
w=0;
}//第六题
xClass(intx,doubley){u=x;
w=y;
private:
intu;
doublew;
voidxClass:
func(){
u=10;
w=15.5;
}//第四题的答案
print()const{
u<
w<
}//第五题的答案。
xClasst(20,35.4);
t.print();
}
(1)类xClass有几个成员?
答:
有四个成员。
(2)类xClass有几个私有成员?
有两个。
(3)类xClass有几个构造函数?
(4)编写成员函数func,将u和w的值分别设置为10和15.5。
(5)编写成员函数print,打印u和w的值。
(6)编写xClass类的默认的构造函数的定义,将私有成员初始化为0。
(7)编写c++程序,声明xClass类的对象t,并将t的数据成员分别初始化为20和35.4,并打印数据成员的值。
6.考虑下面类的定义:
//
(1)为testClass编写成员函数的定义
//
(2)编写程序,测试testClass类的各种操作。
classtestClass
intsum(){returnx+y;
}//返回私有成员的和
voidprint()const{cout<
x="
x<
;
y="
y<
}//输出私有成员的值
testClass(){x=0;
y=0;
}//默认构造函数,将私有成员初始化为0
testClass(inta,intb){x=a;
y=b;
}//带参数的构造函数
testClasst;
x+y="
t.sum()<
testClassp(12,34);
p.print();
p.sum()<
}}7.考虑下面类的定义:
classkClass
kClass(){x=0;
}//line1
kClass(intx1){x=x1;
}//line2
kClass(intx1,intx2){x=x1;
y=x2;
}//line3
kClass(doublex1,intx2){x=x2;
y=x1;
}//line4
voidshow(){cout<
doubley;
/*
(1)当有下面声明时,给出其所执行的构造函数的行号:
kClassone;
kClasstwo(5,6);
kClassthree(3.5,8);
(2)编写第1行的构造函数的定义,使私有数据成员初始化为0。
(3)编写第2行的构造函数的定义,使私有数据成员u初始化为相应的参数
值,v初始化为0。
(4)编写第3行、第4行的构造函数的定义,使私有数据成员初始化为相应的参数值。
*/
kClassone;
one.show();
kClasstwo(5,6);
two.show();
kClassthree(3.5,8);
three.show();
8.设计一个Date类,包含数据成员year、month、day,定义构造函数对日期进行初始化,定义成员函数Print()输出日期。
构造一个Birthday的对象进行测试。
classData
Data(intx,inty,intz){year=x;
month=y;
day=z;
voidprint(){cout<
年/月/日:
year<
/"
month<
day<
intyear;
intmonth;
intday;
DataBrithday(1989,12,27);
Brithday.print();
9.设计一个用于人事管理的Person类,它的成员数据有:
编号(id)、姓名(name)、身份证号(idcard)、性别(sex)、出生日期(birthday).其中出生日期为Date类的内嵌子对象。
编写相应的构造函数和析构函数,并构造一个Person对象进行测试。
string.h"
classData{
classPerson{
Person(intp1,charp2[],charp3[],charp4[],Datap5);
voidshow();
intid;
charname[20];
charidcard[20];
charsex[10];
Databrithday;
Person:
Person(intp1,charp2[],charp3[],charp4[],Datap5):
brithday(p5)
id=p1;
strcpy(name,p2);
strcpy(idcard,p3);
strcpy(sex,p4);
voidPerson:
show()
id<
endl<
name<
idcard<
sex<
{Datat(1998,5,6);
Personp1(12,"
ihn"
"
kk"
nv"
t);
p1.show();
10.设计定义图书类(Book类):
Book类应该包含书的如下信息:
书名、作者(最多4个)、出版社、国际标准图书编号、价格、库存数。
为了知道作者人数,另有一个信息表示作者数。
Book类应该包含实现各种操作的成员函数,例如:
针对书名的一般操作有显示书名,设置书名,检查是否有相同的书名.......类似地,针对库存数的一般操作有显示库存数,设置库存数,更新库存数,返回库存数......针对书的作者、出版社、国际标准图书编号、价格,添加类似操作,并添加合适的构造函数和析构函数(如果需要)。
编写使用Book类的程序,并测试Book类对象的各种操作。
声明有10个Book类型的元素的数组,执行以下操作:
通过书名检索书籍信息、通过国际标准图书编号检索书籍信息、更新库存数。
classBook{
Book();
Book(charp1[],charp2[],charp3[],intp4[],intp5);
//构造函数
voidShow_bookname(){cout<
B_name<
}//显示书名
voidSet_bookname();
//设置书名
voidCheck_bookname();
//检查是否有相同书名
voidShow_stocknumber(){cout<
S_number<
}//显示库存数
charB_name[20];
//书名
charAuthor[20];
//作者名
charPress[20];
//出版社名
intNumber[15];
//图书编号
intPrice;
//价格
intS_number;
//库存数
Book:
Book(charp1[],charp2[],charp3[],intp4[],intp5){
Price=p5;
strcpy(B_name,p1);
strcpy(Author,p2);
strcpy(Press,p3);
Number=p4;
voidBook:
Set_bookname(){
getx(name);
strcpy(B_name,name);
Bookbook[10];
第2章继承性与派生类
1.掌握派生的类别与方式;
2.了解派生类中如何使用基类的成员、基类成员在派生类中的访问控制。
二、实验内容
1.分析下列程序中的访问权限,并回答所提的问题。
classA{
voidf1(){cout<
A:
A(){i1=10;
j1=11;
}
protected:
intj1;
inti1;
classB:
publicA
voidf2(){cout<
B:
}
B(){i2=20;
j2=21;
inti2;
intj2;
classC:
publicB
voidf3(){cout<
c:
C(){i3=30;
j3=31;
intj3;
inti3;
voidmain()
Aa;
Bb;
Cc;
回答下列问题:
1派生类B中成员函数f2()能否访问基类A中的成员f1(),i1和j1呢?
能访问j1,不能访问i1,能访问f1()。
2派生类B的对象b能否访问基类A中的成员f1(),i1和j1呢?
能访问j1,不能访问i1,能访问f1()。
3派生类C中成员函数f3()能否访问直接基类B中的成员f2()和j2呢?
能否访问间接基类A中的成员f1(),j1和i1呢?
不能访问j2,能访问f2();
能访问f1(),j1,不能访问i1
④派生类C的对象c能否访问直接基类B中的成员f2(),i2和j2呢?
能访问f2(),不能访问i2,j2;
能访问f1(),不能访问i1,j1.
2.指出下面程序中的错误,改正并运行。
classPoint
Point();
Point(intx,inty){x1=x;
x2=y;
intx_cord(){returnx1;
inty_cord(){returnx2;
Pointdata(5,6);
data.x_cord()<
data.y_cord()<
Pointmore_data[20];
3.指出并改正下面程序中的错误。
classPoint
intx,y;
Point(inta=0,intb=0){x=a;
y=b;
voidmove(intxoffset,intyoffset){x+=xoffset;
y+=yoffset;
intgetx(){returnx;
intgety(){returny;
classRectangle:
publicPoint
{intlength,width;
Rectangle(intx,inty,intl,intw):
Point(x,y){length=l;
width=w;
intgetlength(){returnlength;
intgetwidth(){returnwidth;
Rectangler(0,0,8,4);
r.move(23,56);
r.getx()<
r.gety()<
r.getlength()<
r.getwidth()<
4.指出并改正下面程序中的错误。
ios
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生成绩管理软件 学生 成绩 管理软件 设计 文档