一个好使不贵的模板
最近对数据结构程序不断进行调试,却苦于知识点过于琐碎,没有一把合适的神器辅助一下,那么神器来了,利用下边模板你可以把每个知识点都放进“具体子类”中去,当你把每章知识都概括进去时,恭喜你,期末考试百分在望。
一、这里我先奉上我这个模板的结构图(不要用HTML的眼光来审视,我随便画的,日后再学建模语言)
简单来说,就是主函数调用三个头文件,对于使用者来说最重要的一个头文件是ConcreteClass.h, 因为只需把零散程序放在这里就可以了,至于工作原理,嗯……,不提也罢,我们直接来看程序。
二、各个部分源代码(C++)
- TemplateMethodPattem.c(客户类)
#include"AbstractClass.h"
int main()
{
startUsing(); //初始界面
chooseList(); //服务指南
serviceChoose(choose); //服务入口
offUsing(); //结束界面
return 0;
}
- AbstractClass.h(抽象类-各类函数的接口)
#pragma once
#include"TemplateMethod.h"
#include"ConcreteClass.h"
int choose = -1;
void startUsing(void) //系统初始界面
{
cout << "——您好,欢迎来到" << BI << "服务平台!" << endl<< endl;
}
void offUsing(void) //系统结束界面
{
cout << "——感谢您对" << BI << "服务平台的使用,再见!" << endl;
}
void chooseList(void) //信息服务列表
{
cout << "——本次提供以下几项服务,请选择:" << endl;
cout << "1. XXXXXX" << endl;
cout << "2. XXXXXX" << endl;
cout << "3. XXXXXX" << endl;
cout << "4. XXXXXX" << endl;
cout << "5. XXXXXX" << endl;
cout << "0. 退出" << endl << endl;
}
void serviceChoose(int choose)
{
while (choose != 0)
{
chooseLegality(choose);
switch (choose) {
case 1:
cout << "请继续您的选择:" << endl;
break;
case 2:
cout << "请继续您的选择:" << endl;
break;
case 3:
cout << "请继续您的选择:" << endl;
break;
case 4:
cout << "请继续您的选择:" << endl;
break;
case 5:
cout << "请继续您的选择:" << endl;
break;
default:break;
}
}
cout << endl<< endl;
}
- TemplateMethod.h(模板方法)
#pragma once
#include"BasicHeadfile.h"
void chooseLegality(int& choose) //choose值合法性判断
{
do { //对choose的值进行判断
cin >> choose;
if (choose < 0 || choose>5)
cout << "您输入的数据不再本次服务之内,请重新输入:" << endl;
} while (choose < 0 || choose>5);
}
void systemPrompt(int choose)
{
switch (choose) {
case 1:cout << "请依次输入姓名和学号,中间以Tab键分隔" << endl; break;
case 2:cout << "XXXXXXXX" << endl; break;
case 3:cout << "XXXXXXXX" << endl; break;
case 4:cout << "XXXXXXXX" << endl; break;
case 5:cout << "XXXXXXXX" << endl; break;
case 6:cout << "XXXXXXXX" << endl; break;
case 7:cout << "XXXXXXXX" << endl; break;
case 8:cout << "XXXXXXXX" << endl; break;
case 9:cout << "XXXXXXXX" << endl; break;
default:break;
}
}
- ConcreteClass.h(具体子类)
#pragma once
#include"BasicHeadfile.h"
typedef struct TElemType //定义一个结构体
{
char name[30]="名字";
char number[30]="学号";
}TElemType;
- BasicHeadfile.h(基础文件)
#pragma once
#include<iostream>
using namespace std;
#define OK 1
#define ERROE 0
#ifndef OVERFLOR
#define OVERFLOW -2
#endif // !OVERFLOR
typedef int Status;
#define BI "“XXX”"
三、初始情况下模板运行情况
四、注意事项
本模板奉行一切都是模块化,请不要随意修改模块的分布,以免影响后续超大工程的构建。
好了,搞起来~