java课程设计任务书参考论文new.docx

上传人:b****5 文档编号:29702153 上传时间:2023-07-26 格式:DOCX 页数:20 大小:86.90KB
下载 相关 举报
java课程设计任务书参考论文new.docx_第1页
第1页 / 共20页
java课程设计任务书参考论文new.docx_第2页
第2页 / 共20页
java课程设计任务书参考论文new.docx_第3页
第3页 / 共20页
java课程设计任务书参考论文new.docx_第4页
第4页 / 共20页
java课程设计任务书参考论文new.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

java课程设计任务书参考论文new.docx

《java课程设计任务书参考论文new.docx》由会员分享,可在线阅读,更多相关《java课程设计任务书参考论文new.docx(20页珍藏版)》请在冰豆网上搜索。

java课程设计任务书参考论文new.docx

java课程设计任务书参考论文new

目 录

1背景介绍1

1.1业务背景1

1.2技术背景1

2、需求分析1

2.1功能需求分析1

2.2业务对象分析5

3、系统设计5

3.1总体设计5

3.2详细设计6

四、系统实现11

4.1数据库访问11

4.2下机模块13

4.3上机模块13

五、总结与展望15

六、参考文献15

1背景介绍

1.1业务背景

“海之星”网吧,是一个小型网吧,以前是人工记账,现需要开发一个简单的网吧计费管理系统。

原人工管理的主要过程如下:

客户在门口服务台,出示上机卡,若是新客户则先发新卡;管理员先查询是否有空机器,若有则根据上机卡号查到该卡对应的记录(账簿),若有余额,则分配一个空闲的机器号给客户,客户根据机器号对号入座,管理员记下客户卡号、上机机器号、上机时间。

客户下机要到门口的服务台,请求下机,管理员根据当前时间、上机时间及费率计算出本次上机费用,并记录,同时将费用从卡余额中扣除,若费用不够则需充值。

原手工系统主要有如下缺点:

(1)手工记账,管理员工作量大,且易出错;

(2)超时超费使用不能及时发现。

因此需要开发一个简易计费管理软件,取代人工记账方式,由软件统一管理记录上下机、计费、上机卡、机器情况,提供简单统计功能,超时超费提醒功能等。

1.2技术背景

本系统要求使用java技术开发,使用ACCESS数据库保存数据,集成开发环境使用支持可视化GUI界面设计的主流工具eclipse。

要求开发者掌握java程序设计语言、SWING基本GUI组件、文件使用、JDBC存取数据库、使用一种集成开发工具的基本知识和技能。

系统采用两层C/S体系结构,C端(客户端)负责通过GUI与管理员交互、处理业务逻辑及存取数据库,S端(服务器端)是管理员操作界面,对整个系统进行管理。

系统分析设计主要采用面向对象的分析设计方法。

2、需求分析

2.1功能需求分析

网吧计费管理系统的主要功能是:

登录、上机、下机、卡管理(发卡、删卡、充值、查询)、机器管理(添加机器、删除机器、查询状态、修改状态),统计功能(日、月费用统计),口令管理(添加用户、删除用户、修改口令),参数设置(时段费率),使用帮助。

主要功能的用例(usecase)描述如下:

一、上机

1、管理员输入空闲机器号,上网人输入口令、卡号,请求上机。

2、系统验证卡号,检查卡中余额,卡状态

3、系统获取当前系统时间作为上机开始时间

4、系统修改该机器的使用标志为“在用”,卡标志为“在用”。

5、系统记录上机信息(卡号、机器号、上机时间)

6、系统提示上机成功

若1中无空闲机器又请求上机的,系统提示“没用空闲机器”;若2中卡验证未通过,提示“无此卡号”,余额不足,提示“余额不足”,卡状态为“在用”,则提示“不能一卡多用”。

二、下机

1、管理员选择被使用的机器号,请求下机

2、系统获取系统当前时间作为下机时间;

3、系统计算费用;

4、系统显示应缴费用

