`
香煎马鲛鱼
  • 浏览: 109599 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

Win32控制台程序界面类

    博客分类:
  • C++
C++ 
阅读更多

Win32控制台程序界面类

我相信不少同学也和我一样,在刚学习c++的时候都会尝试做简单的图书管理系统,学生成绩管理系统等,做这些实验项目可以加深你对文件操作,vectorlist等容器的熟悉度,还可以让你学会设计系统结构。

随着学习的逐渐深入,同学们也许会发现,很多时候我们只要调用标准库函数里的类,代码量就会少很多,如果我们在平时的练习里有意识地去封装一些也许会比较常用的类,那么是不是我们平时编程的效率也会快好多呢。

答案是肯定的,特别对于XXXX系统之类的程序来说,可供应的地方就更多了,要重复使用这些我们自己封装好的类,只要将我们做好的类的.h.cpp文件与我们做好想做的程序的代码放在同一个文件夹里就好。

下面我就将我在做好的界面类与大家分享,由于时间仓促,所做的类的调用方法也比较少,

接下来的时间里,我会继续扩充该类的方法,以便适应未来工作学习的需要,同时也方便大家

头文件:windesign.h//划线类(专供windowDesigner.h使用)

        wndowDesigner.h//画界面类

其他要包含的cpp文件

questionwin.cpp

windesign.cpp

windowDesigner.cpp

 

 

windesign.h的方法:

         winDesign& leftSide(int,char);//首行缩进

         winDesign& leftSidec(int,char,char);//首行缩进做加左边框

         winDesign& Sidesc(int,char);//边框左

         winDesign& SidescR(int,int,char);//边框右

         winDesign& SidescL(int,int,char);//边框左2

         winDesign& centre(int,int,char,string);//中部内容

         winDesign& centre(int ,char );//中部标题,上下部边框

(绘制一行的内容需要用到其中的几个方法)

 

windowDesigner.h的方法:

      void mainwin(string sentence[],int n,int s);//画主界面//各行内容,选项数,缩进(选项数要大于sentence[]的元素数)

         void questionwin(string sentence[],int n,int s);//对话框//各行内容,选项数,缩进

   void needinput(string sentence[],string input[],int n,int s);//需要输入的界面//

 

 

各文件源代码:

windesign.h文件

#ifndef WINDESIGN_H

#define WINDESIGN_H

#include<string>

using std::string;

#include<iomanip>

using std::setfill;

using std::setw;

class winDesign

{

public:

         winDesign& leftSide(int,char);//首行缩进

         winDesign& leftSidec(int,char,char);//首行缩进做加左边框

         winDesign& Sidesc(int,char);//边框左

         winDesign& SidescR(int,int,char);//边框右

         winDesign& SidescL(int,int,char);//边框左2

         winDesign& centre(int,int,char,string);//中部内容

         winDesign& centre(int ,char );//中部标题,上下部边框

};

#endif

wndowDesigner.h文件

#ifndef WINDOWDESIGNER_H

#define WINDOWDESIGNER_H

#include"windesign.h"

#include<string>

using std::string;

class windowDesigner

{

public:

         windowDesigner(winDesign)

         {

 

         };//实验品(组成)

         void mainwin(string sentence[],int n,int s);//画主界面//各行内容,选项数,缩进

         void questionwin(string sentence[],int n,int s);//对话框//各行内容,选项数,缩进

         void needinput(string sentence[],string input[],int n,int s);//需要输入的界面//

private:

         winDesign Line;

};

#endif

questionwin.cpp

#include<iostream>

using std::cout;

using std::cin;

using std::endl;

#include<iomanip>

using std::setfill;

using std::setw;

#include"windowDesigner.h"

void windowDesigner::questionwin(string sentence[],int n,int s)

{

         int a=1;//边框粗细

         int h1=25;//整体缩进(数值越大越靠右)

         int k1=30;//窗口宽度(数值越大越靠下)

         int i;

         int n1=10;

         for(i=0;i<n1;i++)

         {

                   cout<<endl;

         }

         Line.leftSide(h1,' ').SidescR(a,a,'=').centre(k1,'=').SidescL(a,a,'=');//上边

         cout<<endl;

         Line.leftSide(h1,' ').SidescR(a,a,'=').centre(7,k1,' ',sentence[0]).SidescL(a,a,'=');

         cout<<endl;//标题

         Line.leftSide(h1,' ').SidescR(a,a,'=').centre(k1,' ').SidescL(a,a,'=');

         cout<<endl;

                   for(i=1;i<n;i++)//选项

         {

                   Line.leftSide(h1,' ').SidescR(a,a,'=').centre(s,k1,' ',sentence[i]).SidescL(a,a,'=');

             cout<<endl;

                   Line.leftSide(h1,' ').SidescR(a,a,'=').centre(k1,' ').SidescL(a,a,'=');

                   cout<<endl;

                   }

                   if(i<n-1)

                   {cout<<endl;}//(如果没有这句话,最后一个选项会有写不协调)

    Line.leftSide(h1,' ').SidescR(a,a,'=').centre(k1,'=').SidescL(a,a,'=');//底边

         cout<<endl;

        

}

windesign.cpp

#include<iostream>

using std::cout;

using std::endl;

#include"windesign.h"

 

winDesign &winDesign::leftSide(int n1,char s3)

{

         cout<<setfill(s3)<<setw(n1)<<s3;

         return *this;

}

winDesign& winDesign::leftSidec(int n1,char s3,char s4)

{

         cout<<setfill(s3)<<setw(n1)<<s4;

         return*this;

}//首行缩进做加左边框

winDesign &winDesign::Sidesc(int n2,char a1)

{

         cout<<setfill(a1)<<setw(n2)<<a1;

         return *this;

}

winDesign &winDesign::centre(int n4,int n3,char s2,string str1)

{

         int i;

         i=str1.length();

         cout<<setfill(s2)<<setw(n4)<<s2;

         cout<<str1;

         cout<<setfill(s2)<<setw(n3-n4-i)<<s2;

         return *this;

}

winDesign &winDesign::centre(int n3,char s2)

{

         cout<<setfill(s2)<<setw(n3)<<s2;

         return *this;

}

winDesign &winDesign::SidescR(int n2,int n21,char s1)

{

         cout<<setfill(' ')<<setw(n2-n21)<<' ';

         cout<<setfill(s1)<<setw(n21)<<s1;

         return *this;

         }

         winDesign &winDesign::SidescL(int n2,int n21,char s1)

{

         cout<<setfill(s1)<<setw(n21)<<s1;

         cout<<setfill(' ')<<setw(n2-n21)<<' ';

         return *this;

         }

 

windowDesigner.cpp文件

#include<iostream>

using std::cout;

using std::cin;

using std::endl;

#include<iomanip>

using std::setfill;

using std::setw;

#include"windowDesigner.h"

void windowDesigner::mainwin(string sentence[],int n,int s)

{

         int h1=12;/*缩进*/

         constint n1=2;//头两行列数

         int h2=7,h3=45,h4=4;//头两行

         int y[4]={8,7,39,9};//第三行标题

         int k[3]={7,36,13};//

         constint n2=5,n3=8;

         int m2=8,m3=40,m4=8;//选项行间隔

         int mouth2=8,mouth3=10,mouth4=36,mouth5=12;//(窗口装饰)嘴

         int empty2=4,empty3=45,empty4=7;//空行

         int legL=4;//腿长=legL-1;

         int leg2=25,leg3=6,leg4=25;//腿行

         int a=1;//边框粗细

         int i;

         for(i=0;i<n1;i++)//绘制头顶部边框,行数n1=2

         {

                   Line.leftSide(h1,' ').Sidesc(h2,'=').centre(h3,'=').Sidesc(h4,'=');

                   cout<<endl;

         }

         Line.leftSide(h1,' ').Sidesc(y[0],'=').centre(y[1],y[2],'=',sentence[0]).Sidesc(y[3],'=');

         cout<<endl;//标题

         Line.leftSide(h1,' ').SidescL(8,n2-i+4,'=').centre(40,' ').SidescR(8,n2-i+4,'=');

         cout<<endl;//空白行

         for(i=1;i<n;i++)//选项

         {

                   Line.leftSide(h1,' ').SidescL(k[0],a,'=').centre(s,k[1],' ',sentence[i]).SidescR(k[2],a,'=');

             cout<<endl;

                   Line.leftSide(h1,' ').SidescL(5,a,'=').centre(45,' ').SidescR(6,a,'=');

                   cout<<endl;

         }

                   if(i<n-1)

                   {cout<<endl;}//(如果没有这句话,最后一个选项会有写不协调)

                   for(i=0;i<n1;i++)

         {

                            Line.leftSide(h1,' ').SidescL(empty2,a,'=').centre(empty3,' ').SidescR(empty4,a,'=');

                   cout<<endl;

         }

         Line.leftSide(h1,' ').SidescL(mouth2,a,'=').centre(mouth3,mouth4,' ',"*********************").SidescR(mouth5,a,'=');

         cout<<endl;

         Line.leftSide(h1,' ').SidescL(mouth2,a,'=').centre(mouth3,mouth4,' ',"*                   *").SidescR(mouth5,a,'=');

         cout<<endl;

         Line.leftSide(h1,' ').SidescL(mouth2,a,'=').centre(mouth3,mouth4,' ',"*                   *").SidescR(mouth5,a,'=');

         cout<<endl;

                   for(i=0;i<n1;i++)

         {

                   Line.leftSide(h1,' ').Sidesc(h2,'=').centre(h3,'=').Sidesc(h4,'=');

                   cout<<endl;

         }

                   for(i=1;i<legL;i++)

                   {

         Line.leftSide(h1,' ').SidescL(leg2,leg2-2*i,'=').centre(leg3,' ').SidescR(leg4,leg4-2*i,'=');

                    cout<<endl;

                   }

         cout<<endl;

 

}

 

 效果:

 

 

 

 

 

1
2
分享到:
评论

相关推荐

    简单win32控制台程序

    在"简单Win32控制台程序"中,我们主要关注两个方面:一是控制台界面的创建和管理,二是实现纸牌游戏的基本功能。MFC中的`CWinApp`类是整个应用程序的入口点,通常继承自`CWinApp`并重写其成员函数,比如`...

    win32控制台应用程序

    在IT领域,Win32控制台应用程序是一种基于微软Windows操作系统平台的程序,它直接与Win32 API(应用程序接口)交互,提供一个简单的文本界面,通常用于教学、实验或者小型实用工具的开发。在这个场景中,我们看到的...

    C++ 基于控制台的Win32程序

    2. **控制台程序与Win32程序的区别** - 控制台程序:通常由标准输入、输出和错误流进行交互,如键盘输入和屏幕输出。它们依赖于操作系统的命令行环境。 - Win32程序:可以是控制台程序或GUI程序,后者使用窗口、...

    C++ win32 控制台 2048 游戏

    这个游戏的核心算法和界面实现都是编程领域中的有趣实践,特别是使用C++和Win32 API在控制台环境下。 一、C++基础 C++是一种面向对象的编程语言,以其高效、灵活和强大的特性而闻名。在这个2048游戏项目中,我们将...

    c# WIN32控制台应用程序 个人助手

    综上所述,这个C# WIN32控制台应用程序个人助手项目涉及到了C#编程语言的使用,以及对Win32 API的调用来实现控制台功能,提供了一种无界面的命令行方式来执行各种辅助任务。开发者可以通过源代码学习到如何在C#中...

    圈叉棋win32控制台小游戏

    Win32控制台应用程序是基于Windows操作系统API编写的应用,不包含图形用户界面(GUI),而是通过控制台窗口进行交互。在这个项目中,用户将通过键盘输入来在棋盘上放置"X"或"O",这需要对Win32 API中的`GetStdHandle...

    MFC调用WIN32控制台程序调用printf功能

    ### MFC调用WIN32控制台程序调用printf功能 #### 背景与目的 在Microsoft Visual Studio 2010环境下开发基于MFC(Microsoft Foundation Classes)的应用程序时,开发人员经常需要对代码进行调试。传统的调试方式...

    x-modem上位机 ,win32控制台程序

    《X-Modem上位机与Win32控制台程序详解》 在计算机通信领域,X-Modem协议是一种常见的数据传输协议,尤其在低速串行通信中被广泛使用。X-Modem协议最初是为了解决早期调制解调器间的文件传输问题而设计的,它通过...

    win32控制台

    在VC++(Visual C++)环境下开发Win32控制台程序,开发者可以利用C或C++语言,结合Windows SDK(Software Development Kit)中的头文件和库来创建功能丰富的控制台应用。 开发Win32控制台程序的关键在于理解Windows...

    win32控制台与arduino通信

    首先,**Win32控制台程序**是基于Windows操作系统平台的程序,使用API函数来创建、管理并显示窗口,处理用户输入。这些API函数如CreateWindow、WriteConsole等,使得开发者能够构建一个简单的图形用户界面,而无需...

    编写Win32控制台程序 注入带窗口的DLL.rar_dll注入_mfc.dll_带窗口的dll_注入_窗口 DLL

    1. **Win32控制台程序**:Windows API是开发Win32控制台程序的基础,它提供了大量的函数接口,用于创建、管理和交互控制台进程。控制台程序通常由C或C++编写,并通过WinAPI调用来实现用户界面和系统交互。 2. **DLL...

    自己编写的C++基于socket编程的UDP聊天程序(win32控制台程序)

    在描述中提到,“简单的win32控制台程序”表明这是一个没有图形用户界面(GUI)的应用,仅通过命令行交互。重点在于学习和理解如何使用socket编程,以及如何建立和维护UDP连接。Socket编程是网络编程的基础,它允许...

    C++ win32控制台 2048游戏

    在控制台环境下,我们不构建完整的GUI,而是通过控制台输出来模拟游戏界面,这就需要利用Win32 API中的Console API,如WriteConsoleOutput函数来绘制和更新游戏板面。 游戏的核心算法主要涉及以下几个方面: 1. **...

    WIN32控制台俄罗斯方块工程文件

    本文将深入探讨一个基于WIN32控制台的“俄罗斯方块”游戏工程,它是一个在Visual Studio 2015环境下编写的程序,可以直接运行,为我们提供了了解WIN32 API和游戏开发的良好机会。 首先,我们来理解什么是WIN32...

    win32应用台程序简单计算器

    在Windows操作系统中,Win32应用程序是基于微软的Windows API(应用程序接口)开发的桌面程序。这类程序可以访问操作系统的核心功能,包括用户界面、硬件资源管理等。"win32应用台程序简单计算器"是一个使用Win32 ...

    conrec的C++版实现等高线生成(win32控制台程序)

    4. **控制台绘图**:在win32控制台环境中,没有图形用户界面,因此等高线需要通过字符来模拟显示。可以使用不同的字符代表不同高度级别的等高线,或者通过颜色编码(如果控制台支持)来增强视觉效果。 5. **解决...

    数独(win32控制台)

    2. **控制台编程**: 控制台程序通常与命令行界面相关,开发者通过标准输入、输出进行交互。在这个数独游戏中,用户可能通过键盘输入数字,并在控制台上看到游戏状态和提示。 3. **算法实现**: 为了生成数独题目,...

    Delphi编写三个无 Win Forms的控制台程序..rar

    标题"Delphi编写三个无 Win Forms的控制台程序"暗示了我们将探讨如何在没有图形界面的情况下使用Delphi编写命令行程序。这可能包括简单的文本输入/输出处理、系统调用以及更复杂的逻辑处理。以下是这些控制台程序...

Global site tag (gtag.js) - Google Analytics