




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学校代码: 10128学 号: 200920201029课程设计说明书题 目: 学生信息管理系统学生姓名: 李宇学 院: 信息工程学院班 级: 计09-1指导教师: 邢红梅 讲师 吕 岩 讲师 关玉欣 讲师 2011 年 7 月 8 日内蒙古工业大学课程设计(论文)任务书课程名称: 面向对象程序设计课程设计 学院: 信息工程学院 班级: 计算机09-1 学生姓名: 李宇 学号: 200920201029 指导教师: 邢红梅、吕岩、关玉欣 一、题目学生信息管理系统二、目的与意义面向对象程序设计课程设计课程设计是计算机科学与技术专业实践性环节之一,通过课程设计的综合训练可以使学生进一步理解和掌握面向对象程序设计课程的基本知识;掌握面向对象程序设计的思路和方法;基本具有利用面向对象的方法以及 C+的编程思想来完成系统设计的能力。三、要求(包括原始数据、技术参数、设计要求、图纸量、工作量要求等) 1. 要求利用面向对象的方法以及C+的编程思想来完成系统的设计;2. 要求在设计的过程中,建立清晰的类层次;3. 在系统中至少要定义一个类,类中要有各自的属性和方法;4. 在系统的设计中,至少要用到面向对象的一种机制。四、工作内容、进度安排 1. 根据课程设计的要求,确定设计题目;(0.5天)2. 查找相关资料,进行应用程序总体结构、使用功能的设计;(0.5天)3. 进行应用程序的界面设计和源程序代码的编写;(2.5天)4. 设计说明书的撰写、答辩(1.5天)五、主要参考文献1C+语言程序设计(第三版),郑莉,清华大学出版社,20042C+程序设计教程,钱能主编,清华大学出版社,1999.43C+程序设计课程设计,刘振安,机械工业出版社,2004.8审核意见系(教研室)主任(签字) 指导教师下达时间 2011年 7月 4日指导教师签字:_目录目录3第一章 总体功能介绍51.1 功能介绍51.2 类的设计5第二章 各功能模块的具体实现72.1 图上上架72.1.1录入学生信息:82.1.2查找学生信息:92.1.3删除学生信息:112.1.4修改学生信息:132.1.5显示学生信息:142.1.6保存学生信息:142.1.7主函数:15第三章 调试及运行结果173.1进入菜单173.2输入学生信息173.3查找183.4修改学生信息183.5统计学生人数193.6删除学生信息193.7显示现在所有的学生信息203.8保存学生信息203.9保存后文件中的信息21第四章 总结224.1遇到的问题以及解决方法224.2体会22参考文献23第一章 总体功能介绍1.1 功能介绍该学生信息管理系统有如下功能:1、录入学生信息,2、查找学生信息,3、删除学生信息,4、修改学生信息,5、显示学生信息,6、统计学生个数,7、实现文件保存功能。录入学生信息是根据提示确定是否要输入学生信息然后进行操作,然后输入学生信息,并且在学生信息输入完成之后还要提示是否继续输入学生信息。查找学生信息是根据提示先确定是按学号查找还是按姓名查找,然后输入要查找的学生的信息经过系统查找然后输出学生的全部信息。删除学生信息也是根据提示先确定是按学号删除还是按姓名删除学生的信息,然后输入要删除的学生的信息,然后删除学生的信息,删除后输出现在已经存在的学生的总人数。修改学生的信息是输入要修改信息的学生的学号,系统查找后输出原来的学生的信息,然后由人工输入修改后的学生信息,最后输出修改后的学生信息。显示功能是由类中的输出函数输出学生的信息,在派生类中通过调用基类中的成员函数而输出一个学生的信息,派生类中的成员函数是实现指针的向后移动,而使全部学生的信息输出。统计功能是输出系统中以存在的学生信息,是有一个全局变量控制,在输入学生的信息时实现统计变量自动增加,在修改时不实现变量的增加,在删除时实现变量自动减一。保存功能是将系统中的内容以文件的形式保存于计算机中。由于文件函数中定义的是将文件保存在以student.txt为名称的文本中,所以在运行完成之后可以在计算机中找到该文件,并且打开之后可以发现保存的内容已经写入到文本之中。1.2 类的设计Student-num:int-name:string-sex:char-political:int-add:string+ *next: student+student()+student()+getNum():int+getName():string+input():void+input(ifstream & is):void+output():void+output(ofstream & os):voidStud-*head:student+stud()+stud()+ Add():int +Del: void()+search_1:void ()+search_2():void+change():void+display():void+show():int+save():void+clear():void+begin():void图1 类的UML图第二章 各功能模块的具体实现2.1 图上上架在函数内定义并且初始化全局变量,分别表示学生的学号和学生的人数。input()函数是在基类中的函数,其功能是实现连续不断的输入学生信息。先使学生的学号自动传递给类中的学号变量,然后输入学生的信息。政治面貌有系统自动控制,只能有如下几种填写方式,如果输入错误则提示重新输入学生的政治面貌。输入学生信息后在后序函数中实现学号自动增加,而不用由人工控制。void input()/输入信息num=n;coutname;coutsex;coutpolitical;while(political3|political1)cout输入错误!endl;coutpolitical;coutadd;void input(ifstream & is)isnumnamesexpoliticaladd;is.get();以下函数是实现清空链表的函数,指针由第一个学生信息开始一直向后移动,直到最后一个,并且在不断后移之中由delete删除new动态申请的存储空间。void stud:clear() student *p,*p2; p=head-next;/指向第一个节点 while( p ) p2=p; p=p-next;/指针向后移动 delete p2; void stud:begin()/初始化函数p=head;clear();ifstream is(student.txt,ios:in); if(!is)ofstream os(student.txt,ios:out);while(1)t=is.tellg();/返回文件位置指针isnum;is.seekg(t);/返回文件尾指针if(numinput(is);p-next=p2;p2-next=NULL;p=p-next;2.1.1录入学生信息:开始先判断链表中是否有节点,即是否有学生的信息。如果有则使指针向后移动,使其指向最后一个学生的信息。否则,进入循环,判断是否要输入学生信息。如果进入循环输入学生信息,先将控制学生学号和数量的变量自增,学号自动增加。然后动态的申请内存空间,输入学生信息,并且使学生信息放入原来已存最后一个学生信息的后面,并且使这个学生后面的一个节点为空。然后提示是否要继续输入,实现循环。int stud: Add()/录入学生信息student *p1,*p2=NULL;p1=head;while(p1-next)/找到链表中的最后一个节点p1=p1-next;cout您现在要添加一组新的信息input();/录入信息p1-next=p2;/将输入的内容给原来最后一个节点的后一个节点p2-next=NULL;p1=p1-next;cout您现在要添加一组新的信息,您确定吗?endl;coutchoi;if(choi = N)|(choi = n)cout退出添加新学生信息!endl;coutendl;return 0;2.1.2查找学生信息:查找功能分为按学生学号查找和按学生姓名查找。先开始判断为按学号查找还是按姓名查找,然后执行所选择的操作。按学号查找时先判断学生总人数是否为0,如果为0则执行选择语句,输出表中没有学生信息,请先输入学生信息。如果有学生信息则输入学生学号,然后输入的学号与已存在的学号由开始相比,判断是否有该学生的信息,如果有输出学生信息。按学生姓名查找与按学生学号查找类似,先输入学生的姓名然后开始比较。按学号查找:void stud:search_1()/按学号查找student *p,*p2;int numm;if(number=0)/判断表中是否有学生信息cout这是一个空表,请先输入学生信息。endl;elsep=head;coutnumm;while(numm!=p-getNum() & p-next!=NULL)/没有查找到并且下个接点不为空p2=p;/记录前一个节点p=p-next;if(p-getNum() = numm)/找到学生cout查找后的学生信息是 : next)-output();else/没有查找到学生信息cout找不到你要查找的内容!endl;按姓名查找:void stud:search_2()/按姓名查找string namee;student *p1,*p2;if(number=0)cout这是一个空表,请先输入学生信息。endl;elsep1=head;coutnamee;while(namee!=p1-getName() & p1-next!=NULL)/没有查找到并且下个接点不为空p2=p1;p1=p1-next;if(namee = p1-getName()cout查找后的学生信息是 : next)-output();elsecout找不到你要查找的内容!endl;2.1.3删除学生信息:删除功能也分为按学生学号删除和按学生姓名删除。开始先选择删除方式是按学号删除还是按姓名删除还是直接退出删除学生信息的程序。然后查找该学生是否存在,如果存在则使指向该学生信息的指针指向下一个节点,并且删除原节点所占的内存空间。删除后输出还需将学生的总人数自减,并且输出剩余的学生人数。void stud: Del()/删除学生信息student *p1=head,*p;int i;cout请输入删除方式 : endl;cout1. 按学号删除endl;cout2. 按姓名删除endl;cout3. 退出删除i;switch(i)case 1:int numm;coutnumm;while(numm!=p1-getNum() & p1-next!=NULL)p=p1;p1=p1-next;if(numm = p1-getNum()p-next=p1-next;number-; /控制学生的人数delete p1;cout删除成功endl;elsecout没有该学生的信息!endl;cout现在还剩下number条学生的信息;coutendl; break;case 2:string namee;coutnamee;while(namee!=p1-getName() & p1-next!=NULL)p=p1;p1=p1-next;if(namee = p1-getName()p-next=p1-next;number-; /控制学生的人数delete p1;cout删除成功endl;elsecout没有该学生的信息!endl;cout现在还剩下number条学生的信息;coutendl; break;case 3:break;default:cout输入错误!endl;break;2.1.4修改学生信息:修改学生的信息先需要查找到学生是否存在。先按学号查找到该学生,然后通过指针修改学生信息。并且输出修改前后的学生信息以供分辨。void stud:change()/修改int numm;student *p1=head,*p2;coutnumm;while(numm!=p1-getNum() & p1-next!=NULL)/没有查找到并且下个接点不为空p2=p1;p1=p1-next;if(numm = p1-getNum()cout您所要修改的学生原来的信息是 : next)-output();/输出原来的学生信息(p2-next)-input();/输入修改后的学生信息(p2-next)-setNum(numm);cout修改后的学生信息是:next)-output();/输出修改后的信息else/查找不到,不修改cout找不到你要查找的内容!next)/判断下一个节点是否为空(p1-next)-output();p1=p1-next;coutnext) (p-next)-output(os);p=p-next; coutt文件已保存! =0 & i=7)switch(i)case 1:stu.Add();break;case 2:coutway;if(way = 1)stu.search_1();else if(way = 2)stu.search_2();elsecout输入错误!endl;break;case 3:stu.Del();break;case 4:stu.change();break;case 5:stu.display();break;case 6:cout共有number个学生的信息!endl;break;case 7:stu.save();break;case 0:int way2;if(number!=0)coutway2;if(way2=1)stu.save();else if (way2 != 0)cout输入错误!endl;stu.clear();way2=0;break;default:cout输入错误!endl;break;elsecout输入错误!;coutloop;coutendl;return 0;第三章 调试及运行结果3.1进入菜单图3_1 菜单界面3.2输入学生信息根据提示输入所有的学生信息,输入完成之后根据提示输入“n”或“N”然后可以退出添加学生信息的功能。图3_2 输入学生信息3.3查找根据提示输入“1”之后可以继续执行程序。输入“2”执行查找操作,输入相应的查找方式,然后输入学号或者姓名进行查找。图3_3 按学号查找图3_4 按姓名查找3.4修改学生信息根据提示输入“4”进入修改操作,然后输入要修改学生的学号,然后输入修改后的学生信息。图3_5 修改学生信息3.5统计学生人数继续输入三个学生的信息后,根据提示输入“6”,进入统计学生个数操作,然后系统输出学生总人数。图3_6 统计学生人数3.6删除学生信息根据提示输入“3”进入删除学生信息界面,选择要删除信息的方式,可以是按学生的学号删除和按学生的姓名删除,然后输入要删除学生的信息,删除学生信息成功。图3_7 按学号删除学生信息图3_8 按姓名删除学生信息3.7显示现在所有的学生信息图3_9 显示现在所有的学生信息3.8保存学生信息根据提示输入“7”,进入保存学生信息功能,可见屏幕上显示“文件已保存!”的文字,则学生信息保存成功。图3_10 保存学生信息3.9保存后文件中的信息保存后可以在磁盘中找到一个名为“student.txt”的文本,打开之后可以看到刚才保存的学生信息的内容。图3_11 保存后文件中的信息第四章 总结4.1遇到的问题以及解决方法(1)在程序中使用了链表,并且使用了类的继承和派生,用一个stud的类公有继承了student类。在student类中设计了数据的输入输出函数,在类中调用了自己的函数不至于发生错误。(2)在stud类中定义了一个私有成员为头节点链表的头指针,并且在后续使用中不能使头结点的指针发生变化,否则会导致头结点不断后移,最终在链表中存储了多个信息,但是在使用时会发现不能操作以前输入的信息,只能操作最后一个学生的信息。这是因为把头指针向后移动,没有其他指针能标记头节点的位置,使得链表在逻辑上只有一个学生的信息,并且是最后一个输入的学生信息。可以在使用头指针时重新定义一个临时的指针,使头指针赋值给新定义的指针,由新定义的指针进行运算而保持头指针不发生变化。(3)派生类中的函数使用基类中的数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重冶备料破碎工招聘考核试卷及答案
- 镁精炼工前沿技术考核试卷及答案
- 起点和终点 教学设计-2023-2024学年科学一年级上册教科版
- 2025年等离子显示屏行业研究报告及未来行业发展趋势预测
- 跨境电子商务师作业指导书
- 第15课 横钩教学设计-2025-2026学年小学书法练习指导三年级上册北师大版
- 经编钳针工作业指导书
- 青春励志教学设计-2025-2026学年初中音乐辽海版2024七年级上册-辽海版2024
- 采矿安全监控系统值班员作业指导书
- 国际工程项目合规性及项目管理法规执行合同
- 陕西水资源论证报告表
- ISO15189医学实验室认可概况课件
- 腹腔镜手术设备使用说明与注意事项概述课件整理
- 单选题51-100试题含答案
- 轻钢龙骨、双层石膏板吊顶施工方案
- 安全网(平网)张挂安全技术要求
- 危险品管理台帐
- 政务云收费标准 云托管收费标准
- 计算机辅助翻译实用教程ppt课件(完整版)
- 研学旅行概论教学课件汇总完整版电子教案
- 《UI视觉设计案例教程》PPT课件(共6章)第1章 UI快速入门
评论
0/150
提交评论