1、实用程序工具包C+面向对象程序设计课程设计报告设计题目: 实用程序工具包 学生姓名: 专业班级: 指导教师: 一、实践要求一些语句在逻辑上不相关,但却经常使用,将它们收集起来形成实用程序工具包 untility . h ,今后所有程序都可用它,只要在包含有如下预处理命令: # include “untility . h” /实用程序工具包头文件二、课题分析1 系统依赖性在实用程序工具包中包含有常用的标准库系统,这些库文件的名字因为使用 ANSI 版还是老版本的 C + 而有所不同,将这些依赖系统的特征收集在实用程序工具包中,使程序的部分不依赖于系统中 C + 的精确版本,这样可改进程序的可移植
2、性,可以在不同版本的编译器中轻易地编译它们。 2 实用函数 ( 1 ) GetChar( ) 函数。经常会遇到要用户输人需跳过的空格及制表符,比如在输人用字符表示的某种选择时,并不需要空格及制表符,试实现 GetChar( ) 函数。 ( 2 ) UserSaysYes( )函数。在很多程序中都可加入实用 UserSaysYes( )函数,而在标准库中并没有此函数,为此在 untility . h 中加入此函数的定义。 3 实用函数模板在用 C + 编程时经常用到一些函数模板,使用这些函数模板将使编程更简单,这些函数模板包括交换两个数据元素的函数模板 Swap 与显示数组中各元素的值的函数模板
3、 Show 。 4 实用类 (1)计时器类 Timer 。在比较同一个问题的不同程序实现时,了解一个程序与另一个程序运行的计算机时间是非常有用的,为此目的,开发了一个实用的计时器类 Timer 。(2)通用异常类 Error 。异常处理是提高程序健壮性的重要手段。在编写程序时,应该考虑到程序可能会出现的异常,在程序中加人异常处理的相关代码。为处理异常,专门建立一个通用异常类 Error ,使用户程序处理异常变得更加简单。 (3)随机数类 Rand 。在编写测试程序时,使用随机数生成测试数据更具有代表性,为了更好地应用,将有关随机数的函数封装成类 Rand 。三、软件流程图从键盘输入判断是否为空
4、格或者制表符?返回输入的字符是是否从键盘输入一个字符判断是否为?n?返回false判断是否为n?返回true否 是四、源代码#ifndef _UTILITY_H_#define _UTILITY_H_ #ifdef _MSC_VER #if _MSC_VER=1200#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#include #include #endif#else#include#include#include#incl
5、ude#include#include#include#include#include#include#include#endif/*char GetChar(istream /ar GetChar(istream bool UserSaysYes();template void Swap(ElemType templatevoid Display(ElemType elem,int n);class Timer;class Error;class Rand;*/char GetChar(char in=getche()/ char ch;while (in= |in=/t)in=getche
6、();fflush(stdin);return in;bool UserSaysYes()char ch;bool initialResponse=true;while (1)if(initialResponse) coutvoid Swap(ElemType temp=e1;e1=e2;e2=temp;templatevoid Show(ElemType elem,int n,int iFlag)for(int i=0;in;i+)coutelemi;if(iFlag)coutt;coutendl;/计时器类 Timerclass Timerprivate:clock_t startTime
7、;clock_t endTime;public:Timer()startTime=clock();double ElapsedTime() constreturn (double)(endTime-startTime)/(double)CLK_TCK;void Reset()startTime=clock();double get_startTime()return (double) startTime/(double)CLK_TCK;double get_endTime()return (double)(endTime=clock()/(double)CLK_TCK;#define MAX_ERROR_MESSAGE_LEN 100class Errorprivate:char message MAX_ERROR_MESSAGE_LEN;public:Error(char mes=“一般性异常!“)strcpy(message,mes);void Show() const coutmessageendl;/随机数类 Randclass Randpublic:static void SetRandSeed() srand(unsigned)time(NULL);/设置当前