c++面对对象课程设计报告-通讯应用程序.doc_第1页
c++面对对象课程设计报告-通讯应用程序.doc_第2页
c++面对对象课程设计报告-通讯应用程序.doc_第3页
c++面对对象课程设计报告-通讯应用程序.doc_第4页
c++面对对象课程设计报告-通讯应用程序.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

面向对象课程设计报告设计(论文)题目: 通讯录应用程序 学 院 名 称: 电子与信息工程学院 专 业: 计算机科学与技术 班 级: 计科11- 4班 姓 名: 薛祥清 学 号: 11401010410 指 导 教 师: 周林华 2012年 9 月17日 22通讯录应用程序目录1、 目标与要求 2、 程序操作要求及说明 2.1 按钮要求 2.2 输入要求 3、 程序设计分析 3.1 程序框架流程图 3.2 设计思路 3.3 类声明与主要算法实现代码 4、 实现步骤 4.1 程序项目创建 4.2 界面及控件设计 4.3 按钮及编辑框属性 4.4 编辑框绑定变量 5、 程序模块设计代码与调试 5.1 浏览 5.2 添加 5.3 修改 5.4 保存 5.5 删除 5.6 、 六、课程设计总结 目标与要求:写通讯录应用程序要求:(1)能够实现通讯录中数据的浏览、删除和添加以及修能。 (2)利用文件存储通讯录中的数据。程序操作要求:2.1 按钮:程序共有七个操作按钮: 【浏览】、 【添加】、 【修改】、 【保存】、 【删除】、 【】(上一页)、 【】(下一页)。操作需遵守以下规则:1、 先点击按钮【浏览】,再进行其他操作。2、 进行添加、修改时候输入结束后必须点击【保存】进行联系人的信息保存,否则会造成添加、修改信息丢失。2.2 输入:该程序输入部分包括姓名、电话号码、邮箱地址、现住地址(其中包括省份、城市、街道)、所属群组。输入要求:1、 姓名、所属群组输入可以使任意字符。2、 现住地址包括三部分从左到右为:省份、城市、街道。3、 电话号码栏只能输入数字,输入其他字符程序会提示输入错误。4、 邮箱地址输入包括字母、数字、符号【】和【.】, 输入其他时程序会提醒输入错误。程序设计分析:3.1 程序框架流程图:开始删除(自带保存功能)输入联系人信息修改添加浏览:读取文件中联系人信息保存结束3.2 设计思路:如上流程图所示为该程序的使用流程。打开通讯录程序点击浏览,利用fstream类读取文件中联系人的个数,赋予m_total在编辑框里显示。再利用CFile类读取文件联系人具体信息,并写入双向队列deque p中。并显示队列中第一个元素。接下来可分为五种操作:1. :将队尾的元素加入队列头部,删除队尾元素,并显示第一个元素。2. : 将队首的元素加入队列尾部,删除队首元素,并显示第一个元素。3. 添加 :点击浏览按编辑框里的提示输入联系人的具体信息。4. 修改 :点击修改跳出提示对话框,关闭后进行修改。5. 保存 :修改和添加后的操作,先判断输入有没错误,再将队列的元素个数写进文件中,再进行循环的联系人信息保存:将队首元素写进文件,再将队首元素添到队尾,最后删除队首元素。6. 删除:删除队首元素后进行文件的保存。3.3 类声明与主要算法实现代码:/街道类-class siteprivate:CString sheng;CString shi;CString street;public:void getsite(CString sheng, CString shi, CString street);site()CString showsheng();CString showshi();CString showstreet();void site:getsite(CString she, CString sh, CString str)/构造函数sheng = she;shi = sh;street = str;CString site:showsheng()return sheng;CString site:showshi()return shi;CString site:showstreet()return street;/信息类 继承街道类-class people: public siteprivate:CString name;CString num;CString email;CString zhu;public:people (CString na, CString nu, CString em, CString she, CString sh, CString str, CString zh);CString showname ();CString shownum ();CString showemail ();CString showzhu ();people() ;people:people(CString na, CString nu, CString em, CString she, CString sh, CString str, CString zh)/构造函数getsite(she, sh, str);name = na;num = nu;email = em;zhu = zh;CString people:showname ()return name;CString people:shownum ()return num;CString people:showemail ()return email;CString people:showzhu ()return zhu;实现步骤:4.1 程序项目创建:打开Microsof Visual C+6.0,在文件中点击新建,在弹出框内选择MFC AppWizardexe工程,输入工程名:通讯录及保存位置,点击确定,如下图。将弹出的对话框MFC AppWizard-step 1对话框,选择基本对话框,点击完成,如下图。这样,MFC AppWizard 就建立了一个基本对话窗口的程序框架,如下图。4.2 界面及控件设计:按钮:以按钮【浏览】为例:点击控件上图标在对话框的合适位置制作一个按钮,并将按钮的标题改为(浏览)。双击按钮就可以进行后台代码的编写。其他按钮均可以按这种方法制作。编辑框:以【姓名】编辑框为例:点击控件上图标在对话框的合适位置制作一个编辑框,然后绑定变量:右击 建立类向导 Member Variables Add Variable 输入变量名,选好变量类型 OK。提示对话框:右击工作区间 插入Dialog 弹出新建的对话框 双击新建对话框 OK 输入类名aa OK 确定。主对话框跳转到提示对话框代码:类名 变量名;变量名.DoModal();界面及控件完成后如图所示:4.3 按钮及编辑框属性:对象ID标题或说明编辑框IDC_EDIT1姓名编辑框IDC_EDIT2电话号码编辑框IDC_EDIT3邮箱地址编辑框IDC_EDIT4住址省份编辑框IDC_EDIT5群组编辑框IDC_EDIT6人数编辑框IDC_EDIT7城市编辑框IDC_EDIT8街道按钮IDC_BUTTON1浏览按钮IDC_BUTTON2添加按钮IDC_BUTTON3修改按钮IDC_BUTTON4保存按钮IDC_BUTTON5删除按钮IDC_BUTTON6按钮IDC_BUTTON74.4 编辑框绑定变量:程序模块设计代码与调试:5.1 浏览: /按钮“浏览”将文件中的信息读取到队列中,并显示队列头一个类的信息void CMyDlg:OnButton1() / TODO: Add your control notification handler code hereUpdateData(true);ifstream my(data.txt, ios_base:in);int tt;my.read(reinterpret_cast(&tt), sizeof(int);my.close();while(!p.empty() p.pop_front();CFile mFile;TCHAR* pszFileName = _T(date.txt);mFile.Open(pszFileName, CFile:modeRead);CArchive ar(&mFile, CArchive:load);for(int i=0; a.numa.emaila.shenga.shia.streeta.zhu;people aa(, a.num, a.email, a.sheng, a.shi, a.street, a.zhu);p.push_front(aa);ar.Close();mFile.Close();m_total = tt;/如果文件中没有存入任何信息则显示“无”-if(tt = 0)wuxinxi assa;assa.DoModal();m_name = 无;m_num = 无;m_email = 无;m_add = 无;m_add1 = 无;m_add2 = 无;m_zhu = 无;elsem_name = p.front().showname();m_num = p.front().shownum();m_email = p.front().showemail();m_add = p.front().showsheng();m_add1 = p.front().showshi();m_add2 = p.front().showstreet();m_zhu = p.front().showzhu();UpdateData(false);5.2 添加:/按钮“添加”,输出提示文字-int tian = 0;void CMyDlg:OnButton2() / TODO: Add your control notification handler code hereUpdateData(true);tian = 1;m_name = 姓名;m_num = 电话号码;m_email = 邮箱地址;m_add = 省/直辖市/自治区;m_add1 = 城市;m_add2 = 街道;m_zhu = 分类;UpdateData(false); 5.3 修改:/按钮“修改”,跳出一个对话框提示“修改”-void CMyDlg:OnButton3() / TODO: Add your control notification handler code herexiugai sa;sa.DoModal();5.4 保存:/按钮“保存”添加、修改后都要进行保存,进行文件的写入-void CMyDlg:OnButton4() / TODO: Add your control notification handler code hereUpdateData(true);/检查添加、修改后的电话号码、邮箱地址格式有没错误。(电话只允许数字、邮箱可以有字母,数字“”和“.”)-int ff = 0, gg=0;for(int ii=0; iim_num.GetLength(); ii+)if(m_numii 9)ff = 1;break;for(int iii=0; iii= 0 & m_emailiii = A & m_emailiii = a & m_emailiii = z) | (m_emailiii = ) | (m_emailiii = .)elsegg=1;break;/输入电话号码邮箱格式错误时跳出对话框提示-if(ff = 1 & gg = 0)npeople dlg;dlg.DoModal();else if(gg = 1 & ff = 0)xemail daa;daa.DoModal();else if(ff=1 & gg=1)xnumemail ddd;ddd.DoModal();if(tian = 1)people aa(m_name, m_num, m_email, m_add, m_add1, m_add2, m_zhu);p.push_front(aa);m_total = p.size();elsepeople aa(m_name, m_num, m_email, m_add, m_add1, m_add2, m_zhu);p.pop_front();p.push_front(aa);tian = 0;int total;/将队列的头一个类写入文件,再利用函数push_brak()、pop_front()进行循环保存-ofstream myfile(data.txt, ios_base:out);total = p.size();myfile.write(reinterpret_cast(&total), sizeof(int);myfile.close();TCHAR* pszFileName = _T(date.txt);CFile mFile;mFile.Open(pszFileName, CFile:modeCreate|CFile:modeNoTruncate|CFile:modeWrite);CArchive ar(&mFile, CArchive:store);for(int i=0; itotal; i+)arp.front().showname()p.front().shownum()p.front().showemail()p.front().showsheng()p.front().showshi()p.front().showstreet()p.front().showzhu();p.push_back(p.front ();p.pop_front();ar.Close();mFile.Close();/跳出对话框提示保存成功-if(ff = 0 & gg =0)bok dd;dd.DoModal();ff = gg = 0;UpdateData(false);保存成功提示:电话号码输错提示:邮箱地址输错提示:邮箱及电话号码输错提示:5.5 删除:/按钮“删除”,利用队列函数pop_front()删除头一个类-void CMyDlg:OnButton5() / TODO: Add your control notification handler code hereUpdateData(true);int tt;p.pop_front();/删除后判断队列是否为空。若空则显示“无”,否则显示队列头一个类-if(p.empty()m_total = 0;m_name = 无;m_num = 无;m_email = 无;m_add = 无;m_zhu = 无;tt = 0;elsem_name = p.front().showname();m_num = p.front().shownum();m_email = p.front().showemail();m_add = p.front().showsheng();m_add1 = p.front().showshi();m_add2 = p.front().showstreet();m_total = p.size();m_zhu = p.front().showzhu();tt = p.size();/将队列的头一个类写入文件,再利用函数push_brak()、pop_front()进行循环保存-ofstream myfile(data.txt, ios_base:out);myfile.write(reinterpret_cast(&tt), sizeof(int);myfile.close();TCHAR* pszFileName = _T(date.txt);CFile mFile;mFile.Open(pszFileName, CFile:modeCreate|CFile:modeNoTruncate|CFile:modeWrite);CArchive ar(&mFile, CArchive:store);for(int i=0; itt; i+)arp.front().showname()p.front().shownum()p.front().showemail()p.front().showsheng()p.front().showshi()p.front().showstreet()p.front().showzhu();p.push_back(p.front ();p.pop_front();ar.Close();mFile.Close();/跳出对话框提示删除成功-sok dd;dd.DoModal();UpdateData(false);5.6 、:/利用函数push_front()、pop_break()进行循环显示-void CMyDlg:OnButton6() / TODO: Add your control notification handler code hereUpdateData(true);p.push_front(p.back();p.pop_back();m_name = p.front().showname();m_num = p.front().shownum();m_email = p.front().showemail();m_add = p.front().showsheng();m_add1 = p.front().showshi();m_add2 = p.front().showstreet();m_zh

温馨提示

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

评论

0/150

提交评论