用C++编写的学籍管理系统Word文档下载推荐.docx
《用C++编写的学籍管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《用C++编写的学籍管理系统Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。
面向对象方法所强调的基本原则就是直接面对客观存在的事物来进行软件开发,将人们在日常生活中习惯的思维方式和表达方式应用在软件开发中,使软件开发从过分专业化的方法、规则和技巧中回到客观世界,回到人们通常的思维。
那么,学习C++语言是否应该首先学习C语言呢?
不是的。
虽然C++语言是从C语言发展而来的,但是C++本身也是一个完整的程序设计语言,而且它与C语言的程序设计思想是完全不同的。
我们学习的进程不必严格遵循科学技术的发展进程,只有尽快地掌握最新的理论和技术,才能站到巨人的肩膀上。
我们认为,C++语言是可以作为程序设计的入门语言来学习的。
目录
目录1
一、课程设计目的与要求2
二、设计主要仪器设备和材料2
三、设计内容与步骤2
四、程序编写3
五、小结与展望20
六、致谢21
七、主要参考文献21
一、课程设计目的
用C++的面向对象程序设计(OOP)思想设计一个简单的学籍管理系统。
1、建立工程完成本设计,工程中至少包括二个源程序文件和一个头文件;
2、源程序要有适当的注释,使程序容易阅读;
3、最好采用文本菜单界面。
4、定义的类中包括私有成员,如存放学生数据的结构数组,学生人数可以为几十人,学生基本信息主要包括:
学号姓名性别课程编号课程名称学分平时成绩卷面成绩综合成绩实得学分。
公有成员函数主要有构造函数、析构函数,查询、统计、删除等功能。
5、鼓励自己根据设计情况增加功能。
6、写出课程设计报告,具体要求见相关说明文档。
7、18周周五下午三点答辩,每位学生提交软件和报告。
二、设计主要仪器设备和材料
序号
名称
主要用途
计算机
三、设计内容和步骤
(1)数据录入功能:
综合成绩、实得学分由程序根据条件自动运算。
综合成绩的计算:
综合成绩=平时成绩*30%+卷面成绩*70%.
实得学分的计算:
采用等级学分制.
综合成绩在90-100之间,应得学分=学分*100%
综合成绩在80-90之间,应得学分=学分*80%
综合成绩在70-80之间,应得学分=学分*75%
综合成绩在60-70之间,应得学分=学分*60%
综合成绩在60以下,应得学分=学分*0%
(2)查询功能:
分为学生基本情况查询和成绩查询两种
A:
学生基本情况查询:
输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。
B:
成绩查询:
B1:
输入一个学号时,查询出此生的所有课程情况,格式如下:
学号:
xx姓名:
xxxxx
课程编号:
xxx课程名称:
xxxxx综合成绩:
xxxx实得学分:
xx
………………………
共修:
xx科,实得总学分为:
xxx
(3)统计功能:
比如统计某门课程不及格人数等。
(4)删除功能:
如学生退学,能删除这个学生的所有信息。
注意,删除就是移动,使存放这个学生数据的元素之后的数据上移。
四、程序编写
//文件一,类的定义与函数的声明,student.h
#include<
iostream>
string>
iomanip>
usingnamespacestd;
////////////学生成绩结构体////////////
structscore
{
floatyw;
//语文成绩
floatsx;
//数学成绩
floatyy;
//英语成绩
floatwl;
//物理成绩
floatcjj;
//C++成绩
floatsum;
//总成绩
floatavar;
//平均成绩
floatzxf;
//实得总学分
structscore*next;
//定义结构指针next
};
////////////学生数据类////////////
classstudent
public:
student(){}
~student(){}//析构函数
stringmun;
//学号
stringname;
//姓名
stringsex;
//性别
scorexf;
//学分
scorepscj;
//平时成绩
scorejmcj;
//卷面成绩
scorezhcj;
//综合成绩;
scoresdxf;
//实得学分
scoresdzxf;
//实得总学分
classstudent*next;
//定义结构指针next
////////////函数声明//////////////
voidinput(student*head);
//录入数据
voidAsearch(student*head);
//学生基本信息查询
voidBsearch(student*head);
//成绩查询
voidchange(student*head);
//修改数据
voidshanchu(student*head);
//删除数据
voidtongji(student*head);
//统计数据
voidshow(student*head);
//显示数据
voiddisplay();
//显示菜单
floatsdxfjs(floatzhcj,floatxf);
//计算实得学分
//文件二,类的实现与函数的定义,student.cpp
#include<
#include"
student.h"
intamount=0;
//记录学生个数
//////////////显示菜单////////////////
voiddisplay()
cout<
<
"
/////////////学生学籍管理系统/////////////"
endl<
endl;
////////1、学生数据的录入////////"
////////2、学生数据的修改////////"
////////3、学生信息的显示////////"
////////4、学生信息的查询////////"
////////5、学生成绩的统计////////"
////////6、学生信息的删除////////"
////////7、退出系统////////"
注:
请输入相应括号里的数字来执行相关的操作!
"
///////欢迎您使用学生学籍管理系统!
///////"
请选择相应的数字进行操作:
}
////////////////显示学生数据//////////////////
voidshow(student*head)
student*stu=head->
next;
while(stu!
=NULL)
{
cout<
学号:
(*stu).mun<
setw(8)<
姓名:
(*stu).name<
性别:
(*stu).sex<
|课程编号|课程名称|平时成绩|卷面成绩|综合成绩|应得学分|实得学分"
|"
001"
语文"
(*stu).pscj.yw<
(*stu).jmcj.yw;
(*stu).zhcj.yw<
(*stu).xf.yw<
setw(6)<
(*stu).sdxf.yw<
002"
数学"
(*stu).pscj.sx<
(*stu).jmcj.sx;
(*stu).zhcj.sx<
(*stu).xf.sx<
(*stu).sdxf.sx<
003"
英语"
(*stu).pscj.yy<
(*stu).jmcj.yy;
(*stu).zhcj.yy<
(*stu).xf.yy<
(*stu).sdxf.yy<
004"
物理"
(*stu).pscj.wl<
(*stu).jmcj.wl;
(*stu).zhcj.wl<
(*stu).xf.wl<
(*stu).sdxf.wl<
005"
C++"
(*stu).pscj.cjj<
(*stu).jmcj.cjj;
(*stu).zhcj.cjj<
(*stu).xf.cjj<
(*stu).sdxf.cjj<
所有课目的总成绩为:
(*stu).zhcj.sum<
;
所有课目的平均成绩:
(*stu).zhcj.avar<
该学生共修:
5科"
实得总学分为:
(*stu).sdzxf.zxf<
stu=stu->
}
////////////////学生数据录入/////////////////
voidinput(student*head)
charc;
intj=0;
student*p=head;
do
student*stu=newstudent;
//动态创建对象,调用默认构造函数进行初始化学生学籍管理系统的数据
请输入学生学号:
setw(10);
cin>
>
(*stu).mun;
请输入学生姓名:
(*stu).name;
请输入学生性别(男/女):
setw
(2);
(*stu).sex;
请输入学生的语文成绩和学分:
平时成绩:
setw(5);
(*stu).pscj.yw;
卷面成绩:
学分:
(*stu).xf.yw;
请输入学生的数学成绩和学分:
(*stu).pscj.sx;
(*stu).xf.sx;
请输入学生的英语成绩和学分:
(*stu).pscj.yy;
(*stu).xf.yy;
请输入学生的物理成绩和学分:
(*stu).pscj.wl;
(*stu).xf.wl;
请输入学生的C++成绩和学分:
(*stu).pscj.cjj;
(*stu).xf.cjj;
///////////////////////综合成绩的计算/////////////////////
(*stu).zhcj.yw=((*stu).pscj.yw)*0.30+((*stu).jmcj.yw)*0.70;
(*stu).zhcj.sx=((*stu).pscj.sx)*0.30+((*stu).jmcj.sx)*0.70;
(*stu).zhcj.yy=((*stu).pscj.yy)*0.30+((*stu).jmcj.yy)*0.70;
(*stu).zhcj.wl=((*stu).pscj.wl)*0.30+((*stu).jmcj.wl)*0.70;
(*stu).zhcj.cjj=((*stu).pscj.cjj)*0.30+((*stu).jmcj.cjj)*0.70;
/////////////////总成绩和平均成绩的计算////////////////////
(*stu).zhcj.sum=(*stu).zhcj.yw+(*stu).zhcj.sx+(*stu).zhcj.yy+(*stu).zhcj.wl+(*stu).zhcj.cjj;
(*stu).zhcj.avar=(*stu).zhcj.sum/5.0;
////////////////////实得学分的计算////////////////
(*stu).sdxf.yw=sdxfjs((*stu).zhcj.yw,(*stu).xf.yw);
(*stu).sdxf.sx=sdxfjs((*stu).zhcj.sx,(*stu).xf.sx);
(*stu).sdxf.yy=sdxfjs((*stu).zhcj.yy,(*stu).xf.yy);
(*stu).sdxf.wl=sdxfjs((*stu).zhcj.wl,(*stu).xf.wl);
(*stu).sdxf.cjj=sdxfjs((*stu).zhcj.cjj,(*stu).xf.cjj);
(*stu).sdzxf.zxf=(*stu).sdxf.yw+(*stu).sdxf.sx+(*stu).sdxf.yy+(*stu).sdxf.wl+(*stu).sdxf.cjj;
stu->
next=p->
p->
next=stu;
amount++;
//若成功录入一个学生数据,则学生人数加1
数据录入成功,想继续录入吗?
(y/n)"
c;
p=p->
while(c!
='
y'
&
c!
n'
)
{
cout<
//////指令错误(请输入y或者n!
)//////"
cin>
}
}while(c=='
);
j++;
录入了"
amount<
个学生的信息"
////////////////学生的基本信息查询///////////////////
voidAsearch(student*head)
student*stu=head->
boolflag=0;
请输入你要查询学生的姓名:
name;
do
if(stu!
=NULL&
name==(*stu).name)//输出查询学生的基本信息
{
flag=1;
cout<
}
stu=stu->
}while(stu!
=NULL);
if(flag==0)