5、系统记录下机时间和此次费用;

6、系统从卡中扣费,修改卡状态为“空闲”;

7、系统修改该机器的状态为“空闲”;

8、系统显示本次上机记录信息,提示下机成功

三、登录

1、管理员输入用户名和密码,请求进入系统

2、系统验证用户名和密码

3、系统显示主界面

若一次验证不通过,则提示再输入一次,仍不通过则系统退出。

四、卡维护

卡有三种状态:

停用、空闲、在用。

(一)发新卡:

1、管理员输入卡号(保证卡号唯一)

2、管理员输入卡初始金额

3、上网人输入用户名、口令

4、管理员请求添加新卡

5、系统保存卡号、金额、用户名和密码,状态为“空闲”

6、系统提示添卡成功,显示卡号及金额,以便核对。

7、管理员将系统生成的有卡号、用户名的纸卡给上网人。

(二)充值:

1、管理员输入卡号

2、系统显示该卡信息(卡号、用户名、余额、状态)

3、管理员核对后,输入充值金额

4、系统计算并保存该卡总金额

5、系统显示充值后的卡信息(卡号、用户名、余额、状态)。

(三)查询卡信息:

1、管理员输入卡号或请求察看所有卡信息

2、系统查询卡信息(卡号、用户名、余额)并显示

(四)删除卡:

1、管理员输入卡号

2、系统查询卡余额及状态

3、若余额已结清且状态为“空闲”,则将该卡信息删除

4、系统提示删除成功

若有余额或“在用”则不能删除

五、机器维护

机器有三种状态:

停用、空闲、在用。

(一)添加机器:

1、管理员输入机器号,请求添加

2、系统验证机器号是否重复

3、系统添加机器记录信息(机器号、状态为“空闲”)

4、系统提示添加成功

(二)删除机器:

1、管理员输入机器号,请求删除

2、系统删除相应机器信息

3、系统提示删除成功

(三)查询机器状态:

1、管理员输入机器号或请求察看所有机器信息

2、系统查询并显示机器信息(机器号和状态)并显示

六、管理员口令管理

(一)添加用户

1管理员输入用户名、密码和确认密码,请求添加

2系统验证用户是否是新用户,两次输入的密码是否相同

3系统添加用户、密码信息

4系统提示添加成功

(二)删除用户

1管理员输入用户名、密码

2系统验证用户名、密码是否正确

3系统删除用户名、密码记录

4系统提示删除成功

(三)修改密码

1管理员输入用户名、密码,请求修改密码

2系统验证用户名、密码是否正确

3管理员输入新密码、及确认密码

4系统保存新密码

5系统提示修改成功

七、统计管理

1、管理员输入起始时间,结束时间,请求按日月年汇总

2、系统查询上网记录,计算、统计出时间段的总费用、人次、总上机时间等信息。

3、系统显示上述信息

八、参数管理

(一)时段费率设置:

0:

系统显示当前设置

1:

管理员设置时间段(时、分)及对应的费率,请求保存

2:

系统保存设置

3:

系统提示保存成功

(二)超时报警定时器间隔设置

九、超时超费报警

1、设置定时器为周期触发方式,触发间隔由参数获得,默认为30分钟

2、定时器到时,系统查询当前正在上机的记录,计算其上机时间及费用,计算其卡中余额是否低于最低费用。

3、系统提示已超费卡号、机器号,及超的费用

本系统除了功能性需求,还有易用性、可靠性、安全性等要求,可以在实现上述功能性需求的基础上,进一步实现完善非功能性要求。

2.2业务对象分析

根据上面的主要用例描述,可以分析出系统的主要业务对象,它是设计阶段核心类图的基础(不一定一一对应),这些对象必须实际存在,其行为和属性应与问题领域相关:

1、上网卡:

主要维护上网卡的相关信息。

卡号、密码、余额、卡用户名、卡状态(在用、空闲、停用)

2、机器:

主要维护上网吧计算机的相关信息。

