- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c实习报告14102-22王迅20101002900
《面向对象程序设计》
课程设计报告
学 号: 座机电话号码900
班级序号: 114102-22
姓 名: 王 迅 指导老师: 龚君芳 成 绩: 中国地质大学(武汉)
信息工程学院空间信息工程系
2011年7月
学生成绩管理系统
【需求规格说明】
【算法设计】
(1)设计思想:(2)设计表示:
【调试报告】 1.在保存读取磁盘文件方式的选择上,我尝试过文件流的写法,但是由于保存的文件形式单一,而且在弹出文件打开窗口方面写起来没有mfc文档视图结构封装好的序列化函数方便,所以最后还是选择了序列化函数读取存入方式,而将文件流方式作为辅助功能,在对程序的完善后再添加用文本读入模块。
初步设想如下:
在成绩查看的界面添加“从文本导入信息”的按钮,然后直接将按一定格式排列的文本中的信息逐条读入,读入的同时检测是否已经存在,确保索引内部各信息条目的学生姓名以及学号的唯一性。
2.由第一份文档中的某题得到启发,在成绩查看界面已经添加成绩统计一览模块,所以在索引类中增加了如下成员函数:
对应的成绩查看界面多了如下部分:
3.在成绩查看界面中,为了实现双击学生的条目达成修改学生信息的目的,我一开始使用的是列表框 CListBox ,后来发现那样不能分栏,界面没有足够的友好,因此特意换成了列表控件 CListCtrl 。
4.本程序在开始没有添加学生信息的时候如果点击进入修改学生信息界面,则会发生错误,很容易判断出,这是因为该对话框的初始化消息处理函数中对没有元素的向量进行了读取,所以报错。之后加入了一段代码,使得判断为空的时候就会返回false取消初始化进程。
但是这样的交互不够友好,用户必须在关闭这个对话框之后再添加信息,然后才能进入这个界面。所以我考虑在判断索引对象为空的时候会自动弹出对话框要求用户添加数据。
这时候就出现了一个问题,由于信息添加对应的函数是view类中的成员函数,在对话框类中无法调用,于是我打算用自定义消息的方式解决这个问题。
首先自定义一个新的消息WM_COMMAND_INFOSEL,接着在view类中将消息与函数OnExer2InfoAdd 建立映射,然后在成绩查看对话框的初始化函数中调用主窗口的SendMessage函数,这里我在对话框类中加入了一个指向父窗口的指针成员。
这样就实现了当列表为空的时候,自动提示添加新的学生信息,并弹出添加学生信息的对话框。
如果信息添加的时候点击取消,程序仍然会报错。因为即使点了取消,初始化函数还是会继续执行,所以我又加入了如下代码,防止了这种错误的发生。
if plist - IsEmpty return FALSE;
5.由于成绩查看界面的先天友好性,我觉得应该在该界面再添加其他功能模块的入口。
所以才有了如下的界面:
但是在起初添加完以下功能之后,窗口左边的列表控件里面的内容并不能即时更新,这就完全违背了我开始整合这些功能的初衷。
于是我在成绩查看对话框类中抽象出了一个私有成员函数ResetListCtrl ,用以实现更新列表控件内容的功能,实现的思想上是首先清空列表控件,然后将索引对象的内容逐一添加。
但是这样就又出现了一个问题,由于当时设计的是将这些对话框内部生成的菜单项的ID直接设定为与主窗口上的菜单项的ID相同。所以在这些函数调用完之后无法调用对话框的这个重置列表控件函数。
本来我采用了之前用过的一个方法,即自定义一个消息,然后在view类中添加一个成绩查看对话框对象的数据成员,在功能函数的最后调用对话框对象的SendMessage函数,后来才发现这样是多此一举,本来就可以直接调用对象的重置列表控件函数。
6.在文件的读取和存入问题上,由于需要用到Doc类下appwizzard自动重载的序列化函数,所以需要在文档类中添加一个索引类的对象成员,而view类中也必须有一个相应的对象成员,这时两个对象成员如何保持同步就成了问题。
所以我在解决方法上采用了将view类中的对象成员改为一个对象指针,在初始化的时候就指向doc类中的对象成员,这样任何时候进行修改,都可以保证对象的数据是同步的,不会出现多重拷贝的情况。
下图是部分的序列化函数:
7.在索引为空的情况下,点排序,同样也会因为[]操作符在向量为空的时候发生了未知的错误,这时候只需简单的在排序之前进行一下索引是否为空的判断即可解决问题。
由此可见,在构造类的时候,留下充足而不冗杂的接口,是非常有必要的。
8.在列表控件中,不论是单击高亮选择还是双击弹出修改学生信息的对话框,在不添加对应的处理代码的情况下,如果目标为空,都会发生编译器预料不到的错误。我在一开始的时候都遇到了这些问题,然后只是加了一句if的判断,判断目标值是否为-1,便解
您可能关注的文档
最近下载
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案.docx VIP
- 2025既有建筑消防改造设计指南.docx VIP
- 甘肃省乡镇卫生院名单2021版1549家(中心卫生院453+卫生院1096)1.docx VIP
- 2024年广州白云高新区投资集团有限公司人员招聘笔试备考题库及答案解析.docx VIP
- 全球变化课件01-地球系统与全球变化.ppt VIP
- 注册土木工程师(水利水电工程)预测试题.pdf VIP
- 2023年广州白云产业投资集团有限公司人员招聘考试参考题库及答案解析.docx VIP
- 2025年吉林省中考语文试卷真题(含答案).docx
- 中医康复临床实践指南脑卒中.docx VIP
- 建立公司危化品应急救援队伍的意义与方法.pptx VIP
文档评论(0)