已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
封封 皮皮 (按学校要求手工填写)(按学校要求手工填写) 成成 绩绩 评评 定定 表表 学生姓名班级学号 专 业通信工程课程设计题目 字符串类的设计与实现 评 语 组长签字: 成绩 日期 20 年 月 日 课程设计任务书课程设计任务书 学 院信息科学与工程专 业通信工程 学生姓名班级学号 课程设计题目字符串类的设计与实现 实践教学要求与任务实践教学要求与任务 进行字符串类的设计,具体要求如下: (1)使用堆分配存储表示实现字符串的存储; (2)实现串赋值操作 StrAssign( (3)实现串比较操作 StrCompare(S,T); (4)实现求串长操作 StrLength(S); (5)实现串连接操作 Concat( (6)实现求子串操作 SubString( (7)实现清空子串操作 ClearString( (8)将上述功能作为类的成员函数实现,编写主函数测试上述功能。 工作计划与进度安排工作计划与进度安排 第 17 周:分析题目,查阅课题相关资料,进行类设计、算法设计; 第 18 周:程序的设计、调试与实现; 第 19 周:程序测试与分析,撰写课程设计报告,进行答辩验收。 指导教师: 201 年 月 日 专业负责人: 201 年 月 日 学院教学副院长: 201 年 月 日 摘 要 类是 C+中十分重要的概念,它是实现面向对象程序设计的基础。C+对 C 的改 进,最重要的就是增加了“类”这样一种类型。类是对象的抽象,而对象则是类的具 体实例,如果一种计算机语言中不包含类,它就不能称为面向对象的语言。一个有一 定规模的 C+程序是由许多类所构成的。本文进行了对字符串类的设计与实现,该程 序实现的主要目的是对串赋值操作、串比较操作、求串长操作、串连接操作、求子串 操作和清空子串操作进行功能测试。本文采用 Visual C+ 6.0 的控制台工程和 MFC 工 程分别实现了对字符串的相应操作功能的测试,通过对两种程序的测试结果对比分析, 表明:本文字符串类的设计思想正确,两种程序均能正确执行对所需功能的测试操作。 关键词:类;字符串类的设计与实现;控制台工程;MFC 工程 目 录 1 需求分析.1 2 算法基本原理.1 3 类设计.2 4 基于控制台的应用程序.3 4.1 类的接口设计3 4.2 类的实现4 4.3 主函数设计11 4.4 基于控制台的应用程序测试12 5 基于 MFC 的应用程序.15 5.1 基于 MFC 的应用程序设计15 5.1.1 MFC 程序界面设计.15 5.1.2 MFC 程序代码设计.17 5.2 基于 MFC 的应用程序测试22 结 论.24 参考文献.25 1 1 需求分析 (1)类是 C+中十分重要的概念,它是实现面向对象程序设计的基础。 C+对 C 的改进,最重要的就是增加了“类”这样一种类型。 (2)类是对象的抽象,而对象则是类的具体实例,如果一种计算机语言中 不包含类,它就不能称为面向对象的语言。一个有一定规模的 C+程序是由许 多类所构成的。 (3)类是 C+的灵魂,如果不真正掌握类,就不能真正掌握 C+。 2 算法基本原理 图图 2-1 基本原理图基本原理图 输入字符串输入字符串 字字 符符 串串 的的 赋赋 值值 字字 符符 串串 的的 比比 较较 清清 空空 子子 串串 求求 字字 符符 串串 子子 串串 字字 符符 串串 的的 连连 接接 求求 字字 符符 串串 串串 长长 输出测试后的结果输出测试后的结果 字符串类的设计与实现字符串类的设计与实现 2 3 类设计 从上面的算法分析可以看到,本设计的关键是类的成员函数的定义。可以 定义一个字符数组类 string,然后在类内声明类的成员函数。字符数组类的各成 员函数负责对输入的字符串进行按要求处理,输入的字符串用一个一维数组来 存放,字符数组类 string 的数据成员包括数组 strN和 len。字符数组类 string 的功能需要有实现串赋值操作 StrAssign( int n ,flag=0; class string /string 类声明 private: char strN; /字符串一维数组 int len; /串的长度 public: /外部接口 string(char *p) /字符串的构造 copy(str,p); string (); 4 void copy(char *s1,char *s2); void copy(char *s); void strset() /字符串的输入 cinstr; void strout() /字符串的输出 coutstri) return -1; return 0; int string:StrLengh() /求串长 int i=0; while(stri+!=0); return i-1; void string:Concat(char*s) /串连接 int i=0,k=length(); while(si!=0) strk=si; k+; i+; strk=0; void string:SubString(char*s,int a,int b) /求子串 int i,k=0; for(i=a-1;iyorn; couts1; couts1; s.Concat(s1); couts1; couta; coutb; couts1; couta; cs(a); return 0; 在程序的主函数部分,首先,选择你所要测试的功能的序号,之后从键盘 输入需要的一个或两个字符串作为一个实际例子来进行功能的测试。字符串使 用一维数组来存储。字符数组类 string 的成员函数 StrAssign(char*s)、 StrCompare(char*s)、StrLengh()、Concat(char*s)、SubString(char*s,int a,int b)和 ClearString(char*s)会分别完成对所选功能的测试任务,show( )函数会提示是否 继续进行功能测试,继续进行功能测试则从键盘输入 Y,退出系统,结束对功 能的测试则输入 N。 4.4 基于控制台的应用程序测试 程序运行结果如图 2 和图 3 所示。 13 图 2 程序运行结果 14 图 3 程序运行结果 从图 2 和图 3 中可以看出,程序能够实现所选序号的功能,但是,对于功 能实现的结果的正确性问题却无法获知,为了能够验证结果的正确性,对所输 入的字符串进行人为功能实现,如果两次的功能实现结果相同,即说明功能实 15 现的结果是正确的,否则,说明功能实现存在问题,需对程序进行进一步调试 分析。 5 基于 MFC 的应用程序 MFC 的图形界面程序设计可在上述类设计的基础上进行改造,MFC 的图 形界面程序与 DOS 界面程序的主要不同点是:MFC 图形界面程序与 DOS 界面 程序的输入输出方式不同,DOS 界面程序采用字符交互式实现数据输入输出, 主要通过 cin,cout 等 I/O 流实现,而 MFC 的图形程序界面采用标准 Windows 窗口和控件实现输入输出,因此必须在 MFC 类的框架下加入上面所设计的矩阵 和方程组类,并通过图形界面的输入输出改造来完成。 5.1 基于 MFC 的应用程序设计 5.1.1 MFC 程序界面设计 首先在 VC 中建立 MFC AppWizard(exe)工程,名称设置为 000,并在向 导的 Step1 中选择 Dialog based,即建立基于对话框的应用程序,如下图 45 所 示。 图 4 建立 MFC AppWizard(exe)工程 16 图 5 建立基于对话框的应用程序 将对话框资源中的默认对话框利用工具箱改造成所需要的界面,如图 6 所 示。 图 6 字符串操作程序界面设计 17 图 6 所示的界面中包含了 5 个 Static Text 控件,7 个 Button 控件,和 10 个 Edit Box 控件,控件的基本信息列表如下表 1 所示。 表 1 控件基本信息 控件类别控件 ID控件 Caption说明 请输入字符串 1 请输入字符串 2 请输入子串的始 位置 请输入子串的末 位置 Static TextIDC_STATIC 功能测试结果 IDC_BUTTON1串赋值 IDC_BUTTON2串比较 IDC_BUTTON3求串长 IDC_BUTTON4串连接 IDC_BUTTON5求子串 IDC_BUTTON6清空子串 Botton IDC_BUTTON7退出 IDC_EDIT1字符串 1 IDC_EDIT2字符串 2 IDC_EDIT3串赋值的测试结果 IDC_EDIT4串比较的测试结果 IDC_EDIT5求串长的测试结果 IDC_EDIT6串连接的测试结果 IDC_EDIT7求子串的测试结果 IDC_EDIT8子串的始位置 IDC_EDIT9子串的末位置 Edit Box IDC_EDIT10清空子串 5.1.2 MFC 程序代码设计 为了能够将对话框界面上的控件能够与代码联系起来,需要为 10 个 Edit 18 Box 控件建立 Member Variables,按 Ctrl+w 键进入 MFC ClassWizard 界面,选 择 Member Variables 选项卡,可显示成员变量设置界面,如图 7 所示。 图 7 成员变量设置界面 通过该界面设置与 10 个 Edit Box 控件对应的成员变量,具体内容如表 2 所 示。 表 2 控件基本信息 控件 ID成员变量类型成员变量名称 IDC_EDIT1CEditm_str1 IDC_EDIT2CEditm_str2 IDC_EDIT3CStringm_e1 IDC_EDIT4intm_e2 IDC_EDIT5intm_e3 IDC_EDIT6CStringm_e4 IDC_EDIT7CStringm_e5 IDC_EDIT8intm_shou IDC_EDIT9intm_wei IDC_EDIT10intm_e6 下面是编写代码的重要阶段,可以借鉴在设计基于 DOS 界面的控制台应用 程序的代码,并将其作必要的改写,具体改写的步骤与内容如下。 19 将 string.h 文件和 string.cpp 文件合并成一个文件,重新命名为 string.h, 并将其加入 MFC 工程。 修改 string.h 文件具体包括: 将功能列表 menu( )函数和退出系统 show( )函数注释掉,因为在图形界 面的程序设计上不需要这两个函数; 将函数中的 cout 语句全部去掉,因为不需要也不能够使用 cout 流实现 输出。 编写执行测试功能的按钮的函数,实现所需测试的功能,具体代码如下: void CMy000Dlg:OnButton1( ) / TODO: Add your control notification handler code here UpdateData(TRUE); char cstr110; m_str1.GetWindowText(cstr1,10); m_e1=cstr1; UpdateData(FALSE); void CMy000Dlg:OnButton2( ) / TODO: Add your control notification handler code here UpdateData(TRUE); char cstr110,cstr210; m_str1.GetWindowText(cstr1,10); m_str2.GetWindowText(cstr2,10); m_e2=strcmp(cstr1,cstr2); UpdateData(FALSE); void CMy000Dlg:OnButton3( ) 20 / TODO: Add your control notification handler code here UpdateData(TRUE); char cstr110; m_str1.GetWindowText(cstr1,10); m_e3=strlen(cstr1); UpdateData(FALSE); void CMy000Dlg:OnButton4( ) / TODO: Add your control notification handler code here UpdateData(TRUE); char cstr110,cstr210; m_str1.GetWindowText(cstr1,10); m_str2.GetWindowText(cstr2,10); int i=0,k=strlen(cstr1); while(cstr2i!=0) cstr1k=cstr2i; k+;i+; cstr1k=0; m_e4=cstr1; UpdateData(FALSE); void CMy000Dlg:OnButton5( ) / TODO: Add your control notification handler code here 21 UpdateData(TRUE); char cstr110; char cstr310; m_str1.GetWindowText(cstr1,10); int i,k=0; for(i=m_shou-1;im_wei;i+) cstr3k=cstr1i; k+; cstr3k=0; m_e5=cstr3; UpdateData(FALSE); void CMy000Dlg:OnButton6( ) / TODO: Add your control notification handler code here UpdateData(TRUE); int i,k=strlen(m_e5); for(i=0;ik;i+) m_e5i=NULL; if(m_e5) m_e6=1; UpdateData(FALSE); 退出按钮比较简单,代码如下: 22 void CMy000Dlg:OnButton7( ) / TODO: Add your control notification handler code here OnOK( ); 5.2 基于 MFC 的应用程序测试 运行程序后,首先出现的界面如图 8 所示。 图 8 程序初始运行界面 输入数据,则所输入的数据在界面上显示如图 9 所示。 23 图 9 输入数据后的界面 分别单击所要测试的功能的按钮,实现所要测试的功能并将测试结果显示 出来,如图 10 所示。 图 10 测试功能后的界面 单击退出按钮后,程序能够正常实现退出操作。 24 结 论 整个程序中的字符串的存储采用的是一维数组和动态内存分配方式。所设 计的类是字符串实现的类,字符数组类 string 类的设计结合问题的实际需要达 到了对所需功能的有效描述和测试。 程序的访问控制也是根据问题的需要而设计的。类的数据成员的存储,维 护着字符串数据,私有数据成员是类的成员函数必须访问的。利用私有成员特 征,将类数据成员的访问控制属性设置为私有型,在类中就可以访问到私有成 员;而对于类外的其余模块,这些数据无法访问。这样,就在数据的共享与隐 藏之间寻找到一个比较恰当的结合点。本设计中,字符数组类 string 类的析构 函数调用其构造
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机场工程解除合同说明
- 国际模特签证管理与实施办法
- 游戏厅装修施工合同范本
- 汽车工人施工合同
- 医务室药品使用反馈机制
- 医疗服务项目
- 智能眼镜网线铺设协议
- 签约合同审核要点
- 电力设施外墙施工合同范本
- 塑料厂扩建工程补充合同
- 急诊科护士的沟通技巧与患者关怀
- 应对突发事件的应急响应与复盘总结
- 施工管理的成本控制与成本管理
- 《重大危险源界定》课件
- 人工智能的道德与伦理问题
- 二手车市场项目招商引资方案
- 某部营房改造装修施工组织设计
- 新媒体视听节目制作 第三章 新媒体视听节目的“策划之道”
- 顺丰快递薪酬管理案例分析
- 浙江省杭州市西溪中学2023-2024学年八年级上学期期中科学试卷
- 2023年2月抗菌药物临床应用监测与评估报告
评论
0/150
提交评论