KTV管理系统论文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

KTV管理系统论文
****
毕业论文(设计)
KTV管理系统
KTV management system
摘要
随着社会的发展,人类的进步,21世纪人们的生活的水平有所提高,为了满足人们对生活的需要,丰富业余生活,娱乐KTV等行业蓬勃发展,在数字化的今天,我们已经离不开计算机,为了加强对包厢和点歌的管理,我们必须使用计算机来对大量的歌曲以及对包厢进行处理,使KTV管理员对歌曲点播和分配包厢等操作的管理更加有序、到位,基于上述种种原因,开发一套KTV管理系统迫在眉捷,我们结合本次毕业设计开发以下的KTV管理系统方案。

关键词:KTV;管理;点歌
Abstract
With the development of society, the progress of mankind, the 21st century, the people life level improved, in order to meet the needs of people's life, rich amateur life, KTV entertainment industries to flourish, in digital today, we can not do without the computer, in order to strengthen the box and the song management, we must use the computer to a lot of songs as well as to box processing, make KTV manager to songs on demand and distribution box and operation management more orderly and reach the designated position, based on the above reasons, the development of a set of KTV management system a looming, we combined the graduation design and development the following KTV management system solutions.
Keywords: KTV, Management; The song
1 引言
1.1 项目开发背景
随着人们生活水平的提高,人们的业余生活也发生了巨大变化,为了满足人们对生活的需要,丰富业余生活,娱乐KTV等行业蓬勃发展。

近些年来,人们的业余生活变得越来越丰富多彩,去练歌房练歌,成为人们在生活之余的主要休闲方式。

传统的卡拉OK一直用关盘来喂顾客播放歌曲,由于光盘存放歌曲数量有限,很多时候,顾客都找不到自己想唱的歌,并且用光盘播放歌曲不方便。

在数字化的今天,我们已经离不开计算机,为了加强对包厢和点歌的管理,我们必须使用计算机来对大量的歌曲以及对包厢进行处理,使KTV管理员对歌曲点播和分配包厢等操作的管理更加有序、到位。

系统采用先进开发工具,通过本系统,顾客可通过多种方式点播自己喜爱的歌曲,管理员可向系统中添加、修改和删除歌曲信息。

基于上述种种原因,开发一套KTV管理系统迫在眉捷,,基于这些优点,在本次毕业设计之际,我作为一名计算机专业的毕业生,着手开发以下的KTV管理系统方案[1]。

1.2 项目提出的意义
“KTV管理系统”是娱乐场所点歌为适应标准化、快捷化的需要而发展起来的。

它是光盘播放的一种发展与革新,它是计算机应用于娱乐产业的成果。

2 项目分析设计
2.1 需求分析
从顾客使用点歌系统的角度挖掘需求,点歌系统应当具备多种途径的歌曲查询点播功能,普通点歌系统一般会提供一个纸质的歌单,通常其上的曲目按歌名的首字母进行排序并对每个曲目设定有一个特定的编号,也有部分点歌系统以歌名的字数进行排序,顾客在查找到相应的曲目之后再通过遥控器输入该曲目的编号完成点歌功能。

而本系统追求的是全电子化的系统,因此对曲目的查询要求采用无纸化的操作,通过输入即可查询所有曲目,并且需要提供更为丰富的查询方式。

基于方便
性与习惯,首先本系统应当提供传统点歌系统的查询方式,即以歌曲名首字母为依据的查询方式和以歌曲名字数多少为依据的查询方式,此外,需要增加以歌手名为依据的查询方式和以歌曲语种为依据的查询方式。

事实上,这些查询方式并没有什么奇特的地方,但是因为可以让不同的顾客选择自己习惯与适应的查询方式,它必将会让用户在消费时感觉更愉快些。

从经营者使用点歌系统的角度挖掘需求,点歌系统应当具备基本的按消费时间计算的计费功能。

此外,点歌系统还应当可以方便地增加新的曲目,也应提供对现有曲目的修改、删除功能,并且,对曲目的管理应当是各包房统一的,而不是必须一个一个包房地进行设置与操作。

