JAVA课程设计模块设计与编程示例.docx

上传人:b****7 文档编号:8809986 上传时间:2023-02-01 格式:DOCX 页数:25 大小:38.65KB
下载 相关 举报
JAVA课程设计模块设计与编程示例.docx_第1页
第1页 / 共25页
JAVA课程设计模块设计与编程示例.docx_第2页
第2页 / 共25页
JAVA课程设计模块设计与编程示例.docx_第3页
第3页 / 共25页
JAVA课程设计模块设计与编程示例.docx_第4页
第4页 / 共25页
JAVA课程设计模块设计与编程示例.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

JAVA课程设计模块设计与编程示例.docx

《JAVA课程设计模块设计与编程示例.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计模块设计与编程示例.docx(25页珍藏版)》请在冰豆网上搜索。

JAVA课程设计模块设计与编程示例.docx

JAVA课程设计模块设计与编程示例

“班级设置”模块设计与编程示例

按照MVC设计模式【模型(model)-视图(view)-控制器(controller)】,每个模块逻辑上按三层结构(数据访问层,业务层,Web层)依次从左到右进行设计。

下面是以“班级设置”模块为例介绍设计思路。

数据访问层:

用于与数据库的连接以及各种数据操作,包括增加、删除、查询、修改等。

该部分主要包括数据库连接、数据实体接口、数据访问对象。

其中“数据访问对象”是对“数据实体接口”的具体实现。

例如,数据库连接对象(Dbconnection)主要定义了数据库的访问连接等方法;抽闲数据接口(ClassinfoDao)抽象地定义了操作“班级信息”的各种接口方法(增删查修);而数据访问对象(ClassinfoImp)实现了ClassinfoDao接口中的所有方法,达到数据操作与访问的目的。

业务层:

用于业务数据的处理,主要通过“数据访问对象”(ClassinfoImp)中提供的各种数据操作,完成相应的“业务层”功能。

例如,ClassinfoServiceImp(班级模块的业务处理对象)调用ClassinfoImp中的各种数据处理方法,以实现业务数据的处理。

表示层:

采用可视化的界面形式显示各种业务处理上的数据,它主要调用业务层中的ClassinfoServiceImp来完成数据的显示。

该层模块通常使用Servlet技术来实现,以动态显示。

例如:

ClassinfoServlet(班级模块的视图显示对象)调用ClassinfoServiceImp中的各种操作服务或方法,实现“表示层”功能。

注意:

该“学生成绩管理系统”中的每个模块都需要定义上述4种对象或文件(除Dbconnection外)。

下面将以“班级设置”模块为例,详细介绍具体设计过程。

第一步.因为每个模块都要连接数据库。

所以编写一个Dbconnection.java公共类(只需写一次)。

第二步.每一模块的功能都需要操作数据,可以将数据存取操作都存放在javabean之中。

例如,本例是Classinfo.java

第三步.首先编写抽象数据接口ClassinfoDao.java(代码如下所示),然后编写该接口的实现对象-数据访问对象(Classinfoimp.java)。

使用该接口的目的是为了让业务层与数据访问层分离。

publicinterfaceClassinfoDao{

voidadd(Classinfoclassinfo);

voiddelete(StringclassID);

voiduptate(StringclassID,StringgradeID,StringclassName);

Classinfofind(StringclassID);

ListgetAll();

ListfenyeList(intpage);

intfindCount();

}

第四步.编写业务层.业务层用于业务数据的处理并完成相应的“业务层”功能。

本例中的业务层是ClassinfoServiceImp.java。

业务层编写完后以提供web层调用。

第五步.编写表示层(web层).表示层是采用可视化的界面形式显示各种业务处理上的数据,它主要调用业务层中的ClassinfoServiceImp来完成数据操作功能,如增加、删除、查询、修改等。

本例Web层程序是ClassinfoServlet.java。

下面是核心代码解释:

因为在修改时要解决中文乱码问题,所以先设置request的编码格式。

protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

request.setCharacterEncoding("UTF-8");

Stringmethod=request.getParameter("method");

if(method.equals("add")){

add(request,response);

}elseif(method.equals("delete")){

delete(request,response);

}elseif(method.equals("listall")){

listall(request,response);

}elseif(method.equals("update")){

update(request,response);

}elseif(method.equals("fenye")){

fenyelistall(request,response);

}

}

在增删改查中稍有困难的是删除和修改在一块实现。

主要代码如下。

functionCheckAll(elementsA,elementsB){

for(i=0;i

elementsA[i].checked=true;

}

if(elementsB.checked==false){

for(j=0;j

elementsA[j].checked=false;

}

}

}

//判断用户是否选择了要删除的记录,如果是,则提示“是否删除”;否则提示“请选择要删除的记录”

