字符统计软件实验报告.docx
《字符统计软件实验报告.docx》由会员分享,可在线阅读,更多相关《字符统计软件实验报告.docx(22页珍藏版)》请在冰豆网上搜索。
字符统计软件实验报告
山东交通学院
C++课程设计
字符统计软件
院(系)别信息工程系
班级计算062
学号060811210
姓名孔祥刚
指导教师王成
时间2008-10-13—2008-10-24
摘要
该软件采用类的思想,在VisualC++6.0的环境下,通过创建的控制类和统计类实现在DOS界面下对输入的字符串进行统计。
Ø选择一:
在清除前次字符统计的条件下,重新进行字符统计
Ø选择二:
在保留前次字符统计的条件下,进行字符的再统计
Ø选择三:
退出
Ø统计类型包括:
字母,数字,空格以及其他字符
面向对象的集成开发环境并不只有VisualC++6.0。
目前主流的开发环境包括:
1.visualC++
2.visualstudio
3.BorlandC++
4.C++Builder
5.eclipse(CDT)
6.Dev-C++
特注:
MicrosoftVisualC++并不严格遵循标准C++标准,在很多方面,与标准C++标准相左(不过在VC8、VC9版本中对C++标准的支持还是有很大的提高的)。
关键词:
字符统计,类,VisualC++6.0
目录
前言4
前言葉3
1VisualC++简介2
2总体设计2
3详细设计2
3.1控制模块3
3.1.1清楚记录式统计4
3.1.2保留记录式统计5
3.1.3退出5
3.2统计模块6
3.3文件源代码7
4程序测试11
参考文献14
前言
【计算机】面向对象程序设计语言中的一个概念:
类(Class)实际上是对某种类型的对象定义变量和方法的原型。
它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。
类是对某个对象的定义。
它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。
实际上它本身并不是对象,因为它不存在于内存中。
当引用类的代码运行时,类的一个新的实例,即对象,就在内存中创建了。
虽然只有一个类,但能从这个类在内存中创建多个相同类型的对象。
可以把类看作“理论上”的对象,也就是说,它为对象提供蓝图,但在内存中并不存在。
从这个蓝图可以创建任何数量的对象。
从类创建的所有对象都有相同的成员:
属性、方法和事件。
但是,每个对象都象一个独立的实体一样动作。
例如,一个对象的属性可以设置成与同类型的其他对象不同的值。
类定义的一般形式如下:
className{
public:
类的公有接口
private:
私有的成员函数
私有的数据成员定义
};
类的定义由类头和类体两部分组成。
类头由关键字Class开头,然后是类名,其命名规则与一般标识符的命名规则一致。
类体包括所有的细节,并放在一对花括号中。
类的定义也是一个语句,所以要有分号结尾,否则会产生编译错误。
类体定义类的成员,它支持两种类型的成员:
(1)数据成员,它们指定了该类对象的内部表示。
(2)成员函数,他们指定了该类的操作。
类成员有3种不同的访问权限:
(1)公有(public)成员可以在类外访问。
(2)私有(private)成员只能被该类的成员函数访问。
(3)保护(protected)成员只能被该类的成员函数或派生类的成员函数访问。
数据成员通常是私有的,成员函数通常有一部分是公有的,一部分是私有的。
公有的函数可以在类外被访问,也称之为类的接口。
可以为各个数据成员和成员函数指定合适的访问权限。
MicrosoftVisualBasicforApplications(VBA)工程中可包含两种不同类型的类模块:
没有任何一种与其关联的用户界面的基本类模块;与窗体或其它组件关联的类模块。
例如,与窗体相关联的类模块,它们和基本类模块相同,只是它们只有在那个窗体存在于内存中时,才存在于内存中。
拥有相关联的类模块的对象的示例是“用户窗体”、MicrosoftAccess窗体和报表、MicrosoftWord的ThisDocument对象,MicrosoftExcel的ThisWorkbook和SheetN对象。
C++,C语言这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“Cplusplus”,它是一种使用非常广泛的计算机编程语言。
C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。
它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。
前言葉
クラス(クラス)実際には、プロトタイプの変数やメソッドのオブジェクト定義のいくつかのタイプです。
これは抽象的なものの共通の特徴の1クラスの実際の生活は、オブジェクト指向プログラミングしている。
クラスは、オブジェクトの定義です。
これは、方法に関する情報が含まれ、その名前、メソッド、プロパティ、イベントなど、オブジェクトを移動されます。
実際には、次のように、メモリ内に存在しない場合は、オブジェクト自体ではない。
コードの場合は、されているタイプ、例の新しい種類の実行に使用すると、オブジェクトは、メモリ内に作成されます。
カテゴリーは1つだけですが、オブジェクトの異なる種類の番号の作成でこのタイプのメモリから。
カテゴリというのは、オブジェクトの"理論"として見ることができる、それが、オブジェクトのための青写真を提供するメモリ内に存在しません。
からこのオブジェクトの任意の数の青写真を作成することができます。
オブジェクトのすべての種類の作成から同じ:
プロパティ、メソッド、イベントをしている。
しかし、それぞれの行動のような独立組織としては、オブジェクトの。
たとえば、オブジェクトのプロパティに値を他のオブジェクトにはさまざまな種類で構成することができます。
カテゴリというのは、オブジェクトの"理論"として見ることができる、それが、オブジェクトのための青写真を提供するメモリ内に存在しません。
からこのオブジェクトの任意の数の青写真を作成することができます。
オブジェクトのすべての種類の作成から同じ:
プロパティ、メソッド、イベントをしている。
しかし、それぞれの行動のような独立組織としては、オブジェクトの。
たとえば、オブジェクトのプロパティに値を他のオブジェクトにはさまざまな種類で構成することができます。
クラス定義の一般的な形式は以下の通りです:
className{
public:
パブリックインターフェイスの種類
Private:
の定義のプライベートなデータメンバーのプライベート関数のメンバー}
最初のカテゴリーと体の種類は2つの部分から成る内のカテゴリーの定義。
クラスの冒頭にヘッダをキーワードで分類、カテゴリー別に続いて、名前、識別子の命名規則は、一般的なルール。
体のすべての詳細など、カテゴリ、およびかっこのペアになった。
クラスは、ステートメントの定義ので、年末には、セミコロンする必要があります、それ以外は、コンパイラエラーがあるということです。
クラスは、メンバーの2種類:
指定のオブジェクトは、データは、内部のメンバーなどをサポートしているメンバーのカテゴリを定義している。
この関数のメンバーは、操作の種類が指定されました。
アクセスの3種類のクラスのメンバ:
(1)パブリック(公共)外国訪問のクラスのメンバであることができます。
(2)プライベート(個人)のみの訪問数が関数のメンバーの一員することができます。
(3)保護()保護のみ、このような会員または関数の派生クラスのメンバ関数のメンバーを訪問することができます。
は、データのメンバーは通常、この関数のメンバーは非公開です通常、公共の一部を、民間の一部です。
パブリック関数は、カテゴリ外でも、インターフェイスのタイプとして知られているアクセスすることができます。
データを、指定された適切なアクセスの機能メンバーのすべてのメンバー。
MicrosoftのVisualBasicforApplicationsは、(VBA)をプロジェクトのモジュールの2種類のカテゴリ:
誰もモジュールの基本的な種類のユーザーインターフェイスに関連付けられて;含まれる場合があります、フォームまたはその他のコンポーネントは、クラスモジュールに関連付けられている。
たとえば、フォームモジュールの種類に関連付けられており、基本的にモジュールの同じタイプですが、メモリのみの形で存在する、メモリ内にのみ存在しています。
オブジェクトモジュールのタイプに関連付けられている"ユーザーフォーム"の例ですと、MicrosoftAccessフォームとレポートは、MicrosoftWordのThisDocumentオブジェクトは、MicrosoftExcelとThisWorkbookのSheetNオブジェクトです。
C++のは、プログラマーを頻繁に参照するの輪の中に、中国本土の言語で、Cの単語の"cギャガ"と西のプログラマー通常"C++"は、コンピュータのプログラミング言語を使用しているのは非常に広範な読み取りを行う。
C++のデータの共通のプログラミング言語の複数のプログラミングパラダイムをサポートするために、静的な型チェックされています。
また、データの抽象化、オブジェクト指向プログラミングプログラミングのプロセスをサポートし、プログラミングのスタイルは、さまざまなプログラミング上の一般的なアイコンの生産、などなど。
1VisualC++简介
VisualC++的MFC基类库定义了几个数据库类。
在利用ODBC编程时,经常要使用到CDatabase(数据库类)、CRecordSet(记录集类)和CRecordView(可视记录集类)。
CDatabase类对象提供了对数据源的连接,通过它可以对数据源进行操作。
CRecordSet类对象提供了从数据源中提取出的记录集。
CRecordSet对象通常用于两种形式:
动态行集(dynasets)和快照集(snapshots)。
动态行集能与其他用户所做的更改保持同步,快照集则是数据的一个静态视图。
每种形式在记录集被打开时都提供一组记录,所不同的是,当在一个动态行集里滚动到一条记录时,由其他用户或应用程序中的其他记录集对该记录所做的更改会相应地显示出来。
CRecordView类对象能以控件的形式显示数据库记录,这个视图是直接连到一个CRecordSet对象的表视图。
2总体设计
图1-1给出了字符统计程序的流程图,通过此图可清晰地反映此系统运行的流程。
图1-1
3详细设计
本节将对字符统计程序进行详细的介绍包括个模块的功能,代码以及一些运行效果图。
本程序主要包括两个模块即:
控制模块和统计模块。
控制模块主要是进行视图的显示提示用户要进行的操作。
统计模块主要是对输入的字符进行运算统计后台运行。
控制模块
控制模块包括三个部分即能进行的操作。
包括清楚记录式统计,保留记录式统计,以及退出。
主要执行控制功能。
界面如图3-1-1,图3-1-2
图3-1-1
图3-1-2
清楚记录式统计
该功能主要是进行字符统计运算,同时将以前记录的结果清零,不对本次操作产生影响
操作效果图如图3-1-1-1,3-1-1-2:
图3-1-1-1
图3-1-1-1
保留记录式统计
该功能同样主要是进行字符统计运算,不同于前一个功能的是将以前进行操作的统计数据保留,将本次运行所得到的数据追加到以前的数据上。
以前的数据会对本次操作产生影响。
操作效果图如图3-1-2-1:
图3-1-2-1
退出
为程序运行是想退出提供选项。
运行效果图如3-1-3-1:
图3-1-3-1
统计模块
统计模块主要是进行后台运行服务接受从前台(控制模块)接受的数据进行统计运算,
本模块主要靠运算类。
类成员变量分别代表,字符数,数字数,空格数,其他字符数。
通过进行逐个字符的判断对上述变量进行累加。
效果图如3-2-1:
图3-2-1
文件源代码
编译文件分为3个头文件(*.h文件)和3个源文件(*.cpp):
//stdafx.h:
includefileforstandardsystemincludefiles,
//orprojectspecificincludefilesthatareusedfrequently,but
//arechangedinfrequently
//
#if!
defined(AFX_STDAFX_H__0246DCED_29B9_4E99_AEA0_AB7F705CB897__INCLUDED_)
#defineAFX_STDAFX_H__0246DCED_29B9_4E99_AEA0_AB7F705CB897__INCLUDED_
#if_MSC_VER>1000
#pragmaonce
#endif//_MSC_VER>1000
//TODO:
referenceadditionalheadersyourprogramrequireshere
//{{AFX_INSERT_LOCATION}}
//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.
#endif//!
defined(AFX_STDAFX_H__0246DCED_29B9_4E99_AEA0_AB7F705CB897__INCLUDED_)
#include"StdAfx.h"/////////conctrl.h
#include"iostream.h"
#include"string.h"
#include"cal.h"
classprog
{
private:
charflag;
public:
calcall;
prog:
:
prog()
{flag=0;}
voidprog:
:
run()
{
chara;
cout<<"pleaseinputsomewords"<call.r(a);
call.disp();
chos();
}
voidprog:
:
chos()
{
flag='';
while
(1)
{
cout<<"1.cleardataandrunagain;"<cout<<"2.savedataandrunagain:
"<cout<<"3.exit"<cin>>flag;
switch(flag)
{
case'1':
call.clr();run();break;
case'2':
run();break;
case'3':
exit
(1);
default:
cout<<"inputerror!
anykeygoon"<}
}
}
};
#include"stdafx.h"///////////////////cal.h
#include"string.h"
#include"stdlib.h"
#include"stdio.h"
#include"iostream.h"
classcal
{
private:
intw;//字符
intn;//数字
ints;//空格
into;//其他
public:
cal();
voidclr();
voiddisp();
voidr(charc);
};
//stdafx.cpp:
sourcefilethatincludesjustthestandardincludes
//new.pchwillbethepre-compiledheader
//stdafx.objwillcontainthepre-compiledtypeinformation
#include"stdafx.h"
//TODO:
referenceanyadditionalheadersyouneedinSTDAFX.H
//andnotinthisfile
//new.cpp:
Definestheentrypointfortheconsoleapplication.
//
#include"stdafx.h"
#include"iostream.h"
#include"stdio.h"
#include"conctrl.h"
intmain(intargc,char*argv[])
{
progprog;
prog.run();
return0;
}
#include"stdafx.h"///////////////////////cal.cpp
#include"iostream.h"
#include"cal.h"
cal:
:
cal()
{
w=0;
n=0;
s=0;
o=0;
}
voidcal:
:
r(charc)
{
while((c=getchar())!
='\n')
{
if((c<='z'&&c>='a')||(c<='Z'&&c>='A'))
w++;
elseif(c<='9'&&c>='0')
n++;
elseif(c=='')
s++;
else
o++;
}
}
voidcal:
:
disp()
{
cout<<"theNO.ofwordsis"<cout<<"theNO.ofnumbersis"<cout<<"theNO.ofspaceis"<
cout<<"theNO.ofotheris"<}
voidcal:
:
clr()
{
w=0;
n=0;
s=0;
o=0;
}
以上为源代码。
4程序测试
测试环境:
如图4-1:
图4-1
测试结果如下图:
参考文献
[1]求是科技,VisualC++数据库通用模块及典型系统开发案例导航,人民邮电出版社,2006年3月.
[2]谭浩强.C++程序设计.北京:
清华大学出版社,2004
[3]张岳新.VisualC++程序设计基础.苏州:
苏州大学出版社,2000
[4]谭浩强.C++程序设计实践指导.北京:
北京大学出版社,2005