机器号、使用标志(在用、停用、空闲)、备注

3、费用记录:

记录每次上机的信息。

记录编号、卡号、机器号、开始上机时间,下机时间、费用

4、费率记录:

起始时间、终止时间,费率

5、管理员:

利用1—4完成各种业务操作。

3、系统设计

3.1总体设计

一、系统体系结构

本系统主要运行在windows系列平台上,数据库使用ACCESS,开发工具使用eclipse。

采用两层C/S体系结构。

客户端分3层,图形界面层(采用java的SWING设计)负责与用户交互,业务逻辑层则根据用户的请求执行各种功能(如上、下机等),数据访问层主要根据业务逻辑层的请求通过JDBC/SQL存取数据库。

数据库使用ACCESS,客户端基本不做修改,仅有的少量修改也只在数据访问层。

客户端与服务端在物理上可以运行在一台机器上,也可以分别运行在不同机器上。

二、系统功能模块及主要类

系统的主要功能模块如图3-1所示:

图3-1系统模块图

3.2详细设计

3.2.1数据库设计

经过分析本系统的对象和类,其中Card、Computer、Record、Manger需要保存在数据库中,因此相应建立了4张表,它们关系如图3-2所示。

一条Record记录必有对应的一个Card及一台Computer,对于未用机器及卡,则没有对应的记录。

将其转换为关系表时,关键是在Record中设置CARDID,COMPUTERID作为外键指向Card和Computer。

图3-2持久对象属性及关系图

表3-1CARD表

名称

编码

数据类型

卡号

ID(主键)

VARCHAR(20)

用户名

USERNAME(非空)

VARCHAR(20)

密码

PASSWORD(非空)

VARCHAR(15)

卡状态

STATUS(非空)

INTEGER

余额

BALANCE(非空)

DOUBLE

表3-2COMPUTER表

名称

编码

数据类型

机器号

ID(主键)

VARCHAR(10)

状态

STATUS(非空)

INTEGER

备注

NOTES

VARCHAR(200)

表3-3Manager表

名称

编码

数据类型

用户名

USERNAME(非空)

VARCHAR(20)

口令

PASSWORD(非空)

VARCHAR(20)

表3-4RECORD表

名称

编码

数据类型

记录号

ID(主键)

VARCHAR(20)

卡号

CARDID(非空)

VARCHAR(20)

机器号

COMPUTERID(非空)

VARCHAR(10)

上机时间

BEGINTIME(非空)

DATE

下机时间

ENDTIME

DATE

上机费用

FEE

DOUBLE

3.2.2上机模块设计

一、界面设计

上机模块用户选择空闲机器号,输入卡号和密码,如果信息输入正确,则用户能成功上网,否则给出相应提示。

参考界面如图3-3所示。

图3-3参考界面

二、上机流程

1、初始化

(1)显示界面

(2)获取空闲机器

(3)将空闲机器号加入下拉列表

2、上机处理过程:

(1)验证机器号、卡号、密码是否为空

(2)根据卡号、密码获取卡对象

(3)若卡对象为空则说明卡号或密码错,给出提示“卡号或密码错”,要求重输

(4)判断卡状态,若卡正在使用则给出提示“不能一卡多用”

(5)计算卡中余额,若低于设定值,则提示“余额不足”

(6)修改卡状态为在用,修改机器状态为在用,获取上机时间,将上机时间、机器号、卡号保存到记录对象,再通过RecordDAO在库中添加一条新上网记录。

(7)提示上网成功

3.2.3下机模块设计

一、界面设计

下机模块主要根据用户请求(报出卡号/机器号),管理员根据卡号/机器号执行下机操作,参考界面如图3-4所示,大的文本空白文本框用于显示下机记录信息。

当然还有其它的设计方式,如显示当前上机的所有记录信息,选中其中一条执行下机操作。

图3-4下机模块界面

二、下机流程

1、管理员输入机器号或卡号,请求下机

