用C++编写的学籍管理系统.docx
- 文档编号:3659513
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:27
- 大小:53.54KB
用C++编写的学籍管理系统.docx
《用C++编写的学籍管理系统.docx》由会员分享,可在线阅读,更多相关《用C++编写的学籍管理系统.docx(27页珍藏版)》请在冰豆网上搜索。
用C++编写的学籍管理系统
《C++语言程序设计》
题目:
学生学籍管理系统的程序设计
系别:
自动化学院
专业:
07电气工程及其自动化
(低压电力智能控制方向)
姓名:
谭善文
学号:
2007104743002
指导教师:
曹晶
设计日期:
2010年1月1日—2010年1月7日
前言
本书的编写背景C++语言是从C语言发展演变而来的一种面向对象的程序设计语言。
C++语言的主要特点表现在两个方面,一是全面兼容C,二是支持面向对象的方法。
面向对象的程序设计(OOP)方法将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体——对象。
对同类型对象抽象出其共性,形成类。
类中的大多数数据只能用本类的方法进行处理。
类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。
这样,程序模块间的关系简单,程序模块的独立性、数据的安全性具有良好的保障。
同时通过继承与多态性,使程序具有很高的可重用性,使软件的开发和维护都更为方便。
由于面向对象方法的突出优点,目前它已经成为开发大型软件时所采用的主要方法,而C++语言是面向对象的程序设计语言中应用最广泛的一种。
长期以来,C++语言被认为是较难使用的专业开发语言,非计算机专业人员常常不敢问津,在大学的非计算机专业中也很少被列为必修课讲授。
那么C++语言与面向对象的程序设计方法是否真的是比较高深、难以掌握的技术呢?
答案是否定的。
其实,C语言在它产生的初期,也只被少数专业开发人员使用。
但随着计算机科学的发展,计算机技术已渗透到各学科的研究和应用之中,C语言已经被各专业的工程技术人员广泛应用于本专业的科研开发。
C++全面兼容了C,同时提供了比C更严格更安全的语法,从这个意义上讲,C++首先是一个更好的C。
C++语言是一种面向对象的编程语言,而面向对象的程序设计(OOP)一度被看作是一门比较高深的技术,这是因为在面向对象的系统分析(OOA)和面向对象的系统设计(OOD)理论出现之前,程序员要写一个好的面向对象程序,首先要学会运用面向对象的方法来认识问题和描述问题。
现在,OOP的工作比较简单了,认识问题域与设计系统成分的工作已经在系统分析和设计阶段完成,OOP的工作就是用一种面向对象的编程语言把OOD模型中的每个成分书写出来。
面向对象方法的出现,实际上是程序设计方法发展的一个返朴归真的过程。
从本质上讲,软件开发就是对软件所要处理的问题域进行正确的认识,并把这种认识正确地描述出来。
面向对象方法所强调的基本原则就是直接面对客观存在的事物来进行软件开发,将人们在日常生活中习惯的思维方式和表达方式应用在软件开发中,使软件开发从过分专业化的方法、规则和技巧中回到客观世界,回到人们通常的思维。
那么,学习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
课程编号:
xxx课程名称:
xxxxx综合成绩:
xxxx实得学分:
xx
课程编号:
xxx课程名称:
xxxxx综合成绩:
xxxx实得学分:
xx
………………………
共修:
xx科,实得总学分为:
xxx
(3)统计功能:
比如统计某门课程不及格人数等。
(4)删除功能:
如学生退学,能删除这个学生的所有信息。
注意,删除就是移动,使存放这个学生数据的元素之后的数据上移。
四、程序编写
//文件一,类的定义与函数的声明,student.h
#include
#include
#include
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
#include
#include"student.h"
usingnamespacestd;
intamount=0;//记录学生个数
//////////////显示菜单////////////////
voiddisplay()
{
cout<<"/////////////学生学籍管理系统/////////////"< cout<<"////////1、学生数据的录入////////"< cout<<"////////2、学生数据的修改////////"< cout<<"////////3、学生信息的显示////////"< cout<<"////////4、学生信息的查询////////"< cout<<"////////5、学生成绩的统计////////"< cout<<"////////6、学生信息的删除////////"< cout<<"////////7、退出系统////////"< cout<<"注: 请输入相应括号里的数字来执行相关的操作! "< cout<<"///////欢迎您使用学生学籍管理系统! ///////"< cout<<"请选择相应的数字进行操作: "< } ////////////////显示学生数据////////////////// voidshow(student*head) { student*stu=head->next; while(stu! =NULL) { cout<<"学号: "<<(*stu).mun< "<<(*stu).name< "<<(*stu).sex< cout<<"|课程编号|课程名称|平时成绩|卷面成绩|综合成绩|应得学分|实得学分"< cout<<"|"<<"001"<<"|"<<"语文"<<"|"< cout<<"|"< cout<<"|"<<"002"<<"|"<<"数学"<<"|"< cout<<"|"< cout<<"|"<<"003"<<"|"<<"英语"<<"|"< cout<<"|"< cout<<"|"<<"004"<<"|"<<"物理"<<"|"< cout<<"|"< cout<<"|"<<"005"<<"|"<<"C++"<<"|"< cout<<"|"< cout<<"所有课目的总成绩为: "<<(*stu).zhcj.sum<<""; cout< "<<(*stu).zhcj.avar< cout<<"该学生共修: "<<"5科"<<""<<"实得总学分为: "<<(*stu).sdzxf.zxf< stu=stu->next; } } ////////////////学生数据录入///////////////// voidinput(student*head) { charc; intj=0; student*p=head; do { student*stu=newstudent;//动态创建对象,调用默认构造函数进行初始化学生学籍管理系统的数据 cout<<"请输入学生学号: "< cin>>(*stu).mun; cout<<"请输入学生姓名: "< cin>>(*stu).name; cout<<"请输入学生性别(男/女): "< (2); cin>>(*stu).sex; cout<<"请输入学生的语文成绩和学分: "< cout<<"平时成绩: "< cin>>(*stu).pscj.yw; cout<<"卷面成绩: "< cin>>(*stu).jmcj.yw; cout<<"学分: "< cin>>(*stu).xf.yw; cout<<"请输入学生的数学成绩和学分: "< cout<<"平时成绩: "< cin>>(*stu).pscj.sx; cout<<"卷面成绩: "< cin>>(*stu).jmcj.sx; cout<<"学分: "< cin>>(*stu).xf.sx; cout<<"请输入学生的英语成绩和学分: "< cout<<"平时成绩: "< cin>>(*stu).pscj.yy; cout<<"卷面成绩: "< cin>>(*stu).jmcj.yy; cout<<"学分: "< cin>>(*stu).xf.yy; cout<<"请输入学生的物理成绩和学分: "< cout<<"平时成绩: "< cin>>(*stu).pscj.wl; cout<<"卷面成绩: "< cin>>(*stu).jmcj.wl; cout<<"学分: "< cin>>(*stu).xf.wl; cout<<"请输入学生的C++成绩和学分: "< cout<<"平时成绩: "< cin>>(*stu).pscj.cjj; cout<<"卷面成绩: "< cin>>(*stu).jmcj.cjj; cout<<"学分: "< cin>>(*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->next; p->next=stu; amount++;//若成功录入一个学生数据,则学生人数加1 cout<<"数据录入成功,想继续录入吗? (y/n)"; cin>>c; p=p->next; while(c! ='y'&&c! ='n') { cout<<"//////指令错误(请输入y或者n! )//////"< cout<<"数据录入成功,想继续录入吗? (y/n)"; cin>>c; } }while(c=='y'); j++; cout<<"录入了"< } ////////////////学生的基本信息查询/////////////////// voidAsearch(student*head) { charc; stringname; do { student*stu=head->next; boolflag=0; cout<<"请输入你要查询学生的姓名: "; cin>>name; do { if(stu! =NULL&&name==(*stu).name)//输出查询学生的基本信息 { flag=1; cout<<"学号: "<<(*stu).mun< "<<(*stu).name< "<<(*stu).sex< cout<<"|课程编号|课程名称|平时成绩|卷面成绩|综合成绩|应得学分|实得学分"< cout<<"|"<<"001"<<"|"<<"语文"<<"|"< cout<<"|"< cout<<"|"<<"002"<<"|"<<"数学"<<"|"< cout<<"|"< cout<<"|"<<"003"<<"|"<<"英语"<<"|"< cout<<"|"< cout<<"|"<<"004"<<"|"<<"物理"<<"|"< cout<<"|"< cout<<"|"<<"005"<<"|"<<"C++"<<"|"< cout<<"|"< cout<<"所有课目的总成绩为: "<<(*stu).zhcj.sum<<""; cout< "<<(*stu).zhcj.avar< cout<<"该学生共修: "<<"5科"<<""<<"实得总学分为: "<<(*stu).sdzxf.zxf< } stu=stu->next; }while(stu! =NULL); if(flag==0) cout<<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 编写 学籍 管理 系统