引言
还记得在大学时计算机老师第一次教导我们如何使用计算机进行编程吗?很幸运,第一个接触的语言就是C编程语言,课本采用的是谭浩强老师的《C语言程序设计》,就是这本书将我带到了这个编程世界,虽然那时候听老师讲课迷迷糊糊,很多事情也弄不清楚,有很多问题在脑海里打转,一个学期下来之后,自己的编程水平到什么程度呢?可以用纸和笔写简单的程序,比如说冒泡排序、数组输出等,至于代码能不能运行,鬼才知道!我直到大二才和同宿舍的老四和买了一台二手电脑,才开始真正的编写代码。那时候都写了什么程序呢?好像全是课本的练习题和计算机二级考试试题,没有太深刻的印象了。今天为了怀念那段编程时光,特别整理了这套Turbo C教程,包含C源代码还有视频教程,一步一步的讲解如何使用Turbo C进行C语言编程。需要特别强调的是:我不是推荐大家去用Turbo C进行C语言编程,现在我们有更好的C编译器,只是为了怀念这个经典的开发工具,怀念那段C语言编程岁月。
程序功能
这个程序是捷训网提供的一个小小网站管理程序,为一个命令行程序。这个程序在捷训网视频教程中也多次用到,其基本的功能是对网站的信息做简单的管理。为了简单起见,我们将网站的信息进行简单化,其信息内容只包含如下五项:网站的域名,网站的名称、网站联系人的电子邮件地址、网站点击量和网站的年龄。每一个网站都会包含这些内容,我们的这个程序就是对多个网站信息进行管理,管理功能包括四大项:添加一个网站、删除一个网站、编辑一个网站和查找一个网站。这些内容虽然简单,但它体现了很多编程方法,我们会在后文中详细介绍。
模块介绍
网站信息数据与操作
网站的基本信息包含有五项内容,其含义如下表所示
项目 | 含义 |
网站域名 | 唯一标识这个网站的域名地址,如http://www.jiesoon.com |
网站名称 | 对这个网站的命名,如捷训网(或jiesoon) |
网站联系人邮件 | 这个网站联系人的电子邮件地址,如jiesoon@126.com |
网站点击量 | 网站的点击量,如3000 |
网站年龄 | 网站的建站时间,如3年 |
表1
通过C语言定义的结构表示是这个样子的:
#define LEN 25
typedef struct WebSite
{
charm_pszWebSite[LEN];
intm_nAge;
intm_nClick;
charm_pszName[LEN];
charm_pszEmail[LEN];
}WebSite;
这些数据就构成了一个网站的基本内容,我们称之为一个网站结构,这个管理程序就是对多个网站信息进行相应的管理,为了方便操作这些网站信息,我们对网站结构定义了一些基本操作,这些操作分为三个大类:(1)设置一个网站结构的数值;(2)获取一个网站结构的数值;(3)输出这个网站的所有信息。这些网站的操作就是通过函数来实现的,定义的所有函数见表2.
函数名称 | 函数功能说明 |
SetWebSite | 设置网站的域名 |
SetAge | 设置网站的年龄 |
SetEmail | 设置网站的电子邮件 |
SetClick | 设置网站的点击量 |
SetName | 设置网站的名字 |
GetWebSite | 获取网站的域名 |
GetAge | 获取网站的年龄 |
GetClick | 获取网站的点击量 |
GetEmail | 获取网站联系人的电子邮件地址 |
GetName | 获取网站的名字 |
Ouput | 输出所有网站的信息 |
表2
通过这些函数作用在一个网站结构上(或者称之为通过这些函数来操作网站数据),我们就可以实现对一个网站结构的数据操作。
这些函数的C语言声明如下所示:
ErrCode SetWebSite(WebSite* pWebSite, constchar* pszWebSite);
ErrCode SetAge(WebSite* pWebSite, intnAge);
ErrCode SetClick(WebSite* pWebSite, intnClick);
ErrCode SetEmail(WebSite* pWebSite, constchar* pszEmail);
ErrCode SetName(WebSite* pWebSite, constchar* pszName);
ErrCode GetWebSite(WebSite* pWebSite, char*pszWebSite);
ErrCode GetAge(WebSite* pWebSite, int*pnAge);
ErrCode GetClick(WebSite* pWebSite, int*pnClick);
ErrCode GetEmail(WebSite* pWebSite, char*pszEmail);
ErrCode GetName(WebSite* pWebSite, char*pszEmail);
ErrCode Output(WebSite* pWebSite);
网站管理
网站管理是指将多个网站数据进行管理,这些管理操作主要包含四大功能,详细介绍见表3
函数名称 | 函数功能介绍 |
AddWebSite | 添加一个网站信息 |
DeleteWebSite | 删除一个网站信息 |
FindWebSite | 查找网站信息 |
EditWebSite | 编辑一个网站信息 |
表3
如果要执行这些数据操作,首先需要解决的一个问题是:如何将多个网站信息存储。我们这个管理程序对这些数据的存储是在内存中实现的,也就是说,每一次数据的添加都仅仅保存在当前的运行程序内存中,如果这个程序退出,那么所有的网站信息数据将会丢失。而数据的存储是通过一个自己实现的动态数组来实现的,它与普通静态数组最大的不同是:可以根据添加的数据多少进行动态的申请内存,以便保存新增的网站信息。
C语言定义的动态数组代码如下:
typedef struct WebSiteArray
{
WebSite*m_pWebSite;
unsignedint m_nSize;
unsignedint m_nCapacity;
}WebSiteArray;
它的管理函数声明如下:
ErrCode AddWebSite(WebSiteArray* pArray,WebSite* pWebSite);
ErrCode DeleteWebSite(WebSiteArray* pArray,WebSite* pWebSite);
ErrCode FindWebSite(WebSiteArray* pArray,WebSite* pWebSite, WebSite** pResult);
ErrCode EditWebSite(WebSiteArray* pArray,WebSite* pWebSite, WebSite* pValue);
每一个管理函数都包含有一个WebSiteArray指针,通过这个指针就可以访问当前这个程序中的每一个WebSite信息,通过这个指针获取当前这个程序在不执行重新分配内存的情况下可以容纳WebSite结构的最大个数,通过这个只能也可以获取当前这个程序中已经包含有几个WebSite结构。
用户交互界面
这次我们使用Turbo C开发的为一个命令行程序,不含有图形化元素(比如:按钮、编辑框、单选框等在Windows平台上的基本窗口组建),程序在执行后就停留在输入状态,等待用户给以执行命令(add,delete或是find等),程序会根据用户输入的内容执行相应的操作,这些操作依据命令的不同可能会差别很大。比如说:如果要执行一条添加命令,那么,用户需要提供网站的五项基本信息,之后会将用户输入的信息转换为一个WebSite结构数据,并添加至管理程序的动态数组中;但是如果执行的是一条删除命令,那么,用户只需要输入一个网站域名就可以了。
对于网站管理操作,我们也对其进行了简化处理,比如查找操作,目前只提供了一种查找方式,也就是根据域名进行查找。删除操作也是只提供了根据域名进行删除WebSite的功能。用户可以根据自己的需求修改查询的方式,或者执行多个条件的查找方式。
生成并运行程序
这个网站管理程序包含有多个文件,函数的声明和常量定义我们放到了头文件中(或称之为.h文件中),函数功能实现和一些全局变量我们放到源文件(或称之为.c)文件中。在使用Turbo C编程时一个需要特别注意的是,由于当时Turbo C最初运行在DOS平台下,这个平台对文件的名有一个8.3命名限制,也就是说如果文件名长度超过8个字符就会发生截断操作,所以,在进行文件命名时尽可能使用较短的文件名称(不要超过8个字符);另外一点也需要注意,Turbo C对文件的命名会全部改为大写方式,这个操作在Windows平台上不会出现问题,但如果需要将其移植到Unix/Linux等平台,在编译程序时就会出现找不到头文件的错误,因为在这类平台上对文件的命名是大小写敏感的。
如何生成可执行程序呢?首先保证TurboC开发环境是可以正常工作的,之后需将当前的工作目录,也就是通过菜单File|Change Dir设置为源代码所在的目录,将Project名称设置为WEBSITE.PRJ,执行Ctrl+F9就可以运行程序了。
下面是这个工程中所有的文件列表,并对其进行了简要说明
文件名称 | 功能介绍 |
WEBSITE.PRJ | 这个管理程序的工程文件,定义了使用哪些C文件作为这个源码 |
WEBSITE.H | 定义错误码常量、WebSite结构等 |
WEBSITE.C | 实现对WebSite结构操作的函数 |
PROCESS.H | 定于动态数组及其一些命令枚举量 |
PROCESS.C | 定义管理WebSite结构的函数和用户交互功能函数 |
MAIN.C | 程序的入口点 |
表4
程序运行的结果为一个等待用户输入的黑屏幕,用户可以输出help命令来查看这个系统所支持的操作命令,按照屏幕提示输入相应内容。
总结
这个程序演示了使用Turbo C进行开发的基本步骤,对网站信息管理程序做了简单的实现,目的是怀念那个经典的C开发环境Turbo C,通过这个工具编写的程序依旧可以很快的移植到现有的开发环境中,比如CodeBlocks、CodeLite和Visual C++ 2010等开发环境,再经典的工具也可能成为历史,让我们记住他的辉煌,开始一个新的起点。