




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第 16 页 共 页国 家 重 点 建 设 大 学成 人 高 等 学 历 教 育 学 生( 实践课程名: C+程序设计)实践报告题 目: 简易通讯录 专 业: 软件工程 年 级: 2011 准考证号: 014911310030 姓 名: 张英斌 指导老师: 王卓 完成时间: 2014-4-23 毕业设计(实习、论文)成绩: 2014年 4 月 23 日 南昌大学实践报告学生姓名: 张英斌 学 号: 014911310030 专业班级: 软件工程 实践类型: 验证 综合 设计 创新 实践日期: 2014-03-31 实践成绩: 1、 实验项目名称C+简单程序设计:简易通讯录二、项目目的1、掌握基本数据类型表示2、 了解I/O流控制及基本的格式控制3、 理解并掌握程序的分支结构 4、 理解并掌握程序的循环结构 5、 了解提高程序可读性 6、学习面向过程程序设计方法 三、项目基本原理1、功能图:2、 程序流程图:四、主要仪器设备及耗材1、软件需求:Visual C+ 6.02、硬件需求: Pentium III以上的CPU处理器,1G以上的内存五、项目源代码(由于代码过多,以下是核心代码) 1.在TxlDlg.h文件中加入下列代码用于储存联系人的各项信息,采用结构体数组形式 struct Person CString s_name; CString s_telnumber; CString s_qq; CString s_address; ;2. 下面是为实现“添加联系人”的代码 void CTxlDlg:OnAddPerson() / TODO: Add your control notification handler code here UpdateData(TRUE); struct Person person500; CString str; int i=m_list1.GetItemCount(); personi.s_name=m_name; personi.s_telnumber=m_telnumber; personi.s_address=m_address; personi.s_qq=m_qq; if(m_name=) AfxMessageBox(必须输入姓名); return; else str.Format(%s,personi.s_name); m_list1.InsertItem(i,str); str.Format(%s,personi.s_telnumber); m_list1.SetItemText(i,1,str); str.Format(%s,personi.s_qq); m_list1.SetItemText(i,2,str); str.Format(%s,personi.s_address); m_list1.SetItemText(i,3,str); /保存数据 CString info = personi.s_name+ + personi.s_telnumber + # + personi.s_qq + $ + personi.s_address; CFile f1(record.txt,CFile:modeReadWrite); f1.SeekToEnd(); f1.Write(info,info.GetLength(); f1.Write(rn,2);/返回,换行符 f1.Close(); m_name=; m_telnumber=; m_address=; m_qq=; UpdateData(FALSE); 3. 下面是为实现“删除所有人”的代码 void CTxlDlg:OnDeleteAll() / TODO: Add your control notification handler code here m_list1.DeleteAllItems(); CFile f1(record.txt,CFile:modeCreate); f1.Close(); 4.下面是为实现“删除选中的联系人”的代码 void CTxlDlg:OnDelPerson() / TODO: Add your control notification handler code here UpdateData(); int i,iState; int nItemSelected=m_list1.GetSelectedCount();/所选表项数 int nItemCount=m_list1.GetItemCount();/表项总数 if(nItemSelected=0;i-) iState=m_list1.GetItemState(i,LVIS_SELECTED); if(iState!=0) m_list1.DeleteItem(i); Writefile(); 5.Writefile()函数实现部分 void CTxlDlg:Writefile()/对整个列表的数据重写到文件,实现修改与删除功能 UpdateData(TRUE); struct Person person500; CString str; int i=m_list1.GetItemCount(); CFile f(record.txt,CFile:modeCreate); f.Close(); int m=0; while(mi) personm.s_name=m_list1.GetItemText(m,0); personm.s_telnumber=m_list1.GetItemText(m,1); personm.s_qq=m_list1.GetItemText(m,2); personm.s_address=m_list1.GetItemText(m,3); /保存数据 CString info = personm.s_name+ + personm.s_telnumber + # + personm.s_qq + $ + personm.s_address; CFile f1(record.txt,CFile:modeReadWrite); f1.SeekToEnd(); f1.Write(info,info.GetLength(); f1.Write(rn,2);/返回,换行符 f1.Close(); m+; 6. 下面是为实现“修改选中的联系人”的代码 void CTxlDlg:OnModifyPerson() / TODO: Add your control notification handler code here POSITION pos=m_list1.GetFirstSelectedItemPosition(); if(pos=NULL) MessageBox(请先选中联系人); return ; char chTemp20=0; int i=m_list1.GetNextSelectedItem(pos); /获取当前记录位置的游标 m_list1.GetItemText(i,0,chTemp,sizeof(chTemp); m_name=chTemp; m_list1.GetItemText(i,1,chTemp,sizeof(chTemp); m_telnumber=chTemp; m_list1.GetItemText(i,2,chTemp,sizeof(chTemp); m_qq=chTemp; m_list1.GetItemText(i,3,chTemp,sizeof(chTemp); m_address=chTemp; UpdateData(FALSE); 7. 下面是为实现“确定修改”的代码 void CTxlDlg:OnModifyOK() / TODO: Add your control notification handler code here POSITION pos=m_list1.GetFirstSelectedItemPosition(); if(pos=NULL) MessageBox(请先选择修改); return ; if(m_name=) AfxMessageBox(请先选择修改); return; int n=m_list1.GetNextSelectedItem(pos); char s20=0; UpdateData(TRUE);/将更新后的数据传给变量,并显示到列表控件 if(m_name=) AfxMessageBox(必须输入姓名); return ; else m_list1.DeleteItem(n); m_list1.InsertItem(n,m_name); m_list1.SetItemText(n,1,m_telnumber); m_list1.SetItemText(n,2,m_qq); m_list1.SetItemText(n,3,m_address); m_name=;/清空编辑框中数据 m_telnumber=; m_address=; m_qq=; UpdateData(FALSE); Writefile(); 8. 下面是为实现“查询联系人”的代码 void CTxlDlg:OnSearchPerson() / TODO: Add your control notification handler code here UpdateData(TRUE);/把编辑框中内容传给变量 int p=0; if(m_name=) AfxMessageBox(必须输入姓名); return; int n=m_list1.GetItemCount(); for(int i=0;in;i+) if(m_name=m_list1.GetItemText(i,0) m_name=m_list1.GetItemText(i,0); m_telnumber=m_list1.GetItemText(i,1); m_qq=m_list1.GetItemText(i,2); m_address=m_list1.GetItemText(i,3); UpdateData(FALSE); p=1; if(p=0) AfxMessageBox(没有该联系人); return; 9. 下面是程序初始化的部分代码 BOOL CTxlDlg:OnInitDialog() CDialog:OnInitDialog(); / IDM_ABOUTBOX must be in the system command range. ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR); pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); / Set the icon for this dialog. The framework does this automatically / when the applications main window is not a dialog SetIcon(m_hIcon, TRUE); / Set big icon SetIcon(m_hIcon, FALSE); / Set small icon / TODO: Add extra initialization here m_list1.InsertColumn(0,姓名,LVCFMT_CENTER,100);/插入列 m_list1.InsertColumn(1,电话号码,LVCFMT_CENTER,150); m_list1.InsertColumn(2,QQ号码,LVCFMT_CENTER,150); m_list1.InsertColumn(3,居住地址,LVCFMT_CENTER,250); m_list1.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);/设置为表格样式 m_name=; m_telnumber=; m_qq=; m_address=; /读取数据到列表 CStdioFile file(record.txt,CFile:modeRead); CString str1,str2,str3,str4,strAll; int count=-1; while(file.ReadString(strAll) str1 = strAll.Mid(0,strAll.Find(); str2 = strAll.Mid(strAll.Find()+1,strAll.Find(#)-strAll.Find()-1); str3 = strAll.Mid(strAll.Find(#)+1,strAll.Find($)-strAll.Find(#)-1); str4 = strAll.Mid(strAll.Find($)+1,strAll.GetLength()-strAll.Find($)-1); m_list1.InsertItem(+count,_T(); m_list1.SetItemText(count,0,str1); m_list1.SetItemText(count,1,str2); m_list1.SetItemText(count,2,str3); m_list1.SetItemText(count,3,str4); /BOOL SetItemText(int nItem,int nSubItem,LPTSTR lpszText) /参数: nItem 要设定文本项的索引值。 /nSubItem 子项的索引,若为零,则设置项标签。 /lpszText 指向包含新项文本字符串的指针。 file.Close(); return TRUE; / return TRUE unless you set the focus to a control 6、 试运行:七、总结1.为了实现文件的读写与存储,可以使用链表、结构体数组,或者采用数据库中的Access文件,用MFC中的CFILE类,或者用串行化方法读写数据,本程序使用结构体数组用于存储联系人信息,用CFile类、CStdio类和CString类。其中主要用CFile类的函数Write写CString类型的数据,用CStdio中的readString函数进行读数据。为了保存修改后的数据,做到视图中信
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合同协议内容摘要3篇
- 公章授权书格式3篇
- 2024年吉安市泰和县上圯水厂招聘笔试真题
- 2024年合肥市第一人民医院招聘笔试真题
- 九年级班主任志愿服务工作计划
- 2025年幼儿园心理健康活动教研计划
- 部编版四年级下册语文教学计划
- 大型基础设施雨污分流施工安全措施
- 光伏轻工合同(2篇)
- 广告行业防止串标的创新措施
- 医务人员职业健康安全健康-课件
- 安全组织机构图
- 旧石器时代考古-基础知识课件
- 江苏省建设工程现场安全文明施工措施费计价管理办法
- 病区药品规范化管理与问题对策黄池桃
- 螺纹塞规操作规程
- 2023年北京天文馆招聘笔试备考题库及答案解析
- 应急救援队伍单兵体能训练项目要求
- 车辆办理ETC委托书范文
- 成都市重污染天气应急预案(2020年修订)
- UM71无绝缘轨道电路讲义
评论
0/150
提交评论