资源描述
沈阳航空工业学院毕业设计论文
协同写作系统的研究与实现
28
摘 要
本文主要介绍了协同写作系统的需求分析、总体设计思想以及具体实现的过程。其中,详细论述了系统数据库设计、网络编程原理及各功能模块的设计。该系统提供了来自不同地域、不同责任的操作者共同完成一篇文稿的创作、修改等操作的写作平台,并且提供了文稿的编辑环境。为了方便操作者之间的相互沟通,系统还提供了在线用户的交流环境。整个系统的设计过程中,充分考虑了安全性、稳定性等问题,并且界面友好、美观大方、操作简单方便。使用本系统,能大大减少人力资源、时间及资金方面的浪费,提高运作效率。
关键词:共享资源 协同写作 编辑环境
Abstract
This paper mainly introduces the analysis of requirement, general design and detail implementation of Cooperative Edition System. And it discusses the database design, the network programming principle and the design of each function model particularly. The system provides a platform for all operators who come from different area and take different responsibilities to compose and revise the same article and provides the edit environment for users. To convenient the communication of operators, the system also provide an online intercommunicate environment. We considered the security, stability, friendliness and convenience of the system fully in the developing process. The system can reduce labor resource, time and costs, and also can promote efficiency.
Key words: Sharing resource Cooperative edition Edit environment
目 录
第1章 概 述 1
1.1 背景介绍 1
1.2 课题要求 2
1.3 课题意义 2
1.4 开发工具 3
1.4.1 Visual C++简介 3
1.4.2 SQL Server 2000简介 3
第2章 总体设计 5
2.1 设计目标 5
2.2 系统构架 6
2.3 系统构架图 6
2.4 数据库设计 7
2.4.1 用户信息表(UserTable) 7
2.4.2 作品信息表(WorksTable) 8
2.4.3 权限类型表(PurviewTable) 8
2.4.4 学科类型表(SubjectTable) 9
2.5 网络设计原理 10
2.5.1 客户端/服务器模型 10
2.5.2 流套接字编程模型 10
第3章 系统实现 12
3.1 服务器端详细设计 12
3.1.1 服务器端总的结构模块流程 12
3.1.2 添加新用户模块 13
3.1.3 删除用户模块 14
3.1.4 创建作品模块 15
3.1.5 注销作品模块 16
3.1.6 在线通信模块 16
3.2 客户端详细设计 16
3.2.1 客户端总的结构模块流程 16
3.2.2 用户登录模块 17
3.2.3 文章编辑模块 20
3.2.4 查阅作品信息模块 20
3.2.5 操作模块 21
3.2.6 在线通信模块 22
第4章 调试与修改 24
第5章 经济技术分析 25
结 论 26
致 谢 27
参考文献 28
第1章 概 述
1.1 背景介绍
随着社会的发展和科学技术的进步,各种工作变得越来越复杂。以前完成一项工作可能只要一个人或几个人就能胜任了,现在与以前大不相同了,几乎每项工作的完成都是许多人智慧的共同结晶,因此协同工作在当今社会变得日益重要。为此,在通信和计算机技术的日益成熟的当今信息社会中,计算机支持的协同工作CSCW(Computer Supported Cooperative Work)也就应运而生了。
CSCW可以定义为这样的计算机系统:它支持一组用户参与一个任务,并提供给他们访问共享环境的接口。即一个任务、多个用户,多用户为完成一项共同的任务而组成用户群,CSCW为这个用户群提供协同支持。CSCW系统从本质上讲是通过计算机技术使处于不同地理位置的人们能够一起工作,并且感觉不到地理位置上的差异。所以CSCW系统首先应该是一种分布式的系统,它能提供信息的交互式服务。它要求信息在各个成员之间的传递是对等的,因此是一种对称的交互方式。共同任务和共享环境是CSCW系统区别于其他多用户系统的关键。CSCW系统可以分为异步协作和同步协作。如何提高协同工作的效率是CSCW研究的内容。计算机协同工作技术将带来人们协作方式的变革,提高人们协同工作的整体效率。
协同写作就是不同写作地域、不同责任的作者共同创作或者修改同一篇文稿的过程,支持协同写作的应用系统——协同写作系统是CSCW的众多应用领域中最受欢迎的应用系统之一。协同写作系统即在网络环境下,构建一个协同写作的平台,该平台提供了由多用户接口组成的共享环境,使得分布在不同地点的多个用户可以在该平台支持下共同完成一篇文稿的写作和编辑等工作。
1.2 课题要求
协同写作系统的研究与实现。
协同写作系统是指在网络环境下,构建一个协同写作的平台,使得多人可以在该平台支持下共同完成一篇文稿的写作。该系统要求具有对操作者根据不同的操作权限分组,用户可对一篇文章进行修改与写作等功能。系统必须提供文章的编辑环境。
本项目主要有以下要求:
1. 系统管理员要对整个系统进行调配;
2. 对操作者进行身份验证,并根据不同的级别对其进行分组,不同级别的操作者对文章享有不同的操作权限;
3. 系统要提供对文章的查阅、编辑、写作等操作;
4. 系统要提供文章的编辑环境;
5. 系统要提供在线用户的交流环境;
1.3 课题意义
本系统的应用领域非常广泛,可供报社、杂志社、电台、电视台等新闻媒体单位使用。在信息技术飞速发展的今天,人们对消息报导的及时性、准确性提出了更高的要求,单靠工作人员来完成文章的采编工作已经不能适应时代的发展,使用本系统不仅可以提高工作效率,还能降低采编工作的成本。
本系统也可以供出版社等一些涉及文章编辑工作的单位使用,同样会给他们带来无形的经济效益。
1.4 开发工具
本项目在设计中采用Visual C++ 6.0作为前台开发工具,力图最大限度地减少操作人员的冗余操作,轻轻松松地掌握整个系统的使用过程;采用SQL Server 2000作为后台数据库,以提供系统中使用的数据。
1.4.1 Visual C++简介
Visual C++ 一直是Microsoft 公司综合性最高,最复杂的软件开发工具。它一直提供了很高的编程能力和方便性,它的多种多样的工具能适合各种编程风格。Visual C++有着十分强大的底层编程功能,它作为一种编程语言完全继承了C++语言的面向对象的特性。同时它作为一种编程工具,又以其图形化的编程方式将C++支持面向对象技术的特性完美地体现出来。Visual C++不仅仅是C++语言的集成开发环境,而且与Win32紧密相连,所以,利用Visual C++ 开发系统可以完成各种各样的应用程序开发,从底层软件直到上层直接面向用户的软件都可以用Visual C++来完成开发;而且Visual C++ 强大的调试功能也为大型复杂软件的开发提供了有效的排错手段。随着软件版本的不断升级,其功能也越来越强大,几乎包括了Windows应用的各个方面,所以Visual C++ 成了Windows系统平台上最强大的应用程序开发系统。
1.4.2 SQL Server 2000简介
Microsoft SQL Server的出现仅仅八年左右,但是它已经成为DBMS市场中极具魅力和实力的DBMS,已经可以与任何一个老牌的DBMS相抗衡。关键不仅在于它体现了一种实用而极为有效的计算概念—Client/Server(客户/服务器)计算方式,还在于它所基于的操作系统功能日益强大,另外其赖以为基础的Transact_SQL语言在SQL基本语言上也得到扩展从而使得SQL语言支持的RDB(关系数据库)愈加受到青睐。Microsoft SQL Server的高速、高度安全和稳定性以及它不仅在昂贵的硬件上功能强劲而且在低廉的硬件上运行也同样自如而且威力不见弱,还有高性能价格比,使它成为今天数据库开发的首选工具。
第2章 总体设计
2.1 设计目标
就协同写作系统而言,最主要的是实现对作品信息的共享和操作权限的区分以及文章编辑环境的实现。本项目的重点是对作品信息的操作实现:既要让用户尽可能的利用共享的作品信息,又不能让用户随意更改系统的共享的作品信息。
针对本项目的具体要求,并考虑到实际的情况,可以对系统的设计目标作如下归纳:
1.用户级别分为主编、编辑、作者和读者四类;
2.读者可以对所有作品进行查阅,并可以对其发表评论;
3.作者除具有读者的权限外,还可以对所属学科的作品进行写作;
4.编辑除具有作者的权限外,还可以创建所属学科的新作品,并对作者提交的写作内容进行审阅;
5.主编除具有编辑的权限外,还可以对作品进行最后审阅,并设置完成标志;
6.对于未提交的作品,用户可以随意更改;
7.用户可以添加所属学科的比自身级别低的用户;
8.管理员可对系统所有用户信息、作品信息进行添加、修改、删除等操作;
9.系统提供在线用户相互沟通的环境;
2.2 系统构架
本系统由服务器端和客户端两部分组成。客户端程序主要完成用户登录、添加新用户、创建新作品以及对作品的各项操作等功能,并提供文章的编辑环境和显示当前系统的状态。服务器端程序主要是提供用户资料和作品资料的增加、删除、查询、修改等操作。
本系统从结构上分为四大模块:
1.编辑模块:该模块主要完成文章正文的写作、修改以及评论的写作等工作,在具体执行这些功能之前,必须判断当前用户是否有权进行此项操作;
2.设置操作者权限模块:该模块实现根据用户的学科、级别等信息对其设置操作权限;
3.操作模块:该模块主要实现用户对文章的各项操作并存储到数据库中等工作;
4.通信模块:该模块提供在线用户及管理员之间相互沟通的环境;
2.3 系统构架图
协同写作系统
编辑模块
设置操作者权限模块
操作模块
通信模块
2.4 数据库设计
2.4.1 用户信息表(UserTable)
属性
属性名
属性类型
长度
备注
UserID
用户编号
整型(int)
4
唯一标识用户
UserName
用户姓名
字符型(char)
50
可以为空
Subject
所属学科
字符型(char)
20
Purview
用户级别
字符型(char)
20
Password
用户密码
字符型(char)
4
Regdate
注册日期
日期型
8
说明:
1.UserID(用户编号)为主属性;
2.该表存储用户全部信息;
3.对本表纪录的操作有添加、修改、删除三个;
4.只有系统管理员对本表拥有全部操作权限;
5.用户可以添加比自己的级别低的新用户;
2.4.2 作品信息表(WorksTable)
属性
属性名
属性类型
长度
备注
WorksID
作品编号
字符型(char)
4
唯一标识作品
WorksName
作品名称
整型(int)
50
可为空
Subject
所属学科
字符型(char)
20
EditFlag
编辑标志
字符型(char)
20
标识作品当前状态
Author
作者姓名
字符型(char)
50
Editor
编辑姓名
字符型(char)
50
Regdate
注册日期
日期型
8
Review
评论
文本型(text)
16
Contents
正文
文本型(text)
16
说明:
1.WorksID (作品编号)为主属性;
2.该表储存系统中所有作品信息;
3.对本表的操作有添加、修改、删除;
4.只有系统管理员对本表拥有全部操作权限;
5.对本表的操作前需要判断当前用户的权限是否可以进行操作;
2.4.3 权限类型表(PurviewTable)
属性
属性名
属性类型
长度
备注
PurID
级别编号
整型(int)
4
PurName
级别名称
字符型(char)
20
说明:
1.PurID(级别编号)为主属性;
2.本表存储系统中全部级别类型;
3.每个用户都具有工作权限,级别高者享有优先权,此表定义为数值大者级别高;
4.主编为1级,编辑为2级,作者为3级,读者为4级;
2.4.4 学科类型表(SubjectTable)
属性
属性名
属性类型
长度
备注
SubID
学科编号
整型(int)
4
SubName
学科名称
字符型(char)
20
说明:
1. SubID(学科编号)为主属性;
2. 本表存储系统中所有学科类型;
3. 每个用户都具有相应的学科,每个作品也具有相应的学科;
4. 用户只能对所属学科的作品进行操作;
2.5 网络设计原理
2.5.1 客户端/服务器模型
本系统属于分布式应用系统,因此采用客户端/服务器模型。系统运行时,客户端程序向服务器程序请求服务,这就隐含了在建立客户端/服务器模型间通信时的非对称性,工作时要求有一套为客户端/服务器所共识的惯例——协议。服务程序通常在一个众所周知的地址监听客户对服务的请求,服务进程一直处于休眠状态,直到有客户对这个服务的地址提出了连接请求,服务进程被“惊醒”,并为客户服务——对客户的请求做出适当反应。
2.5.2 流套接字编程模型
流套接字提供双向的、有序的、无重复并无纪录边界的数据流服务,是面向连接的。通信双方建立通信之前必须建立一条路径,这种方式既可以确定它们之间存在路径,又保证双方都是活动的。
流套接字的服务进程和客户进程在通信前必须建立各自的套接字并建立连接,然后才能对相应的套接字进行“读”、“写”操作,实现数据传输。
本项目利用MFC类库封装的CSocket类来完成流套接字的网络编程。
流套接字编程流程:
服务器
Socket()
Bind()
Listen()
Accept()
Socket()
客户端
阻塞,等待客户请求
Connect()
建立连接
Write()
Read()
请求数据
处理服务请求
Read()
Write()
应答数据
Close()
Close()
第3章 系统实现
3.1 服务器端详细设计
3.1.1 服务器端总的结构模块流程
启动协同写作系统服务器
系统管理员登录
系统初始化,显示用户信息
进入消息循环,接受相应命令信息
注销作品
创建新作品
删除用户
添加新用户
在线通信
退出协同写作系统服务器
3.1.2 添加新用户模块
模块功能:
1.在用户信息表添加新纪录;
2.根据输入参数完成新纪录的初始化;
3.更新列表控件,将新的用户信息在列表控件中显示;
具体操作:
该模块需要对用户信息表(UserTable)进行操作。
1.根据输入信息,给新纪录赋初值;
2.向数据库中插入新纪录操作;
3.将新纪录输出到列表控件中;
执行流程:
进入添加新用户模块
输入用户信息参数
接收输入参数
进入用户信息表
在用户表中插入新纪录
产生操作结果信息
将新用户信息输出到列表
进入消息循环
输入输出参数:
输入:新建的用户编号(m_UI)、用户姓名(m_UN)、学科(m_S)、级别(m_P)、密码(m_PW);
输出:当前用户信息;
3.1.3 删除用户模块
模块功能:
1. 接收要删除的用户信息;
2. 根据接收参数,删除用户信息表中的纪录;
3. 更新列表控件,将删除的用户信息从列表中删除;
具体操作:
该模块需要对用户信息表(UserTable)进行操作。
1. 输入要删除用户信息的编号;
2. 根据输入用户信息,查找数据库中用户信息纪录;
3. 删除数据库中符合条件的纪录;
4. 将删除的用户信息从列表中删除;
执行流程:
进入删除用户模块
输入要删除的用户编号
接收输入参数
访问用户信息表
是符合条件的纪录?
取出下一条纪录
删除该纪录
Y N
在列表中删除用户
进入消息循环
输入输出参数:
输入:要删除的用户编号(m_UI2);
输出:void;
3.1.4 创建作品模块
该模块内容与新建用户模块相似,不再详细介绍。
3.1.5 注销作品模块
该模块内容与删除用户模块相似,不再详细介绍。
3.1.6 在线通信模块
在线通信的功能是通过两个CSocket类的派生类实现的。
CListenSocket类主要完成侦听、响应连接请求;CClientSocket类主要完成与客户端之间信息的发送与接收功能。
编程步骤:
1. 用create()函数创建套接字;
2. 用bind ()函数将本地地址绑定到所创建的套接字上以在网络中标识该套接字;
3. 用listen()函数将套接字置监听模式,准备接收连接请求;
4. 当有客户请求连接时,用accept()创建新套接字接收连接请求;
5. 用receive()、send()函数接收、发送数据;
6. 用close()函数关闭套接字;
3.2 客户端详细设计
3.2.1 客户端总的结构模块流程
启动客户端程序
进入消息循环,接受相应的命令信息
退出系统
在线通信
操作模块
查阅作品信息
文章编辑
用户登录
退出协同写作客户端程序
3.2.2 用户登录模块
模块功能:
该模块主要是接收用户登录系统的请求以及接收用户登录信息,即用户编号和密码。凡在用户代码表(UserTable)没有相应记录的用户编号和密码均不能成功登录该系统,即使用该系统。登录界面如下图所示:
具体操作:
该系统客户端的主界面就是用户登录界面,添加用户编号和密码以后,用户点击“登录”按钮时,该模块取得UserName和Password的值。系统根据用户输入的信息访问数据库的用户信息表,查看是否有满足条件的用户信息。如果有,则用户登录成功,反之登录失败。
如果登录成功,则原来被禁止的各项操作控件被激活,用户根据自己的权限可以对文章进行各种相应的操作。
如果用户选择“进入写作”,系统自动初始化:从返回信息中依次取出用户的各项信息,根据这些信息设置用户可以进行的操作。
遍历数据库的作品信息表,将所有的作品信息纪录显示在列表控件中。
用户左键点击列表中的作品信息,可以查阅所选择作品的正文,点击右键,弹出浮动菜单,可以查看相应作品的评论、备注;
执行流程:
启动系统,进入登录模块
输入用户编号、密码
接收输入参数
根据取得信息访问数据库
访问下一条纪录
是最后一条纪录?
是与接收的用户编号相同?
N
N Y
、
Y
该纪录的密码与接收的密码相同?
N
Y
初始化系统写作界面
进入消息循环
输入输出参数:
输入:登录用户的编号(m_SUI),密码(m_SPW);
输出:登录成功标志;
3.2.3 文章编辑模块
模块功能:
该模块主要功能是提供给用户一个文字的编辑环境。
具体操作:
用户可以在这个编辑环境中进行文字的输入、文章的导入以及文字的剪切、复制、粘贴、删除及保存等编辑操作。其中文字输入、剪切、复制、粘贴、删除等功能系统初始化的时候已经完成。
3.2.4 查阅作品信息模块
模块功能:
该模块主要完成以下操作:
1. 从数据库中取出作品信息表中的所有纪录;
2. 将作品信息纪录输出到视图的列表控件中;
3. 点击作品列表,显示被点击作品的正文;
4. 右键点击列表,弹出浮动菜单,可以选择查看作品的正文、评论、备注;
具体实现:
该模块将需要访问作品信息表(WorksTable)。
首先,在视图中对列表控件进行初始化,列出“作品编号”、“作品名称”、“学科”、“状态”等几项用户信息;
然后,将作品信息表中的第一条纪录取出,将取出的作品信息纪录在列表中显示;
取出下一条纪录,同样将取出的作品信息纪录在表中显示;
重复上述操作,遍历并显示所有作品信息表中的纪录;
当有作品被点击时,到数据库中查找该纪录,取出相应的信息;
执行流程:
进入查阅作品信息模块
进入消息循环
点击列表控件
取出被点击纪录的编号
访问数据库作品表纪录
访问下一条纪录
是所点击的纪录?
N
Y
显示相关信息
3.2.5 操作模块
模块功能:
该模块实现不同级别的用户对文章进行操作的功能。其中包括:审阅作品、创建作品、提交写作、发表评论、编辑作品等操作。
该模块界面如下:
具体操作:
审阅作品:用户可以通过点击列表控件中的作品纪录来查阅作品的备注内容。用户经审阅后,可将这些内容添加到作品正文。
创建作品:当用户输入完要创建的作品信息后,系统接收这些参数,并根据这些参数对新作品进行初始化,并把新作品信息存储到数据库中,然后更新列表,显示新添加的作品。系统可通过服务器提示其他在线用户。
提交写作:用户完成写作后,便可以将其写作的内容录入到原文中,系统接收到用户写作的内容后,便自动将其存储到数据库中。
发表评论:当用户对文章有意见或建议时,便可以发表评论,系统接收到用户发表的评论后,便自动将其存储到数据库中。
编辑作品:用户可以对作品原文进行修改,系统禁止其他用户修改此文章。修改完毕后提交,系统将修改过的文章存储到数据库中。
3.2.6 在线通信模块
模块功能:
在这个模块当中,完成了服务器端、客户端之间通信的功能。用户可以在在线信息视图中与其他用户进行沟通交流。
具体实现:
在线通信的功能是通过一个CSocket类的派生类来实现的,即CchatSocket类。
编程步骤:
1. 用create()函数创建套接字;
2. 用connect()函数请求与服务器连接;
3. 得到允许后,用receive()、send()函数进行数据传输;
4. 用close()函数关闭套接字;
第4章 调试与修改
编程必然离不开要调试程序,没有一个程序员在开发程序的时候能一次性成功。在系统的具体实现当中,我也遇到了很多问题。
首先是数据库与应用程序之间的衔接问题。我采用了用App Wizard生成支持ODBC数据源的形式来对数据库进行操作,但是,当程序同时支持多个表时,应用程序中显示的数据库内容却和数据库中的实际内容不同,出现数据混乱现象,程序不能正常运行,原因也很难找到。后来,我将数据库中的多个表共同建立了一个视图,使应用程序支持这个视图,这样,既解决了数据混乱的问题,又保证了应用程序对数据库的各项操作。
还有就是视图之间的切换问题。这个问题也是比较难解决的。我定义了两个指向视图类的指针pOldActiveView和pNewActiveView。其中,pOldActiveView用于指向当前的活动视图,pNewActiveView根据传递的参数指向一个新视图,保存pOldActiveView所指向的当前活动视图文档,然后用pNewActiveView->Create()建新视图并初始化,隐藏当前视图,显示新视图。这样,就完成了视图之间的切换。
类似的问题在编程过程中还有许多。我总结了一下,大都是因为对C++语法了解得不太深入和对VC++开发环境的不熟悉,不过这些问题还是通过查阅资料和请教老师同学一一解决了。
4
第5章 经济技术分析
协同写作系统要求在局域网的环境下运行。运行该软件所需的环境配置为:一台客户机、一台性能指标比较高的服务器;软件需求为Windows 2000 Server 、Microsoft SQL Server 2000标准版、Microsoft Visual C++ 6.0中文专业版。
如果采用纯人工方式完成采编、校对、审阅等工作,不但耗工时较多,而且效率低下、出错率较高。在信息技术高速发展的今天,这种方式很难满足社会的需求。使用本系统能大大的缩短采编等工作的时间,减轻工作人员的劳动强度,避免冗余工作,从而降低成本。因此,开发此系统在经济上是完全可行的。
从技术方面来讲,SQL Server 2000本身就是功能强大的DBMS,所以后台数据库选择SQL Server 2000设计本系统的数据结构。Visual C++ 6.0是基于对象的开发工具,用它开发的应用程序易于维护,Client/Server模式的前端工具,对数据库的应用开发有着特殊的支持,在技术上也是可行的。另外,SQL Server 2000和Visual C++ 6.0都是微软的产品,在开发工具和数据库交互上比较好。因此,本系统能够较好的满足用户的需求,具有很强的可操作性和实用性。
综合各方面考虑,可以说该系统具备经济可行性和技术可行性。
结 论
由于协作式工作系统开发很复杂而我的水平有限,还有时间的关系,本项目只实现了协同写作系统的基本功能,在网络环境下,该系统可以提供来自不同地域、不同责任的操作者访问共享文稿的写作平台,并提供了对文稿的编辑环境。
在该系统实现的具体细节问题上有许多不足之处有待改进。例如,操作者正在编辑未发布的内容不能及时的通知其他的在线用户,对不同级别的操作者的操作权限区分的不是很明确。
虽然由于我对工具掌握的不太好,成果不像自己构想的那样完美,但是,通过本次毕业设计,我还是学到了不少东西。第一,我学会了通过各种途径查找自己所需要的资料。第二,我对面向对象的程序设计思想有了一定的了解,并且积累了一些实际的经验。第三,本次毕业设计也是对大学四年所学的知识的一次总结,使我知道了自己对知识掌握的不足之处。第四,这次毕业设计使我得到了锻炼,增强了自学能力和独立分析问题的能力,培养了发现问题解决问题的能力。这些都为我今后参加工作打下了坚实的基础。
总之,经过这三个月的学习,我深深的体会到了自己对专业知识的欠缺,也体会到了课堂中学到的知识是远远不够的。走出校门以后,我还要加倍努力地学习,不断充实自己的专业知识!
致 谢
在整个毕业设计过程中,特别感谢徐老师孜孜不倦的辛勤指导,为我在系统设计思想的形成上提出了许多宝贵的意见,这些教诲将对我今后的学习和工作产生巨大的影响。另外,设计期间承蒙计算机学院多位教师和同学的帮助和提点,衷心的感谢他们!
同时,我也感谢院领导给予我们方便的毕设条件,使我们的毕业设计能够如期的完成。在这里尤其感谢实验室的各位老师,每天不辞辛劳的为我们服务,衷心的感谢。
感谢在此期间给我帮助的同学和朋友。他们为我提供了许多学习资料,使我在学习编程的时候,有疑问的地方可以及时方便地查阅。当然在毕业设计过程中,他们也给我提出了很多可行性的建议。
转眼大学生活即将结束。在这四年里,许多老师和同学都给予了我关心和帮助。是他们给了我极大的鼓舞和信心。在此,我对他们表示深深的感谢!祝福他们好人好梦,事业有成!
参考文献
1 钱能 . C++ 程序设计教程 . 北京:清华大学出版社,1999
2 孙雄勇 . Visual C++6.0 入门与提高实用教程 . 北京:中国铁道出版社,2003
3 [美]David J.Kruglinski .Visual C++ 技术内幕第四版 . 北京:清华大学出版社,1999
4冯华 . Visual C++ 数据库开发技巧与实例 . 北京:机械工业出版社,2000
5 臧桂鹏 , 肖佳放 , 顾松东 . Visual C++ 网络与数据库编程 . 北京:中国电力出版社,2003
6 李闽溟,吴继刚,周学明 . Visual C++ 6.0数据库系统开发实例导航 . 北京:人民邮电出版社,2003
7 刘耀儒 . 新概念 SQL Server2000教程 . 北京:北京科海集团公司出品,2001
8 [美]RobertD.Thompson. MFC开发人员参考手册 . 北京:机械工业出版社,1999
展开阅读全文