另外,因为曲目的管理会影响到整个系统提供的服务,所以这些管理功能应当只能由具有相应权限的管理人员完成,因此,点歌系统中还应提供相应管理人员管理功能及权限控制功能
2.2 可行性分析
也称为可行性研究,是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、操作等方面进行分析和研究,以避免投资失误,保证新系统的开发成功。

可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。

该系统的可行性分析包括以下几个方面的内容。

1 .技术可行性:
开发此KTV管理系统需要的硬件环境要求不高,操作系统为windows 2000 以上系列即可,系统的开发软件为ecliose,数据库管理系统为SQL 2000。

除专业技术人员外,普通操作人员无需掌握ecliose及SQL的使用, 易于学习和使用。

因此从技术方面讲开发此KTV管理系统是可行的[2]。

2 .经济可行性分析
本KTV管理系统主要面向娱乐场所的,所需的硬件和软件环境均不高,所需的
专业技术人员也不多,大部分人员在系统的演示完毕之后就可以亲自操作了,并且可以利用娱乐场所已有的工具,所以开发此系统成本低、经济效益高、实用性高,因此从经济方面讲开发此KTV管理系统是可行的[3]。

3 .操作可行性分析
根据现有的技术设备条件和准备充实的技术力量和设备,系统在技术上的实现是可行的。

在设备方面,计算机内存容量、外存容量输入输出设备等都可在原有的基础上满足需要[4]。

综上所述,此系统开发目标已明确,在技术和经济等方面都可行,并且投入少、见效快。

因此系统的开发是完全可行的[5]。

2.3系统开发所用的技术准备
2.3.1 JDK简介
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。

自从Java推出以来,JDK已经成为使用最广泛的Java SDK。

JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库[6]。

JDK是学好Java的第一步。

而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。

从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高[7]。

2.3.2 Eclipse简介
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)[8]。

2.3.3 sql server 2000
SQL是英文Structured Query Language的缩写,意思为结构化查询语言。

SQL 语言的主要功能就是同各种数据库建立联系,进行沟通。

按照ANSI(美国国家标准
协会)的规定,SQL被作为关系型数据库管理系统的标准语言。

SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。

目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。

2.4系统整体框架和模块功能说明
图2-2 系统
整体框架图1.用户登录模块
前台身份登录:可查询和分配包厢信息、赋予顾客查询权限;不可添加、修改、删

服务员身份登录:开启点歌系统,让顾客进行点歌;
管理员身份登录:可进行包厢、歌手和歌曲的添加、修改、查询、删除信息;
2.包厢管理模块
空房查询:查询没被使用的包厢
分配包厢:根据空房查询的结果把可用包厢分配给顾客
时间记录:记录包厢开始使用和结束使用的时间
3.顾客消费管理模块
费用管理:记录顾客消费的费用
会员管理:记录会员信息
4.点歌模块
歌手名称点歌:根据演唱歌手的名字来查询选择歌曲。

歌曲名称点歌:按照歌曲名称进行查询选择歌曲。

歌曲拼音点歌:根据歌曲名称的每个字的首字母来选歌。

歌曲字数点歌:根据歌曲字数来检索歌曲。

歌曲语种点歌:根据不同语种检索歌曲。

5.数据维护模块
歌曲信息维护:对歌手信息进行添加、修改、删除及查询操作。

歌手信息维护:对歌曲信息进行添加、修改、删除及查询操作。

包厢信息维护:对用户信息进行添加、修改、删除及查询操作。

3 数据库实现
3.1数据表设计
3.1.1数据库表总体关系
数据库各个表之间的关系如图3-1所示:
图3-1数
据库表之
间的关系