2、系统获取机器号,据机器号获取相应记录对象,要处理机器号错误的情况

3、系统根据记录对象获取该记录对应的卡对象

4、系统计算费用,并比较卡对象余额,若不够则提示“余额不足”,并显示余额

5、系统从卡中扣费,修改卡状态为“空闲”;系统修改该机器的状态为“空闲”;系统更新记录信息(下机时间、费用)。

6、系统显示本次上网完整的记录(Record)信息及卡余额,并提示下机成功

3.2.4发新卡模块设计

一、界面设计

发卡需要输入卡号、用户名、密码、金额,参考界面如下图所示。

界面设计布局应简洁一致,从用户友好性出发,提供了输入提示,增加了“确认密码”,以提醒用户记住密码,输入的密码用*号显示以提高安全性。

虽然有了提示但在代码中仍需对输入进行验证,如金额不能为负值,以避免误输及恶意输入。

当然从口令强度考虑,要求密码只输入数字和字母又是不妥的,相反可提示用户输入特殊字符及输入的最小字符数。

所以此界面虽简单,但已涉及到界面的视觉风格、用户友好性、安全性考虑。

图3-5发卡界面

二、发卡流程

1、系统从界面获取所有信息,依次判断是否为空

2、判断金额是否大于0

3、判断密码和确认密码是否一致,

4、判断密码和用户名是否在最小及最大长度之间

5、判断卡号是否有效(唯一)

6、生成Card对象,请求CardDao向Card表中添加一条新记录。

7、提示卡添加成功,并显示卡号和金额

3.2.5删除卡模块设计

一、界面设计

删除卡参考界面如图3-6所示:

图3-6删除卡界面

二、删除卡流程

1、管理员输入卡号

2、系统根据卡号,请求CardDAO查询有无该卡

3、若返回的卡对象存在,则执行下一步,否则提示“卡号错误”,要求重输。

4、系统从Card查询卡状态

5、若为“在用”,则提示“不能删除在用卡”

6、查询余额,若有则对话框提示“请结清余额”

7、若余额已结清且状态为“空闲”,则将该卡信息删除

8、系统提示删除成功

四、系统实现

4.1数据库访问

1、获取连接的代码:

本系统采用JdbcOdbcDriver驱动,ODBC源名为NetBarDataSource,不需要口令验证。

privatestaticfinalStringDRIVER_CLASS=

"sun.jdbc.odbc.JdbcOdbcDriver";//定义驱动类

privatestaticfinalStringDATASOURCE="jdbc:

odbc:

NetBarDataSource";//定义ODBC数据源

publicstaticConnectiongetConnction(){

ConnectiondbConnection=null;

try{

Class.forName(DRIVER_CLASS);

dbConnection=DriverManager.getConnection(DATASOURCE);

}catch(Exceptione){

e.printStackTrace();

}

returndbConnection;

}

2、查询代码:

下面是根据用户名和口令验证卡是否有效的代码,需要注意的是查询参数值需要加单引号‘’:

publicbooleanisValid(Cardcard){

booleanisValid=false;

ConnectiondbConnection=null;

PreparedStatementpStatement=null;

ResultSetres=null;

try{

dbConnection=ConnectionManager.getConnction();

//构建查询SQL语句

StringstrSql="select*fromcardwhereid='"+card.getId()

+"'andpassword='"+card.getPassword()+"'";

if(dbConnection!

=null){

System.out.println(dbConnection!

=null);

}

//查询操作

pStatement=dbConnection.prepareStatement(strSql);

res=pStatement.executeQuery();//执行SQL语句,并返回结果

if(res.next()){//若res有记录说明卡存在

isValid=true;

}

}catch(SQLExceptionsqlE){

sqlE.printStackTrace();

}finally{

ConnectionManager.closeResultSet(res);//关闭结果集

ConnectionManager.closeStatement(pStatement);ConnectionManager.closeConnection(dbConnection);//关闭连接

}

returnisValid;

}