functioncheckdel(delid,formname){

varflag=false;

for(i=0;i

if(delid[i].checked){

flag=true;

break;

}

}

if(!

flag){

alert("请选择要删除的记录!

");

returnfalse;

}else{

if(confirm("确定要删除吗?

")){

formname.submit();

}

}

}

method=delete"method="post"name="frm">

班级编号

年级编号

班级名称

删除

修改

forEachvar="c"items="${Classinfos}">

${c.classID}

${c.gradeID}

${c.className}

classID=${c.classID}&kind=banji"target="right">修改

forEach>

onClick="CheckAll(frm.delid,frm.checkbox)">[全选/反选][

style="color:

red;cursor:

pointer;"onClick="checkdel(frm.delid,frm)">删除]

none">

10px;">

${bar}

--层ch用于放置隐藏的checkbox控件,因为当表单中只是一个checkbox控件时,应用javascript获得其length属性值为undefine-->

注:

一个jsp里可以有多个表单。

本例中还有一个值得学习的地方是把数据分页。

用mysql和sqlserver数据库实现的方式是不同的。

本例还有两个filter类。

CheckLoginFilter.java是用来阻止没有登录的用户进入后台管理。

后来发现一个问题,就是在登录后,然后退出,再在浏览器里访问main.jsp还是可以进入后台,然后创建一个Nocachefilter.java来阻止浏览器缓存。

对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

附录:

1.数据库连接对象(Dbconnection.java)

packagestu.utils;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.sql.Statement;

importorg.junit.Test;

publicclassDbconnection{

protectedstaticStringdbClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver";

protectedstaticStringdbUrl="jdbc:

sqlserver:

//127.0.0.1:

1433;"

+"DatabaseName=DB_Student";

protectedstaticStringdbUser="sa";

protectedstaticStringdbPwd="1234";

publicConnectionconnect=null;

publicStatementstmt=null;

publicResultSetrs=null;

@Test

publicConnectiongetConnection(){

Connectionconn=null;

try{

if(conn==null){

Class.forName(dbClassName).newInstance();

}

}catch(Exceptionee){

//System.exit(0);

}

try{

conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd);

if(conn==null)

System.out.println("数据库名称错误");

Statementst=conn.createStatement();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

System.out.println("数据库连接错误");

}

returnconn;

}

publicResultSetexecuteQuery(Stringsql){

try{

connect=getConnection();

stmt=connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

rs=stmt.executeQuery(sql);

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

System.err.println(e.getMessage());

e.printStackTrace();

}

returnrs;

}

//执行添加

publicintexecuteUpdate(Stringsql){

intresult=0;

try{

connect=getConnection();

stmt=connect.createStatement();

result=stmt.executeUpdate(sql);

//System.out.print("添加成功");

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

//e.printStackTrace();

result=0;

}

try{

stmt.close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnresult;

}

publicvoidclose(){

try{

if(rs!

=null)

rs.close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

try{

if(stmt!

=null)

stmt.close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

try{

if(connect!

=null)

connect.close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

}

2.数据实体JavaBean(Classinfo.java)

packagestu.domain;

publicclassClassinfo{

publicstaticfinalintPAGE_SIZE=2;

privateStringclassID;

privateStringgradeID;

privateStringclassName;

publicStringgetClassID(){

returnclassID;

}

publicvoidsetClassID(StringclassID){

this.classID=classID;

}

publicStringgetGradeID(){

returngradeID;

}

publicvoidsetGradeID(StringgradeID){

this.gradeID=gradeID;

}

publicStringgetClassName(){

returnclassName;

}

publicvoidsetClassName(StringclassName){

this.className=className;

}

}

3.抽象数据接口(ClassinfoDao.java)

packagestu.dao;

importjava.util.List;

importstu.domain.Classinfo;

publicinterfaceClassinfoDao{

voidadd(Classinfoclassinfo);

voiddelete(StringclassID);

voiduptate(StringclassID,StringgradeID,StringclassName);

Classinfofind(StringclassID);

ListgetAll();

ListfenyeList(intpage);

intfindCount();

}

4.数据访问层(Classinfoimp.java):

实现了ClassinfoDao接口

packagestu.dao.imp;

importjava.sql.Connection;

importjava.sql.PreparedStatement;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.sql.Statement;

importjava.util.ArrayList;

importjava.util.List;

importstu.dao.ClassinfoDao;

importstu.domain.Classinfo;

importstu.domain.User;

importstu.utils.Dbconnection;

publicclassClassinfoimpimplementsClassinfoDao{

publicvoidadd(Classinfoclassinfo){

Dbconnectionconn=newDbconnection();

Stringsql="Insertinto[tb_classinfo]values('"+classinfo.getClassID()+"','"+classinfo.getGradeID()+"','"+classinfo.getClassName()+"')";

conn.executeUpdate(sql);

conn.close();

}

publicvoiddelete(StringclassID){

Dbconnectionconn=newDbconnection();

Stringsql="deletetb_classinfowhereclassID='"+classID+"'";

conn.executeUpdate(sql);

conn.close();

}

publicvoiduptate(StringclassID,StringgradeID,StringclassName){

Dbconnectionconn=newDbconnection();

Stringsql="updatetb_classinfosetgradeID='"+gradeID+"',className='"+className+"'whereclassID='"+classID+"'";

conn.executeUpdate(sql);

conn.close();

}

publicClassinfofind(StringclassID){

Classinfocl=newClassinfo();

Dbconnectionconn=newDbconnection();

Stringsql="select*fromtb_classinfowhereclassID='"+classID+"'";

ResultSetrs=conn.executeQuery(sql);

try{

while(rs.next()){

cl.setClassID(rs.getString

(1));

cl.setGradeID(rs.getString

(2));

cl.setClassName(rs.getString(3));

}

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

cl.setClassID(classID);

returncl;

}

publicListgetAll(){

Dbconnectionconn=newDbconnection();

Stringsql="select*fromtb_classinfo";

ResultSetrs=conn.executeQuery(sql);

Listlist=newArrayList<>();

try{

while(rs.next()){

Classinfocl=newClassinfo();

cl.setClassID(rs.getString

(1));

cl.setGradeID(rs.getString

(2));

cl.setClassName(rs.getString(3));

list.add(cl);

}

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnlist;

}

//SELECTTOP30*

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

当前位置:首页 > 考试认证 > 公务员考试

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

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