3.1.2数据表详细结构
本系统用SQL2000作为数据库,数据库命名为KTV,各表设计如下[9]:
表1 UserForm:用来记录用户名和密码
用户信息实体所包含的属性E-R图如图
表2 Singer:用来记录歌手信息
歌手信息实体所包含的属性E-R图如图
表3 Song:用来记录歌曲信息
歌曲信息实体所包含的属性E-R图如图
表4 selected:用来记录已选歌曲信息
已选歌曲信息实体所包含的属性E-R图如图
表5 Room:用来记录包厢信息
包厢信息实体所包含的属性E-R图如图
表6 Register:用户登记表
登记用户信息实体所包含的属性E-R图如图
表7 record:历史记录表
历史记录信息实体所包含的属性E-R图如图
表8 charge:用来记录用户账单
用户账单信息实体所包含的属性E-R图如图
表9 Vip:用来记录会员信息
会员信息实体所包含的属性E-R图如图
表10 CARD:用来记录会员卡信息
会员卡信息实体所包含的属性E-R图如图
3.2存储过程设计
3.2.1点歌的5个存储过程
1.按字数查找
CREATE proc 按字数查找@字数char(10)
as select SongNo,SongName,SingerName,SongLan
from 歌曲信息
where Wordcount=@字数
GO
2.按拼音查找
CREATE proc 按拼音查找@拼音char(10)
as select SongNo,SongName,SingerName,SongLan
from 歌曲信息
where Spell=@拼音
GO
3.按歌手查找
CREATE proc 按歌手查找@歌手名char(30)
as select SongNo,SongName,SingerName,SongLan
from 歌曲信息
where singername=@歌手名
GO
4.按歌曲名称查找
CREATE proc 按歌曲名称查找@歌曲名称char(30)
as select SongNo,SongName,SingerName,SongLan
from 歌曲信息
where SongName=@歌曲名称
GO
5.按语种查找
CREATE proc 按语种查找@语种char(10)
as select SongNo,SongName,SingerName,SongLan
from 歌曲信息
where songlan=@语种
GO
3.2..2维护的5个存储过程
1.修改歌手信息
CREATE proc 歌手修改@singerno char(5),@singername varchar(30),@sex char(2),
@nation char(8)
as update singer
set singerno=@singerno,singername=@singername,sex=@sex,nation=@nation
where singerno=@singerno
GO
2.修改包厢信息
CREATE proc 包厢修改@roomno char(3),@roomtype char(4),@roomprice int,
@state tinyint
as update room
set roomno=@roomno,roomtype=@roomtype,roomprice=@roomprice,state=@state
where roomno=@roomno
GO
3.修改歌曲信息
CREATE proc 维护修改@songno char(8),@songname varchar(30),@wordcount char(4),
@spell varchar(10),@songlan varchar(8),@singerno char(5)
as update song
set
songno=@songno,songname=@songname,wordcount=@wordcount,spell=@spell,songlan=@songlan,singe rno=@singerno
where songno=@songno
GO
4.插入歌曲
CREATE proc 维护插入@songno char(8),@songname varchar(30),@wordcount char(4),
@spell varchar(10),@songlan varchar(8),@singerno char(5)
as insert into song
values(@songno,@songname,@wordcount,@spell,@songlan,@singerno)
GO
5.显示歌曲信息
CREATE proc 维护显示
as select songno,songname,singername,songlan,wordcount,spell,Singerno
from 歌曲信息
GO
3.2..3顾客登记和结账的1个存储过程
1.在顾客登记部分用了1个存储过程来插入顾客信息
CREATE proc 顾客登记@customername varchar(10),@roomno char(3),@opentime datetime,
@leavetime datetime,@cardid char(3),@IsCal char(4)
as insert into register
values( @customername,@roomno,@opentime,@leavetime,@cardid,@IsCal)
GO
2.在结账部分用了1个存储过程来插入账单信息
CREATE proc 账单插入@roomno char(3),@customername varchar(10),@charge float(8),@discount float(8),
@pay float(8)
as insert into charge
values(@roomno,@customername,@charge,@discount,@pay)
GO
3.3视图设计
创建了2个视图,一个用视图来建立完整的歌曲信息,包括歌曲表中的信息和歌手表中的信息;一个视图用来显示vip顾客结账时需要的信息
3.3.1歌曲信息视图
CREATE VIEW dbo.歌曲信息
AS
SELECT dbo.Song.SongNo, dbo.Song.SongName, dbo.Singer.SingerName,
dbo.Song.SongLan,dbo.Song.WordCount,dbo.Song.Spell,dbo.Singer.SingerNo,
dbo.Singer.Nation, dbo.Singer.Sex
FROM dbo.Song INNER JOIN
dbo.Singer ON dbo.Song.SingerNo = dbo.Singer.SingerNo
3.3.2 VIP结账视图
CREATE VIEW dbo.结账
AS
SELECT dbo.Register.CustomerName, dbo.Register.RoomNo, dbo.Room.RoomPrice, dbo.Register.OpenTime, dbo.Register.LeaveTime, dbo.CARD.Discount,
dbo.Vip.CardId
FROM dbo.Register INNER JOIN
dbo.Room ON dbo.Register.RoomNo = dbo.Room.RoomNo INNER JOIN
dbo.Vip ON dbo.Register.CardId = dbo.Vip.CardId INNER JOIN
dbo.CARD ON dbo.Vip.CardType = dbo.CARD.CardType
3.4触发器设计
1.这个触发器是用来修改包厢状态的,当向register表插入信息时,将room表对应的state(状态)改成1,表示该包厢已使用
CREATE Trigger 登记
On dbo.Register
for insert,delete
As
declare @RoomNo char(3)
begin
update room
set state='1'
from room,inserted
where room.roomno=inserted.roomno
end
2.这个触发器的作用是当从register删除信息时,将room表对应的state(状态)改成0,表示该包厢为空,并将删除的信息添加到record表
CREATE Trigger 注销
On dbo.Register
for delete
As
declare @Customername varchar(10)
declare @RoomNo char(3)
declare @OpenTime datetime
declare @LeaveTime datetime
declare @CardId char(8)
begin
select @Customername= Customername from deleted
select @RoomNo=RoomNo from deleted
select @OpenTime=OpenTime from deleted
select @LeaveTime=LeaveTime from deleted
select @CardId=CardId from deleted
update room
set state='0'
from room,deleted
where room.roomno=deleted.roomno
insert into record
values(@CustomerName,@RoomNo,@OpenTime,@LeaveTime,@CardId)
end
4 系统运行和测试
4.1用户登录模块
4.1.1分析与设计
根据应用,要实现前台、服务员和管理者的登录,从而确保信息的安全4.1.2 测试与实现
测试登录界面的使用,并登录成功
测试截图:
登陆校验伪代码:
if (ae.getSource() == bLogin) { //点登陆按钮
if (tUser.getText().equals("") || password.getPassword().equals("")) { //如果用户名和密码为空提示请输入
} else {
此处省略“连接数据库,匹配用户名和密码”
if(成功){
跳转到登陆页面
}else{
提示失败信息
}
}
}
4.2包厢管理模块
4.2.1分析与设计
根据设计,要使前台能实现包厢的空房查询,分配包厢,时间记录,并最终注销包厢,使到时间的包厢回复空包厢状态
4.2.2 测试与实现
开包厢伪代码:
if (ae.getSource() == b1) {//添加按钮
if (t3.getText().equals("")) {//如果卡号为空
提示请输入!
} else {
if(s4.equals("使用中")){
s4="1"//s4为房间标记,1为使用中,0为空
}else{
s4="0";
}
if (s1.length() != 3) {//顾客姓名为空
提示包厢号必须为3位数字
} else {
String sql = "insert into room values('" + s1 + "','"
+ s2 + "','" + s3 + "','" + s4 + "')";
rs = stat.executeUpdate(sql);//执行sql语句
if (rs < 1) {//执行sql语句后函数的返回结果
提示添加失败
} else {
提示添加成功!
}
}
}
}
修改包厢伪代码:
else if (ae.getSource() == b2) {//修改按钮
if(s4.equals("使用中")){
s4="1"; //s4为房间标记,1为使用中,0为空
}else{
s4="0";
}
proc = conn.prepareCall("{call 包厢修改(?,?,?,?) }");
r = proc.executeUpdate();//调用call包厢修改(?,?,?,?)存储过程
if (r < 1) {
提示修改失败
} else {
提示修改成功!
}
}
}
注销包厢伪代码:
else if (ae.getSource() == b2) {//注销包厢按钮
if (t1.getText().equals("")) {//顾客姓名为空
提示请输入包厢编号!
} else {
String s1 = t1.getText().trim();//获取包厢号
String sql = "delete from room where roomno='" + s1 + "'";
r = stat.executeUpdate(sql); //执行sql语句
if (r < 1) {
提示删除失败
} else {
提示注销成功!
}
4.3顾客消费管理模块
4.3.1分析与设计
根据设计,要使前台能实现对对顾客的费用管理,进行结操作,并且根据有需要的顾客办理会员卡
4.3.2 测试与实现
顾客的费用管理的代码:
//省略连数据库的代码
rs1 = stat.executeQuery("select * from register where roomno='"+ s + "'");//查询注册者信息while (rs1.next()) {
此处省略获取卡号,开房时间,离开时间和客户姓名
}
h = stat.executeQuery("select datediff(n," + "'" + tm1 + "','"
+ tm2 + "')");// 时间计算
while (h.next()) {
min = h.getInt(1);
}
// 不满一小时按一小时计费
if (min % 60 == 0) {
hour = min / 60;
} else {
hour = ((int) min / 60) + 1;
}
if (getid.equals("")) {
rs2 = stat
.executeQuery("select roomprice from room where roomno='"
+ s + "'");//查询客房price信息
while (rs2.next()) {
rp = rs2.getInt("roomprice");
}
pay = (int) (hour * rp);
} else {
rs = stat.executeQuery("select * from VIP顾客结账");
while (rs.next()) {
rp = rs.getInt("roomprice");//获取价格
dis = rs.getFloat("discount");//获取打几折
}
pay = (int) (hour * rp * dis / 10);
}
CallableStatement proc = conn
.prepareCall("{call 账单插入(?,?,?,?,?) }");
if (rs3 < 1) {
提示保存账单失败!
}
4.4点歌模块
4.4.1分析与设计
根据设计,当服务员开启点歌系统之后,消费者能够进行点歌操作,可以根据歌手名称、歌曲名称、歌曲拼音、歌曲字数、歌曲语种进行点歌
4.4.2 测试与实现
查找功能通过调用数据库的存储过程实现
其中存储过程代码如下:
歌曲名称查找:
CREATE proc 按歌曲名称查找 @歌曲名称 char(30) as select SongNo,SongName,SingerName,SongLan
from 歌曲信息
where SongName like '%'+@歌曲名称+'%'
歌手查找:
CREATE proc 按歌手查找 @歌手名 char(30)
as select SongNo,SongName,SingerName,SongLan
from 歌曲信息
where singername like @歌手名
语种查找:
CREATE proc 按语种查找 @语种 char(10)
as select SongNo,SongName,SingerName,SongLan
from 歌曲信息
where songlan=@语种
歌曲数字查找:
CREATE proc 按字数查找@字数char(10)
as select SongNo,SongName,SingerName,SongLan
from 歌曲信息
where Wordcount=@字数
拼音查找:
CREATE proc 按拼音查找 @拼音 char(10)
as select SongNo,SongName,SingerName,SongLan
from 歌曲信息
where Spell=@拼音
实现删除功能伪代码:
if (ae.getSource() == bdelete) {
//此处省略连接数据库代码
String sql = "delete from selected where Recordno='" + ins0
+ "'";//删除选择表中对于的记录
rs = stat.executeUpdate(sql);//执行删除
if (rs < 1) {
提示无歌曲,请先点歌!
} else {
提示删除成功!
}
}
}
返回功能伪代码:
else if (ae.getSource() == breturn) {//返回按钮
此处省略返回歌曲页面
}
优先功能伪代码:
else if (ae.getSource() == bfirst) {//实现优先功能
1.此处省略连接数据库代码。

并把数据存在Vector v中
2.把v中的数据存放在table中
3. 获取选择表格的行
4.删除表格改行记录
5.把选择的行插入到Vector v的最前面
for (int i = 0; i < v.size(); i++) {//遍历的所有数据,并更新数据库
now = (String[]) v.get(i);
nson = now[1];
nsin = now[2];
nsol = now[3];
String sql = "update selected set songname='" + nson
+ "',singername='" + nsin + "',songlan='"
+ nsol + "' where recordno='" + (i + 1) + "'";
stat.executeUpdate(sql);
}
6.此处显示从新显示表格代码
}
4.5 数据维护模块
4.5.1分析与设计
根据设计,要使管理者能实现对KTV数据库里面的歌曲信息、歌手信息、包厢信息进行管理
4.5.2 测试与实现
1.歌曲信息的维护截图
添加功能伪代码
if (ae.getSource() == b1) { //添加按钮
if (t2.getText().equals("")|| t4.getText().equals("")) {//歌曲名和歌手编号不能为空
提示请输入!
} else {
int rs;//判断是否添加成功的标记
//此处省略连接数据库
String sql = "insert into singer values('" + s1 + "','"
+ s2 + "','" + s3 + "','" + s4 + "')";//插入歌手的sql语句
rs = stat.executeUpdate(sql);//执行添加歌手
if (rs < 1) {
提示添加失败
} else {
提示添加成功!
}
2.歌手信息的维护截图
修改功能伪代码
if (ae.getSource() == b2) { //修改按钮
int r;//是否执行成功的标记
//此处省略连接数据库
CallableStatement proc = conn.prepareCall("{call 歌手修改(?,?,?,?) }");//调用“歌手修改(?,?,?,?)”存储过程
r = proc.getUpdateCount();//执行存储过程
if (r < 1) {
提示修改失败
} else {
提示修改成功!
}
}
删除功能伪代码
if (ae.getSource() == b3) { //删除按钮
if (t1.getText().equals("")) {//歌手编号不能为空
提示请输入歌手编号!
} else {
//此处省略连接数据库
String sql = "delete from singer where singerno='" + s1
+ "'";//通过歌手编号删除歌手的sql语句
r = stat.executeUpdate(sql);//删除歌手
if (r < 1) {
提示删除失败
} else {
提示删除成功!
}
}
总结
随着电脑技术的不断发展,越来越多的技术不断的应用于现实生活在,让人目不暇接。

而KTV管理系统就是这其中之一,而我制作这个系统在于应用所学知识运用到实际的一次体现。

本系统的制作,不仅让我在整个过程中重新复习了一遍所学过的JAVA的知识,并让更加了解了一些以前学习中知识的缺漏,让自己的整个知识体系更加的完整。

通过这一段时间的毕业设计,不仅让我对整个大学生活做了一个总结,也是对自己的正学习成果的一种体现。

这让我的自己的未来更加的充满欣喜,迎接未来的挑战。

本次设计的作品优点在于画面美观,整个逻辑结果清晰,系统较为完整。

但由于本人能力有限,再加上毕业设计的时间有限,,会有一些不足之处,许多方面在下一步的工作中还需要进一步改进和完善。

如我的系统不能实现真正的点歌实现歌曲的播放,这是自己在技术上的缺漏。

我会更加努力的学习,通过以后的学习来修改于晚上这些东西。

致谢
在这次毕业设计实践环节中,首先要感谢指导教师老师对我们的认真负责,在实践中为我们提供宝贵的指导意见。

在毕业设计的这段时间,他深厚的理论水平,严谨的教学态度,强烈的责任心和对学生的无私关怀,将使我受益匪浅。

给予我很大的帮助,使我得到实质性的提高。

这对于我以后的工作和学习都是巨大的财富。

在此也感谢计算机系的所有老师们,在我大学四年的学习生活中无私的奉献着,我将永生难忘。

感谢计算机组的所有老师。

谢谢你们,谢谢你们给予我们的知识。

祝计算机系的所有老师身体健康。

参考文献:
[1] 萨师煊、王珊.数据库系统概论[M].北京:高等教育出版社,2008:21-30。

[2] 王晟. SQL Server数据库开发经典案例解析[M].北京:清华大学出版社,2006:111-120。

[3] 中文版SQL Server 2000开发与管理应用实例 [M].北京:人民邮电出版社,2008:80-110。

[4] 普雷斯曼著. 软件工程:实践者的研究方法[M].北京:机械工业出版社,2010:78-289.
[5]杨昭.数据库技术课程设计案例精编[M].北京:中国水利水电出版社,2009:70-71.
[6]张永强、张墨华. Java程序设计教程[M]. 北京:清华大学出版社,2009:80-90.
[7]张平、陈爱国. Java面向对象设计 [M]. 北京:邮电大学出版社,2007:75-80.
[8] 李刚 .疯狂JAVA讲义[M].北京:电子工业出版社,2008.400
[9] 龙怀冰. SQL Server 200使用开发教程[M]. 北京:人民邮电出版社,2006:110-120.。

相关文档
最新文档