C++小型数据库课程设计.docx
- 文档编号:11269528
- 上传时间:2023-05-30
- 格式:DOCX
- 页数:14
- 大小:26.34KB
C++小型数据库课程设计.docx
《C++小型数据库课程设计.docx》由会员分享,可在线阅读,更多相关《C++小型数据库课程设计.docx(14页珍藏版)》请在冰点文库上搜索。
C++小型数据库课程设计
08光信息科学与技术2班
郎海涛
学号:
2010/6/8
C++高级程序语言课程设计——数据库
一、课程设计的意义和任务
1.1.设计的意义
数据库是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。
它通常由软件、数据库和数据管理员组成。
其软件主要包括操作系统、各种宿主语言,实用程序以及数据库管理系统。
数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。
这些数据为多个应用服务,独立于具体的应用程序。
数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。
数据库管理系统是一种系统软件,它的主要功能是维护数据库并有效地访问数据库中任意部分数据。
对数据库的维护包括保持数据的完整性、一致性和安全性。
数据管理员负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。
数据库是计算机科学中发展最快的领域之一。
数据库系统的出现是计算机应用的一个里程碑,它使得计算机应用从以科学计算为主转向以数据处理为主,并从而使计算机得以在各行各业乃至家庭普遍使用,使大批数据的更新、保存、交流等变得方便,数据的查询、检索等操作也变得更加容易。
1.2.设计的任务
任务:
用MicrosoftVisualC++6.0在MFC环境下编辑一个小型数据库,能进行数据的简单更新、保存、查询等操作。
二、课程设计的工具
2.1.设计的专用软件
设计专用软件:
MicrosoftVisualC++6.0
MicrosoftVisualC++,(简称VisualC++、MSVC、VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。
VC++整合了便利的除错工具,特别是整合了微软视窗程式设计(WindowsAPI)、三维动画DirectXAPI,Microsoft.NET框架。
VisualC++以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而着称。
比如,它允许用户进行远程调试,单步执行等。
还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。
其编译及建置系统以预编译头文件、最小重建功能及累加连结着称。
这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显着。
2.2.设计辅助工具
设计辅助工具:
VisualAssistX
VisualAssistX是一款非常好的MicrosoftVisualStudio2005和VisualStudio.NET插件,支持C/C++,C#,ASP,VisualBasic,Java和HTML等语言,能自动识别各种关键字、系统函数、成员变量、自动给出输入提示、自动更正大小写错误、自动标示错误等,具有强大的编辑特色,有助于提高开发过程的自动化和开发效率。
三、课程设计的详细步骤
3.1.创建一个新的project
启动MicrosoftVisualC++6.0新建一个MFCAppWizard工程,如图三-1,图三-2和图三-3。
三1新建一个MFC工程
三2创建一个基本对话框
三3对话框
3.2.编辑对话框面板
i.添加删除控件。
先删除无用的初始控件,然后在控件工具栏中选择相应的控件添加到对话框的面板上,并对这些按钮、编辑栏等进行布局。
如图三-4。
三4对话框面板的编辑1
ii.对各个控件进行修改属性。
右键点击要修改的控件选择属性对其ID、标题等进行相应修改。
如图三-5
三5修改控件属性
三6修改完成的对话框面板
iii.对编辑框进行变量关联。
右键点击要修改的编辑框选择建立类向导选择MemberVariables然后对各个编辑框关联相应变量。
如图三-7和图三-8。
三7关联变量
三8关联好的变量
注:
3.3.编辑各个键功能
双击要编辑的按键,进入代码编辑,在每个键输入相应的指令代码。
a)打开(OnButOpen):
CFileDialogdlg(TRUE);
CStdioFilefile;
if(IDOK==dlg.DoModal())
{
str=dlg.GetPathName();
file.Open(str,CFile:
:
modeRead|CFile:
:
typeText);
while(file.ReadString(str))
{
CStringline;
CStringline1;
CStringline2;
CStringline3;
intiLeft=0;//保存”$”的位置
intiRight=0;//保存”*”的位置
iLeft=str.Find("$");
iRight=str.Find("*");
line1=str.Left(iLeft);
line3=str.Right(str.GetLength()-iRight-1);
line2=str.Mid(iLeft+1,iRight-iLeft-1);
m_aDatas.Add(line1);
m_aDatas2.Add(line2);
m_aDatas3.Add(line3);
}
file.Close();
}
b)输入(OnButInput):
UpdateData(TRUE);
if(""!
=m_sData||""!
=m_sData2||""!
=m_sData3)
{
m_aDatas.Add(m_sData);
m_aDatas2.Add(m_sData2);
m_aDatas3.Add(m_sData3);
m_sData="";
m_sData2="";
m_sData3="";
UpdateData(FALSE);
}
else
{
MessageBox("输入内容不能为空!
");
}
c)查找(OnButSearch):
UpdateData(TRUE);
m_sData="";
m_sData2="";
m_sData3="";
UpdateData(FALSE);
if(m_iNum>0)
{
if(m_iNum-1 { m_sData=m_aDatas.GetAt(m_iNum-1); m_sData2=m_aDatas2.GetAt(m_iNum-1); m_sData3=m_aDatas3.GetAt(m_iNum-1); UpdateData(FALSE); } else { //m_sData="查找超出范围! "; //UpdateData(FALSE); MessageBox("查找超出范围! "); } } else { MessageBox("请输入大于1的整数"); } d)修改(OnButRecover): UpdateData(TRUE); if(m_iNum-1 { m_aDatas.SetAt(m_iNum-1,m_sData); m_aDatas2.SetAt(m_iNum-1,m_sData2); m_aDatas3.SetAt(m_iNum-1,m_sData3); } e)删除(OnButDel): UpdateData(TRUE); if(m_iNum-1 { for(inti=0;i { if(m_iNum-1! =i) { m_tempData.Add(m_aDatas.GetAt(i)); m_tempData2.Add(m_aDatas2.GetAt(i)); m_tempData3.Add(m_aDatas3.GetAt(i)); } } m_aDatas.RemoveAll(); m_aDatas2.RemoveAll(); m_aDatas3.RemoveAll(); for(i=0;i { m_aDatas.Add(m_tempData.GetAt(i)); m_aDatas2.Add(m_tempData2.GetAt(i)); m_aDatas3.Add(m_tempData3.GetAt(i)); } m_tempData.RemoveAll(); m_tempData2.RemoveAll(); m_tempData3.RemoveAll(); } f)保存(OnButSave2): CFileDialogdlg(FALSE); //CStringstr; CStdioFilefile; if(IDOK==dlg.DoModal()) { str=dlg.GetPathName(); file.Open(str,CFile: : modeCreate); file.Close(); file.Open(str,CFile: : modeWrite); for(inti=1;i-1 { if(i-1! =m_aDatas.GetSize()-1) { file.WriteString(m_aDatas.GetAt(i-1)+"$"+m_aDatas2.GetAt(i-1)+"*"+m_aDatas3.GetAt(i-1)+"\n"); } else { file.WriteString(m_aDatas.GetAt(i-1)+"$"+m_aDatas2.GetAt(i-1)+"*"+m_aDatas3.GetAt(i-1)); } } file.Close(); } g)关闭(OnButOff): OnOK(); h)上一个(OnBUTold): UpdateData(TRUE); inta; intb; a=m_iNum; b=a-1; if(b>0) { m_sData=""; m_sData2=""; m_sData3=""; UpdateData(FALSE); if(b-1 { m_sData=m_aDatas.GetAt(b-1); m_sData2=m_aDatas2.GetAt(b-1); m_sData3=m_aDatas3.GetAt(b-1); m_iNum=b; UpdateData(FALSE); } else { //m_sData="查找超出范围! "; //UpdateData(FALSE); MessageBox("查找超出范围! "); } } else { MessageBox("已是最前一名同学的成绩,查找超出范围,请重新输入! "); } i)下一个(OnBUTnext): UpdateData(TRUE); inta; intb; a=m_iNum; b=a+1; if(b-1 { m_sData=""; m_sData2=""; m_sData3=""; UpdateData(FALSE); if(b-1 { m_sData=m_aDatas.GetAt(b-1); m_sData2=m_aDatas2.GetAt(b-1); m_sData3=m_aDatas3.GetAt(b-1); m_iNum=b; UpdateData(FALSE); } else { MessageBox("查找超出范围! "); } } else { MessageBox("已是最后一名同学的成绩,查找超出范围,请重新输入! "); } 3.4.对程序进行调试 在编程过程中错误是总归会有的,因此对程序进行调试是必不可少的,在调试过程中要求调试仔细认真。 所谓程序调试,就是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。 这是保证计算机信息系统正确性的必不可少的步骤。 编完计算机程序,必须送入计算机中测试。 第一步,用编辑程序把编制的源程序按照一定的书写格式送到计算机中,编辑程序会根据使用人员的意图对源程序进行增、删或修改。 第二步,把送入的源程序翻译成机器语言,即用编译程序对源程序进行语法检查并将符合语法规则的源程序语句翻译成计算机能识别的“语言”。 如果经编译程序检查,发现有语法错误,那就必须用编辑程序来修改源程序中的语法错误,然后再编译,直至没有语法错误为止。 第三步,使用计算机中的连接程序,把翻译好的计算机语言程序连接起来,并扶植成一个计算机能真正运行的程序。 在连接过程中,一般不会出现连接错误,如果出现了连接错误,说明源程序中存在子程序的调用混乱或参数传递错误等问题。 这时又要用编辑程序对源程序进行修改,再进行编译和连接,如此反复进行,直至没有连接错误为止。 第四步,将修改后的程序进行试算,这时可以假设几个模拟数据去试运行,并把输出结果与手工处理的正确结果相比较。 如有差异,就表明计算机的程序存在有逻辑错误。 如果程序不大,可以用人工方法去模拟计算机对源程序的这几个数据进行修改处理;如果程序比较大,人工模拟显然行不通,这时只能将计算机设置成单步执行的方式,一步一步跟踪程序的运行。 一旦找到问题所在,仍然要用编辑程序来修改源程序,接着仍要编译、连接和执行,直至无逻辑错误为止。 四、课程设计的成果 通过一段时间的设计和编程,初步完成了设计任务。 设计出成绩查询系统软件能完成打开一份数据并对其进行查询、修改、删除、记录、保存等功能。 其功能展示如下 Ø成绩查询系统的主界面,如图四-1。 四1成绩查询系统主界面 Ø打开成绩数据记录文件,如图四-2。 四2打开数据 Ø 查询对应学号的成绩(输入学号点击查询,即可查询相应数据,查询上一个或者下一个可点击主界面上的“上一个”或“下一个”),如图四-3。 四3查询数据 Ø 修改对应学学号的成绩(在“姓名”、“学号”、“分数”栏输入要修改的数据点击修改,就可完成修改功能),如图四-4。 四4修改数据 Ø 输入新的数据(在“姓名”、“学号”、“分数”栏输入要输入的数据点击输入,就可完成新数据的输入),如图四-5 四5输入数据 Ø 保存修改后的数据(点击保存选择保存的路径和文件名再点击保存,即可完成修改后数据的保存),如图四-6。 四6保存数据 五、课程设计的成果的分析 这次的设计成果大体上满足了课程设计的要求,并在这些功能上进行了一些优化和延伸,使软件各个功能的执行基本上没有BUG的存在。 虽然取得了一定的成果,但不足之处还是有许多的,对于软件界面和功能的完善还有很长的路要走,就现在该软件拥有的功能来说,每个功能都还有不同的缺陷存在。 如“保存”功能并不是很完善,并没有做到打开文件修改过后能直接存为那文件,而每次都得选择路径和文件名才能保存;“查询”功能也不完善,只能查询学号而不能根据其他信息查询,且当输入信息的学号顺序混乱时就根本不能对应查询。 总而言之,该程序要完善的东西还很多,还需要自我扩充知识,然后细心谨慎的来解决。 六、心得体会 这次本次课程设计的程序代码虽然简单,但细心还是相当重要的,不然代码输入的一些小错误,而导致程序运行出错是很麻烦的。 然而编程中存在错误是必然的,因此如何最快的查出错误是快速有效的编程所必须掌握的技巧。 在这次设计中,在不断的练习实践中根据熟练了调试程序查询错误的方法。 调试是一个繁琐而必不可少的过程,但调试的过程中你必须保持细心和耐心,很多时候程序出错时最难发现的错误往往是因为一些小细节引起的。 如缺少一个空格、中英文输入法没切换(C++中的分号,引号之类只识别英文输入法的,只有在输入字符串时可用中文输入法输入)等。 同时在发现程序漏洞的时候应大胆仔细的构思,考虑所有可能情况用最简单最有效的办法解决问题。 通过这次课程设计,让我更加熟悉了C++程序语言的使用,也发现了自己知识的不足,以后仍需要更加努力提升自身知识储备。 致谢 对于初学C++面向对象程序设计的我而言,设计这样一个软件无疑是一个困难的。 从理论到实践,从不明白到明白,这些日子尽管过得很是忙碌,但从中我收获了很多很多宝贵的知识和经验。 回顾这段时间,我收获了很多,也成长了很多,懂得如何去学习以前未曾有过的新思维新方法,懂得了如何去多方位地查找资料,完善和创新一些旧的思维方式,懂得了如何与同学们交流和协作。 在这次课程设计中,使我对C++中的MFC这块内容有了更深的理解,感到十分高兴,这些都要感谢在这次设计中给我指导和建议的所有人。 C++的课程虽然已经结束,但我要学的东西还有很多,在这里谢谢这学期指导我们学习C++的老师,虽然只有短短的一学期,但你为我们打开了一扇崭新的知识大门,让我们学到了许多以前不知道的东西。 感谢你对我们的悉心指导和谆谆教诲,辛勤付出。 参考文献 1)StanleyB.Lippman,BarbaraE.Moo,JoséeLaJoie着《C++Primer中文版》(第四版)人民邮电出版社。 2)谭浩强着《C++程序设计》清华大学出版社 3)钱能.《C++程序设计》(第二版)清华大学出版社 4)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 小型 数据库 课程设计