《C++语言程序设计》课程设计报告学生信息查询系统.docx
- 文档编号:25328232
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:18
- 大小:356.82KB
《C++语言程序设计》课程设计报告学生信息查询系统.docx
《《C++语言程序设计》课程设计报告学生信息查询系统.docx》由会员分享,可在线阅读,更多相关《《C++语言程序设计》课程设计报告学生信息查询系统.docx(18页珍藏版)》请在冰豆网上搜索。
《C++语言程序设计》课程设计报告学生信息查询系统
《C++语言程序设计》
课题设计报告
课题名称:
学生信息查询系统
专业:
电子信息工程
班级:
2班
姓名:
学号:
指导老师:
日期:
2011-05-06
仰恩大学计算机系
一、课程序设计目的(根据情况写)
(1)了解面向对象程序设计与结构化程序设计的内在差别;
(2)了解类和对象的概念,学会对数据进行封装处理,灵活应用类的继承关系,学会用构造函数来进行对象的初始化工作,通过重载构造函数来对对象进行更为深入的数据初始化,用析构函数来清理和释放对象所占用的系统资源;
(3)通过对象指针来访问对象,从而完成对对象数据的调用与返还;
(4)利用动态内存分配在程序的运行中根据实际需要申请内存空间,使用结束后释放所占用的内存空间;
(5)通过继承与派生来简化程序代码简化程序设计,有效利用已有的类模块资源。
(6)以学生信息管理为应用背景,用面向对象程序设计建立学生信息管理程序,实现创建班级、添加学生信息、修改学生信息、删除学生信息、打印学生信息、退出六个程序功能。
开发环境
(1)系统环境:
WindowsXP,Windows7
(2)编程环境:
VisualC++.NET,VisualC++6.x,VisualStudio2005,VisualStudio2010……….等。
二、实现过程
(1)C++编程基础知识介绍
数据类型:
对数据类型定义是非常重要的,它可以为数据在内存中分配适合的存储区域、确定数据范围,并且可以规定数据所能进行的有效操作;
1:
对数据类型的分类有:
2:
常量和变量:
变量(variable):
取值在程序的执行过程中可改变值的量;常量(constant):
取值在程序的执行过程中始终保持不变的量。
又分为文字常量(literalconstant)常变量(也称为符号常量)
3:
运算符和表达式:
包括C++运算符、优先级和结合性;基本运算符及其表达式(即算术运算符及算符表达式;赋值运算符与赋值表达式;自增、自减运算;逻辑运算、逻辑表达式及其求值优化;位运算;逗号运算符与逗号表达式;sizeof()运算符);语句(包括表达式语句;表达式;空语句;复合语句{若干语句}流程控制语句:
用来控制或改变程序的执行方向);算术类型转换和赋值类型转换;求值次序与副作用等知识。
程序流程控制
a:
复合语句:
将多个语句组合在一起,用一对花括号将这些语句组合在一起,称为复合语句(主要用到if、for、while、switch)
分支流程If语句If(条件表达式)
语句1
else
语句2
循环流程While语句While(条件表达式1)
{语句1;
if(条件表达式2)
break;
语句2;
}
语句3;
循环流程for语句for(初始化表达式;条件表达式;循环表达式)
{
循环体语句
}
循环流程switch语句switch(条件表达式)
{
case1:
语句1;break;
……
casen:
语句1;break;
}
*【break语句使用:
用在while,do…while,for和switch语句中,在循环语句中,break用来从最近的封闭循环体内跳出,在switch语句中,break用来跳出switch语句。
】
b:
函数的调用:
调用一个函数就是暂时中断现有程序的运行,转去执行被调用函数,当被调用函数执行结束以后,再返回到中断处继续执行的过程,如下表:
c:
函数的嵌套:
执行过程如下表:
(2)程序的概要设计(流程图)
1:
总体(主函数):
设计学生信息管理系统界面,定义程序功能选择的方式,用switch循环进行程序选择(即程序功能选择);通过构造函数的调用来实现不同函数功能,从而进行程序的使用。
2:
主构造函数:
包括创建班级【Addclass()】、添加学生信息【Addstud()】、修改学生信息【Changestu()】、删除学生信息【Delstu】、打印学生信息【Disstu】五个构造函数。
a:
创建班级【Addclass()】
b:
添加加学生信息【Addstu()】:
d:
修改学生信息【Changestu()】:
c:
删除学生信息【Delstu()】:
f:
打印学生信息【Dispstu()】
(2)程序的详细设计
a:
创建班级
voidCClass:
:
Addclass(char*ClassName,int*CStudent)
{
intn=0;
intClaccName;
if(n!
=10)
{
cout<<"输入班级名称"< cin>>ClassName; clas=newClass(ClassName); n++; cout<<"添加成功"< returntrue; } elsecout<<"班级数超额"< } b: 添加学生信息 voidCClass: Addstu() { if(clas==NULL)未创建班级 …… else已创建班级 { ……定义数据类型 cout<<"请输入学生的学号: "; cin>>studno; while(clas->find(studno)! =-1)查找该学号学生 {存在该学号学生 …………重新输入学号 }; …………完成数据定义 if(clas->count<50)未超数 { clas->student[clas->sum]=newCStudent(studno,idno,name,addr,tel);开辟内存 clas->student[clas->sum]->setMath(math); clas->student[clas->sum]->setEnglish(english);完成数据添加存储 this->clas->count++;计数添加学生数 } …… else超数情况 ………… } } c: 修改学生信息 voidCclass: : Changestu(){ if(cc==NULL)未创建班级 …… else已创建班级 { …………数据定义 cout<<"请输入要修改学生的学号: "; cin>>studno; if(clas->find(studno)! =-1)找到该学生 { ……打印该学生信息 ……输入修改信息 cc->student[m]->setAddr(addr); cc->student[m]->setTel(tel); cc->student[m]->setMath(math); cc->student[m]->setEnglish(english); cc->student[m]->setAverage(math,english);储存修改后数据 } else未找到该学生 …… } } d: 删除学生信息 voidCclass: : Delstu(){ if(this->clas==NULL)班级未创建 …… else班级已创建 { intStudno; cout<<"请输入要删除学生的学号: "; cin>>Studno; inti=clas>find(Studno); if(clas>find(Studno)==-1)未找到该学生 …… else { for(intj=i;i<50;i++) { ……student[i]后指针向前移动一位,且最后一位数组内容置空,学生数减1 } cout<<"学生删除成功! "< } } } e: 打印学生信息 voidCclass: : Dispstu() { if(cc==NULL)未创建班级 …… else已创建班级 { cout<<"班级名称: "< for(inti=0;i<50;i++)for循环完成数据整体输出 { if(class->student[i]! =NULL)student数组不为空 { ………………打印学生信息 } } } } (4)测试用例(针对每个功能设计测试方案,包括输入数据、输出数据) 针对每个功能设计一组(最少一个)测试用例,用来验证程序的正确性。 1: 创建班级 2: 添加学生信息 3: 删除学生信息 删除123号学生数据: 删除123号学生后所有数据: 4: 修改学生信息 修改123号数据: 修改123号学生后数据; 5: 打印学生信息 三、课题总结 1陈述遇到的问题及解决办法: a: 问题: 没办法对对象内数据进行获取及处理 解决方法: 构建一个get**()构造函数来获取对象内数据,用set**()构造函数来处理对象内数据,以便进行数据的输入及修改; b: 问题: 对类的指针数组使用比较生疏 解决方法: 深入了解面向对象数据与结构数据的区别,用->运算符来移动指针实现数据的存入与调用 c: 问题: 在添加、修改、删除都要进行学生查找在程序中出现代码重复利用,代码复杂 解决方法: 构建构造函数find(studeno)来完成查找工作,这样只需在需要时调用构造函数,无需重复输入查找功能代码,从而大大简化代码 2: 有何收获 a: 熟悉掌握了类得创建及对象的处理调用; b.熟悉掌握了面向对象数据的添加,修改,删除,打印; c.纠正对break用法的错误理解,break只用在两个地方,一个是case,一个是循环的跳出,对于最后程序的退出应使用exit(0); d.熟悉循环在程序中的应用,在添加,修改,删除,打印以及界面的显示等都用到了循环。 e.学会应用面向对象构造函数的调用,以及主函数中用switch函数做多分支选择,先进行类得封装,再对具体对象进行处理及应用类与类之间的继承关系,充分利用面向对象数据处理优势大大简化程序代码; f.不足之处: 没有对数据进行存盘处理,没有异常处理导致输入错误代码就会出现死循环,程序不能正常运行。 四、使用说明书 1、用MicrosoftVisualStudio2005打开该程序文件; 2、编译运行程序; 3、根据页面提示及查询需要对应选择操作类型,进入子程序操作; 五、教师评阅
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+语言程序设计 C+ 语言程序设计 课程设计 报告 学生 信息 查询 系统