3、更新代码

下面是更新机器状态的代码,其中SQL语句中,“id=(?

)”是动态参数,具体值设置在pStatement.setString(1,computer.getId())

publicvoidupdateOnUse(Computercomputer){

ConnectiondbConnection=null;

PreparedStatementpStatement=null;

try{

StringstrSql=

"updatecomputersetStatus=1whereid=(?

);";

pStatement=dbConnection.prepareStatement(strSql);

pStatement.setString(1,computer.getId());//设置机器号id参数

pStatement.executeUpdate();

}catch(SQLExceptionsqlE){

sqlE.printStackTrace();

}finally{

ConnectionManager.closeStatement(pStatement);

ConnectionManager.closeConnection(dbConnection);

}

}

4.2下机模块

在BusinessManager类中的doCheckOut()方法是实现下机过程的关键。

/**

*docheckoutbusiness.

*@paramrecRecord,已有机器号值

*@returnComsumeDisplayInfo含有上机记录、对应卡记录

*/

publicstaticComsumeDisplayInfodoCheckOut(Recordrec){

RecordDAOdao=newRecordDAO();

//获取包含了下机记录及对应卡信息的ComsumeDisplayInfo

ComsumeDisplayInforesult=dao.getStopCompouterRelationInfo(rec);

Recordrecord=result.getRecord();

Cardcard=result.getCard();

//计算本次上机的费用

intfee=calFee(record.getBeginTime(),record.getEndTime());

record.setFee(fee);

//计算余额

intbalance=card.getBalance()-fee;

card.setId(record.getCardId());

card.setBalance(balance);

//将数据写入数据库

RecordDAOdao2=newRecordDAO();

dao2.doCheckOutDB(record,card);

//返回含有上机记录、CARD记录的ComsumeDisplayInfo,供界面显示下机结果

result.setRecord(record);

result.setCard(card);

returnresult;

}

4.3上机模块

处理请求上机的部分代码如下,主要有界面数据(机器号、密码、卡用户号)验证代码;卡有效性、余额可用性验证。

/**

*dealbusinessaboutclickconfirmbutton.

*@parameActionEvent

*/

voidconfirmButton_actionPerformed(ActionEvente){

StringcardId="";

Stringpasswordtemp="";

StringcomputerId="";

//获取机器号,并去掉空格

cardId=cardIdTextField.getText().trim();

//获取密码

for(inti=0;i

passwordtemp+=passwordFiled.getPassword()[i];

}

//获取机器号

computerId=computerIdCombox.getSelectedItem().toString();

//判断机器号是否为空,未填或只有空格

if(computerId==null||computerId.trim().length()==0){

JOptionPane.showMessageDialog(this,"请选择机器号!

","警告",

JOptionPane.WARNING_MESSAGE,null);

return;

}

/判断卡号是否为空,未填或只有空格

if(cardId==null||cardId.length()==0){

JOptionPane.showMessageDialog(this,"请输入卡号!

","警告",

JOptionPane.WARNING_MESSAGE,null);

return;

}

if(passwordtemp==null||passwordtemp.length()==0){

JOptionPane.showMessageDialog(this,"请输入密码!

","警告",

JOptionPane.WARNING_MESSAGE,null);

return;

}

//生成卡对象,并设置卡用户名、口令、上机时间

Cardcard=newCard();

card.setId(cardId);

card.setPassword(passwordtemp);

Recordrecord=newRecord();

record.setCardId(cardId);

record.setComputerId(computerId);

record.setBeginTime(dispalyNowTime);

//生成机器对象,更新机器状态时用

Computercomputer=newComputer();

computer.setId(computerId);

//验证卡是否有效、余额是否够,符合要求后调doCheckIn实际处理上机业务

if(BusinessManager.cardIsValid(card)){

if(BusinessManager.cardHaveBalance(card)){

BusinessManager.doCheckIn(record,computer);

}else{

JOptionPane.showMessageDialo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 制度规范

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1