Java项目考试系统总结

此文章只作为本人的实训总结。

做一个Java项目虽然很难,主要还是因为此前并未深入的学习Java,也没有人带领学习,但是实训总归是结束了,结束之后也需进行总结。

一、工程结构应用分层

1、Java项目中的命名java.com.sicau(川农考试系统)

命名也是需要有科学性的

2、分为5个package

  • 分别为common、controller、dao、entity、service

  • common层:一些工具包,包括时间倒计时处理工具、password的加密与解密、请求数据返回之后的信息

  • controller层:Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。      

自己的理解:如命是一个控制器Controler负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面。

  • dao层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。

自己的理解:数据访问层,全称为Data Access Object,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封装了增删改查基本操作,建议DAO只做原子操作,增删改查

  • entity层:就是属性类,通常定义在model层里面 ,entity层也可被认为作为是model层。一般的实体类对应一个数据表,其中的属性对应数据表中的字段。(说白了就是为了让程序员在对数据库操作的时候不用写SQL语句,就是一个数据库表生成一个类,这样做对数据库操作起来方便,编写代码较少 提高效率,可以使程序员专注逻辑关系 

好处:

1.对对象实体的封装,体现OO思想。

2.属性可以对字段定义和状态进行判断和过滤

3.把相关信息用一个实体类封装后,我们在程序中可以把实体类作为参数传递,更加方便

  • service层:Service层主要负责业务模块的逻辑应用设计。同样是首先设计接口,再设计其实现的类,接着再Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。Service层的业务实现,具体要调用到已定义的DAO层的接口,封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁

自己的理解:相对具体的业务逻辑服务层,也被称为服务,粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务,所以这里也就不会是一个原子操作了,需要事物控制

 

3、思想很重要!代码是基于思想来敲的

二、接口

service层中的接口,对应service中serviceImpl的package。

接口的好处:

  • 减少代码的书写(上边分析的代码重载)
  • 提高了代码的可维护性和扩展性
  • 在团队合作中,代码的规范性

 

三、数据库语句

  1. mapper:是mybtis框架的映射用到,运用SQL语句与mapper映射文件在dao层用
  2. 一些数据库语句:

挑选语句:select

  • SELECT * FROM grade WHERE  id=#{id} and user_id=#{userId} AND paper_id=#{paperId} AND score=#{score}
  • SELECT * FROM paper WHERE id=#{paperId}
  • SELECT * FROM paper WHERE id=#{paperId} AND title = #{title} AND title_time=#{testTime}

插入语句:

  • INSERT INTO paper VALUE (null ,#{title},#{tsetTime})
  • INSERT INTO grade VALUE (null,#{userId},#{paperId},#{score})

删除语句:

  • DELETE from paper where id = #{paperId}
  • DELETE from question where id = #{questionId}

更新语句:

  • UPDATE question set title = #{title} , option_a = #{optionA},option_b = #{optionB},option_c = #{optionC},option_d = #{optionD}  where id = #{id}
  • UPDATE paper set title = #{title} , title_time=#{tsetTime} WHERE id=#{paperId}

 

 

 

 

 

 

 

 

 

 

 

 

 

在用户界面部分,根据需求分析的结果,用户需要一个用户友善界面。在界面设计上,应做到简单明了,易于操作,并且要注意到界面的布局,应突出的显示重要以及出错信息。外观上也要做到合理化,考虑到用户多对网页较熟悉,应尽量向这一方向靠拢。在设计语言上,已决定使用 Java 语言进行编程。 其中管理界面要做到操作简单,易于管理。总的来说,系统的用户界面应作到可靠性、简单性、易学习和使用。 2.4.2 外部接口 硬件接口,在输入方面对于键盘鼠标的输入用标准的输入/输出,对输入进行处理。在输出方面的屏幕和打印机连接以及使用用标准的输入输出进行处理。 2.4.3 内部接口 各模块之间采用函数调用,参数传递,返回值的方式进行信息传递。接口传递的信息将是以数据结构封装了的数据,以参数传递或返回值的形式在各模块间传输 2.5 运行设计 运行程序,执行登录模块,如果是新用户,就进入注册模块,已注册的用户直接进行身份验证进入主界面,通过主界面可以进行在线考试,此时执行考试模块,也可以查询考试成绩、修改个人资料等功能。 2.6 系统数据库设计 数据库是本系统核心和基础。它把本中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。 2.6.1 数据库概念设计 开发在线考试系统时,为了灵活地维护系统,设计了后台管理员模块,通过后台管理员模块可以方便地对整个在线考试系统进行维护。这时,必须建立一个数据表用于存储所有的管理员信息。管理员信息实体E-R 图如图6所示。当考生成功登录在线考试系统后,可以根据需要选择考试的科目,考生不同可能选择的考试科目会不同,系统必须提供一些参加考试的课程,供考生选择。这时,在数据库中应该建立一个存储所有参加课程的数据表。考试课程信息实体E-R图如图7所示。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值