设计报告 B计算机105 刘婷Word文档格式.docx
《设计报告 B计算机105 刘婷Word文档格式.docx》由会员分享,可在线阅读,更多相关《设计报告 B计算机105 刘婷Word文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
2.3开发环境1
3系统概要设计2
4系统详细设计2
4.1留言板保存模块设计2
4.2留言板签署日期模块设计3
4.3留言板阅读模块设计3
4.4留言板转存模块设计4
5测试5
5.1测试方案5
6小结5
参考文献7
附录8
附录1源程序清单8
附录1.1留言板保存模块程序8
附录1.2留言板签署日期模块程序9
附录1.3留言板阅读模块程序9
附录1.4留言板转存模块程序10
1概述
1.1课程设计目的
C++程序设计课程设计是在学习完《VisualC++面向对象编程教程》课程后开设的一门实践性课程。
要求学生以个人为单位,在教师指导下,运用理论课所学知识,借助参考书籍,选择一个课题,使用C++语言,完成一个功能相对完整,具有应用价值的软件。
达到加深理解课堂教学内容,熟悉程序设计的基本流程、掌握程序设计基本方法,基本技巧、并能综合运用,提高程序设计能力。
通过本课程的实践,熟练掌握C++语言中面向过程部分的内容,能够运用C++语言解决一个实际问题。
1.2课程设计内容
利用用文件的输入输出制作一个留言板
要求:
1.有滚动条;
2.能选择保存路径;
3.能签署留言日期;
4.能选择留言打开路径并阅读留言;
5.能转存留言内容。
2系统需求分析
2.1系统目标
熟悉WINDOWS操作系统的基本操作。
掌握C++基本知识,主要有类的定义与实现,一些简单操作符种载等。
知道MFC一些通用类的基本属性与方法以及其使用。
能利用VisualC++界面的相关控件进行程序的编写,知道C++编译程序的若干调试技术。
2.2主体功能
2.3开发环境
需要WINDOWS操作系统与VisualC++6.0集成开发环境。
个人所用的是Win7操作系统,集成开发环境是MicrosoftVisualC++6.0
3系统概要设计
各个对话框的设置,按钮控件,编辑框的设置,以及代码的编写。
对留言板各项功能的逐步编写和实现。
程序中常用的文件操作包括创建文件,打开文件,读文件,写文件和关闭文件等,实现这些操作的函数都封装在文件类CFile中,应该先掌握CFile类的使用,首先定义CFile对象,创建和打开文件,然后进行读写操作,最后关闭文件,同时,要保证文件操作的正确性,还要进行错误处理。
4系统详细设计
(1)选课题,明白课题的需求。
(2)对课题进行深入分析,罗列出课题要求,查找资料,对程序的设计具有一个宏观的思路。
(3)初步编写程序代码。
(4)深入编写程序,把程序分成几个小的模块,分部实现其功能。
(5)编写程序界面,并且逐步调试程序。
(6)进行模块整合,找出并排除BUG。
(7)写程序设计报告,并且不断修改,直至符合要求。
4.1留言板保存模块设计
1.利用MFCAPPWizard建立对话框工程。
2.设计运行的界面。
名字为“留言板”的静态文本框文件,起提示的作用,名字为“保存”的按钮控件,无名字的编辑框控件,用于输入留言的内容。
3.添加变量。
4.设计按钮函数并且添加代码。
该模块的设计过程中要注意的是无名字的编辑框控件的关联变量是m_note,CString类型,一定要事先定义。
否则运行的时候会出现error,说是没有定义的变量。
制作的留言板只能输入和显示一行文字,使用起来很不方便,应该使留言板具有回车换行的功能,并添加水平和垂直滚动条,让其能输入显示多行文字。
有滚动条的编辑框:
4.2留言板签署日期模块设计
留言具有时效性,是需要日期的,这样,如果想要签署日期,直接按命令按钮即可,可以显示出程序的实用性。
1.增加一个签署日期的按钮控件
2.添加函数及其代码
给“签署日期”按钮添加单击事件处理函数OnDateButton(),该按钮的ID属性为“IDC_DATE_BUTTON”,名称为“签署日期”。
用到的函数有以下几个:
GetCurrentTime():
CTime类的成员函数,用来获得当前时间,常用来初始化CTime类的对象。
GetYear():
该函数用来获得CTime类对象的年份值。
GetMonth():
该函数用来获得CTime类对象的月份值。
GetDay():
该函数用来获得CTime类对象的天数值。
4.3留言板阅读模块设计
1.增加一个阅读按钮控件
2.添加函数以及代码,给阅读按钮添加单击事件处理函数OnReadButton()
try在需要判断异常错误时使用,若其后的大括号括起来的部分有异常错误,则转到后面相应的catch语句处执行。
try并不直接对错误进行处理,而是产生相应错误对象的指针。
Catch是用来捕捉异常错误对象指针,捕捉到后,后面的大括号括起来的部分对错误对象进行处理。
异常错误对象指针可能用new分配的一块内存,因此处理完毕后,应该用delete删除,以释放内存;
但是异常错误对象指针也可能是放在堆栈中,这种情况下就不能删除,容易引起程序错误,所以MFC用异常类CException的成员函数Delete()处理异常错误对象指针。
4.4留言板转存模块设计
留言读完以后,可以保存在一个文件中,以便于以后的查找。
1.增加一个转存按钮控件
2.添加函数以及代码,给阅读按钮添加单击事件处理函数OnSaveButton()
程序中用到CFile类的Open()函数。
定义如下:
CFile:
:
modeCreate:
表示若文件不存在,则建立。
modeWrite:
表示以写方式打开文件。
5测试
5.1测试方案
代码逐步输入,一个模块调试成功后再进行下一个模块的编译和输入。
全部完成之后,逐步调整,逐步优化。
进行调试后运行程序。
5.2测试结果
运行成功,可以实现相关功能。
运行界面如图所示。
6小结
编辑程序代码:
这是一个至关重要复杂而且需要反复修改的环节,在此环节中将发现总体设计和模块思想会存在很多问题,需不断改进.如何实现各函数功能,达到预期效果也将是一项繁复的工作。
代码的调试:
在VisualC++环境下输入代码并进行调试和正确运行。
在调试过程中会遇到很多需要精化的地方,需要十足的耐心与细心,不断改进完善程序。
最后修饰:
程序可以正确运行之后,在不影响程序功能的情况下,运用各种辅助性符号,使界面更加美观漂亮,操作更人性化,增强程序的新意与可行性。
虽然学过C++,但通过这次课程设计,使我更加熟悉的掌握了C++语言的运用。
帮助我熟悉了更多C++语言的功能,提高了我的动手能力,在图书馆的各种相关书籍的查阅中从中学到了许多解决实际问题的宝贵经验.使我对自己更有自信,对编程的兴趣更深了。
总之,在通过真正动手之后,我C++语言设计和有关它的操作方面都获益匪浅,但离真正的系统开发软件设计还是很有差别的,需要我们不断学习新的知识扩充自己才能做好这一工作。
学无止境,我们现在了解的东西还很少,更别说很好的掌握自己的专业知识,要谦虚的积极认真学习,不断的增强自身的能力提高个人素质,向一个真正的软件人发展。
在这里郑重的感谢指导老师的帮助,也感谢学校提供给我们这次宝贵的实践机会,让我们可以动手动脑,大大提高了个人的能力和素质,虽然这个留言板的实现这个程序是很简单很初步的,但在编制的过程中我充分体会到了程序编制的流程,为以后的学习打下了良好的基础。
参考文献
[1]谭浩强.
C程序设计(第三版).北京:
清华大学出版社,2005
[2]王育坚.
VisualC++面向对象编程教程(第2版).北京:
清华大学出版社,2007
[3]游洪跃伍良富王景熙.
C++面向对象编程程序设计实验和课程设计教程.北京:
清华大学出版社,2009
附录
附录1源程序清单
附录1.1留言板保存模块程序
CStringmsg="
Filesaveerror"
;
CFileDialogdlg(false,"
TXT"
NULL,NULL,"
Textfile(*.txt)|*.TXT|"
NULL);
if(dlg.DoModal()==IDOK)
{
m_note=dlg.GetPathName();
}
else
MessageBox(msg);
}
UpdateData(TRUE);
CFilefile;
if(!
file.Open(m_path,CFile:
modeWrite|CFile:
modeCreate))
MessageBox("
Openningfileerror"
);
return;
intlen=m_note.GetLength();
char*buffer=newchar[len+1];
buffer)
Allocatingfail"
strcpy(buffer,m_note);
buffer[len]='
\0'
file.Write(buffer,len);
deletebuffer;
file.Close();
UpdateData(FALSE);
附录1.2留言板签署日期模块程序
CStringstr_year,str_month,str_day;
CTimecurrent_time;
current_time=CTime:
GetCurrentTime();
str_year.Format("
%d"
current_time.GetYear());
str_month.Format("
current_time.GetMonth());
str_day.Format("
current_time.GetDay());
m_date=str_year+"
-"
+str_month+"
+str_day;
UpdateData(true);
m_Note=m_Note+"
\n"
+m_date;
UpdateData(false);
附录1.3留言板阅读模块程序
CStringmsg="
CFileDialogdlg(true,"
if(dlg.DoModal()==IDOK)m_path=dlg.GetPathName();
elseMessageBox(msg);
CFilefile;
file.Open(m_path,CFile:
modeRead))
intlen=file.GetLength();
try
{
file.Read(buffer,len);
}
catch(CFileException*e)
MessageBox("
Readingfileerror"
file.Close();
e->
Delete();
return;
m_Note=buffer;
附录1.4留言板转存模块程序
m_path="
d:
\\total.txt"
modeCreate|))
file.SeekToEnd();
file.Write(buffer,len);
deletebuffer;