《C++语言程序设计》课程设计报告-学生信息查询系统.doc_第1页
《C++语言程序设计》课程设计报告-学生信息查询系统.doc_第2页
《C++语言程序设计》课程设计报告-学生信息查询系统.doc_第3页
《C++语言程序设计》课程设计报告-学生信息查询系统.doc_第4页
《C++语言程序设计》课程设计报告-学生信息查询系统.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

仰恩大学计算机与信息学院 课题设计报告c+语言程序设计课题设计报告课题名称: 学生信息查询系统 专业: 电子信息工程 班级: 2班 姓名: 学号: 指导老师: 日期: 2011-05-06 仰恩大学计算机系- 17 -一、 课程序设计目的(根据情况写)(1) 了解面向对象程序设计与结构化程序设计的内在差别;(2) 了解类和对象的概念,学会对数据进行封装处理,灵活应用类的继承关系,学会用构造函数来进行对象的初始化工作,通过重载构造函数来对对象进行更为深入的数据初始化,用析构函数来清理和释放对象所占用的系统资源;(3) 通过对象指针来访问对象,从而完成对对象数据的调用与返还;(4) 利用动态内存分配在程序的运行中根据实际需要申请内存空间,使用结束后释放所占用的内存空间;(5) 通过继承与派生来简化程序代码简化程序设计,有效利用已有的类模块资源。(6)以学生信息管理为应用背景,用面向对象程序设计建立学生信息管理程序,实现创建班级、添加学生信息、修改学生信息、删除学生信息、打印学生信息、退出六个程序 功能。开发环境(1)系统环境:windows xp,windows 7(2)编程环境:visual c+.net,visual c+ 6.x,visual studio 2005,visual studio 2010.等。二、 实现过程(1) c+编程基础知识介绍c+程序源程序文件1源程序文件2源程序文件3编译预处理命令全局变量声明函数1函数n函数首部函数体局部变量声明执行语句数据类型:对数据类型定义是非常重要的,它可以为数据在内存中分配适合的存储区域、确定数据范围,并且可以规定数据所能进行的有效操作;1:对数据类型的分类有: 2:常量和变量:变量(variable):取值在程序的执行过程中可改变值的量;常量(constant):取值在程序的执行过程中始终保持不变的量。又分为文字常量(literal constant)常变量(也称为符号常量)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(条件表达式) case 1: 语句1;break; case n: 语句1;break;*【break语句使用:用在while,dowhile,for和switch语句中,在循环语句中,break用来从最近的封闭循环体内跳出,在switch语句中,break用来跳出switch语句。】 b:函数的调用:调用一个函数就是暂时中断现有程序的运行,转去执行被调用函数,当被调用函数执行结束以后,再返回到中断处继续执行的过程,如下表: main() 调用fun()或者其他自定义函数结束保存:返回地址当前现场恢复:主调程序现场返回地址fun()返回4352617c:函数的嵌套:执行过程如下表:main()调fun1()或自定义其他函数结束fun1()调fun2()返回fun2()返回367812495(2)程序的概要设计(流程图)1:总体(主函数):设计学生信息管理系统界面,定义程序功能选择的方式,用switch循环进行程序选择(即程序功能选择);通过构造函数的调用来实现不同函数功能,从而进行程序的使用。1:设计学生管理系统界面2:定义选择功能选项switch循环语句实现功能选择case 2case 3case 1case 4case 5case 6 不同的case调用不同的构造函数,实现相应的功能2:主构造函数:包括创建班级【addclass()】、添加学生信息【addstud ()】、修改学生信息【changestu()】、删除学生信息【delstu】、打印学生信息【disstu】 五个构造函数 。a:创建班级【addclass()】 创建班级首先用new先给班级开辟一个动态内存n来计数创建班级数后 超过未超过classnamen数组存入创建的班级信息,n自加1,完成班级创建跳出班级创建定义数据类型输入班级信息b:添加加学生信息【addstu()】:退出添加模块学号不存在是信息储存否判断是否创建班级 学号存在,返回重新输入while循环输入学号进行判断未超数提示创建班级,跳出添加学生信息用find(studno)构造函数以学号为线索查找学生超数用count计数添加信息数添加失败输入所需添加信息分别调用cstudent(*)setmath(*)setenglish(*)完成数据输入,存在studentcount数组中,count自加d:修改学生信息【changestu()】:是信息储存否判断是否创建班级while循环输入学号进行判断提示创建班级,跳出添加学生信息打印出该学生信息,及所需修改数据输入所需修改信息分别调用srtaddr(*)settel(*)setaverage(*)setmath(*)setenglish(*)存储修改后数据学号存在用find(studno)构造函数以学号为线索查找学生退出数据修改模块c:删除学生信息【delstu()】:不存在学号n是否判断是否创建班级while循环输入学号进行判断提示创建班级,跳出添加学生信息studentn+1及后所有指针都向前移动一位,最后一位置1学号n存在用find(studno)构造函数以学号为线索查找学生退出数据删除模块f:打印学生信息【dispstu()】是否判断是否创建班级for循环调用getclassname(*)打印班级名称提示创建班级,跳出添加学生信息分别调用getstudno()getname()getidno()getaddr()gettel()getmath()getenglish()getaverage()获得所有数据,完成数据的获取和打印退出数据打印模块用studenti数组,从第0个到studenti为空,打印出所有学生信息(2) 程序的详细设计a:创建班级void cclass:addclass(char *classname,int *cstudent) int n=0; int claccname;if(n!=10)cout输入班级名称classname;clas=new class(classname);n+;cout添加成功endl;return true;else cout班级数超额endl;b:添加学生信息void cclass:addstu ()if(clas=null) 未创建班级else 已创建班级定义数据类型coutstudno;while(clas-find(studno)!=-1) 查找该学号学生 存在该学号学生 重新输入学号; 完成数据定义if(clas-countstudentclas-sum=new cstudent(studno,idno,name,addr,tel); 开辟内存clas-studentclas-sum-setmath(math);clas-studentclas-sum-setenglish(english); 完成数据添加存储this-clas-count+; 计数添加学生数else 超数情况 c:修改学生信息void cclass:changestu ()if(cc=null) 未创建班级 else 已创建班级 数据定义coutstudno;if(clas-find(studno)!=-1) 找到该学生 打印该学生信息 输入修改信息cc-studentm-setaddr(addr);cc-studentm-settel(tel);cc-studentm-setmath(math);cc-studentm-setenglish(english);cc-studentm-setaverage(math,english); 储存修改后数据else 未找到该学生d:删除学生信息void cclass:delstu ()if(this-clas=null) 班级未创建else 班级已创建int studno;coutstudno;int i= clasfind(studno);if(clasfind(studno)=-1) 未找到该学生 else for(int j=i; i 50;i+) studenti后指针向前移动一位,且最后一位数组内容置空,学生数减1cout学生删除成功!endl;e:打印学生信息void cclass: dispstu()if(cc=null) 未创建班级 else 已创建班级 cout班级名称:getclassname()endl;for(int i=0; istudenti != 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.学会

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论