基于JSP的个人信息管理系统的设计与实现.docx
《基于JSP的个人信息管理系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于JSP的个人信息管理系统的设计与实现.docx(17页珍藏版)》请在冰豆网上搜索。
![基于JSP的个人信息管理系统的设计与实现.docx](https://file1.bdocx.com/fileroot1/2023-3/31/664b249a-ade3-4777-aab4-e16ba5a3abd1/664b249a-ade3-4777-aab4-e16ba5a3abd11.gif)
基于JSP的个人信息管理系统的设计与实现
第一章系统分析
1.1需求分析
为了开发一个完美的、功能强大、满足用户的需求的职称外语考试网上报名及成绩管理系统开发系统,我们进行研究调查,进行需求分析,得出如下功能:
考生要想网上报名考试要先填写个人信息存储到数据库中,考生注册以后可以进行个人信息查看、修改、网上交费。
考完试后可以进行网上成绩查询,如果有什么问题可以通过在线问答来解决,同时嗨可以看到其它考生的问题和解决办法。
系统管理员可以对考生进行操作:
考生信息查询、修改,网上成绩录入,按照各种组合进行成绩查询,生成成绩报表,以及对考生在线问答的问题进行回答。
1.2系统功能分析
为了建立一个一个稳定、安全的、兼容的职称外语考试网上报名及成绩管理系统开发,我对系统进行了如下的设计。
1.2.1系统安全性
✧系统安全性:
本系统将采用B/S结构,数据库将采用安全机制级别高的数据库管理平台,整个系统安全稳定;系统成员登录以及进行其它操作都要通过系统验证,防止成员从非正常入口进入系统,系统软件将采用通过身份证和准考证号的双重验证,管理员也要通过用户名,密码的方式验证身份。
✧数据安全性:
系统数据库将采用ORACLE,ORACLE是一个完整的关系数据库管理系统,它还包括用于OLAP和数据挖掘的集成分析功能。
ORACLE满足最大的数据处理系统和商业Web站点对资料及分析的存储要求,同时可以为个人和小企业提供易用的资料存储服务。
ORACLE的结构支持高级的服务器功能,比如行一级的锁定、高级查询优化、数据复制、分布式数据库管理以及分析服务。
✧系统稳定性:
系统将采用JSP中的错误异常处理功能,在发生错误操作时,系统将会给予用户全面的提示,以避免系统的不正常退出。
✧系统兼容性:
系统将采用技术先进的开发语言JSP,具有良好的兼容性,可应用于WINDOWS98/2000/ME/NT等操作系统之上,且对其他任何软件均无影响。
1.2.2系统功能
✧为了保障系统的安全,要经过有效的身份验证才可以登录。
✧为了方便用户管理,系统提供考生注册、登录接口,通过数据库提供的信息以进行验证。
考生可添加详细个人信息,可查看、修改个人信息。
✧在系统里,考生可以通过身份证号和准考证号查询自己的成绩,可以进行在线问答。
✧为了方便系统管理员对考生个人信息的管理,在系统里系统管理员可以对考生进行操作:
考生信息查询,修改,删除功能。
✧为了方便系统管理员对考生成绩的管理,在系统里系统管理员可以对考生成绩进行操作:
网上成绩录入,按照各种组合方式查询成绩,修改成绩,产生成绩报表。
✧在系统里,系统也提供给考生管理功能,考生可以在线提问问题,管理员可以通过后台对考生所提出的问题进行解答。
✧为了解决考生交费问题,系统采用网上交费模式,考生通过网上银行进行交费,即方便了考生,也有助于管理与查收。
第二章系统设计
该系统是集职称外语考试网上报名和成绩管理与一体的网上报名系统。
将网上报名与成绩管理于一体,不仅便于数据库的管理,而且对用户的管理也很方便。
2.1系统总体结构设计
平台以Web服务器Tomcat和数据库软件为支撑,为在平台之上建立的站点提供考生信息管理,成绩管理以及在线问答等功能,各级站点为考生和管理者员供信息浏览和管理服务。
如图系统结构示意图3-1所示:
图2-1系统总体结构示意图
2.2系统模块结构设计
该系统的功能,可以基本被分解为以下几个方面:
✧考生要想进行网上报名,首先要进行注册,填写个人信息,存放到数据库中,方便以后登录。
✧考生可以随时更改用户名和密码,可以进行网上报名,网上交费,查看自己的考试成绩,有问题可以进行在线提问。
✧在系统里系统管理员可以对考生进行操作:
考生的添加、删除。
为了方便系统管理员对考生信息的管理,在系统里系统管理员可以对考生信息进行操作:
查看信息,修改信息,删除考生信息。
在系统里,系统也提供对成绩管理功能,管理员可以网上录入成绩,按照任何组合查询考生成绩,修改成绩,生成成绩报表,在线回答问题等功能。
据分析,系统可以分为客户端和管理员端,客户端分为。
如图3-3系统总体模块图所示:
图2-2系统总体模块图
2.3数据库设计
数据库技术是信息资源管理最有效的手段。
数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及应用系统,有效存储数据,满足用户的信息要求和处理要求。
数据库结构设计的好坏将直接对应系统的效率及实现的效果产生影响。
合理的数据库结构设计可以提高数据库存储的效率,保证数据的完整性和一致性。
设计数据库系统时应该首先充分了解用户各个方面的需求,包括现在和将来的可能增加的需求。
2.3.1数据库概念结构设计
根据前面章节对需求的分析,可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑设计打下基础。
这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。
根据上面的分析可以规划出的实体有:
准考证,考生,成绩,考场,银行,问答。
实体之间关系的E-R图,如图实体之间关系图所示:
图2-3考生-准考证E-R图
图2-4考生-成绩E-R图
2.3.2数据库逻辑结构设计
数据库的概念设计完毕后,现在可以将上面的数据库概念结构转化为某种数据库系统所支持的实际数据库模型,也就是数据库的逻辑结构。
职称外语考试网上报名及成绩管理系统开发系统的数据库中的主要表的设计结果如下面的表格所示。
每个表格在数据库中的一个表。
(1)考生表:
姓名、性别、年龄、照片、学历、单位、身份证号、报考类别报考地区。
表2-1考生表
名称
说明
属性
Id
唯一的编号,主键
Varchar2
Name
考生姓名
Varchar2
Password
密码
Varchar2
Sex
性别
Varchar2
Age
年龄
Varchar2
Image
考生照片
Varchar2
Degree
考生学历
Varchar2
Enterprise
考生的单位或学校
Varchar2
Language
报考的语种
Varchar2
City
报考的城市
Varchar2
(2)准考证:
考号、身份证号,考场号
表2-2准考证表
名称
含义
属性
Sid
唯一编号,主键
Varchar2
Id
考生身份证号
Varchar2
Numbers
考场号
Varchar2
(3)成绩表:
考号、姓名、外语语种、成绩
表2-3成绩表
名称
含义
属性
Sid
考号,唯一编号,主键
Varchar2
Name
考生姓名
Varchar2
Language
报考语种
Varchar2
Score
考生成绩
Varchar2
(4)考场:
考场号考场地址考试时间
表2-4考场表
名称
含义
类型
Numbers
考场号,唯一编号,主键
Varchar2
Address
考场地址
Varchar2
Time
考试时间
Varchar2
(5)银行表:
银行名,账号,密码
表2-5银行表
名称
含义
类型
Bname
银行名
Varchar2
Account
账号,唯一编号,主键
Varchar2
Password
文章讨论区
Varchar2
(6)问答表:
问答号、问题、回答
表2-6问答表
名称
含义
类型
Id
账号,唯一编号,主键
Varchar2
Question
问题
Varchar2
Answer
答案
Varchar2
第三章系统的实现
本人的主要工作是建立职称外语考试网上报名及成绩管理系统,实现考生注册和网上报名,将数据上传到数据库,也可以从数据库中查询考生成绩,进行在线问答。
管理员可以从数据库中读取考生信息进行添加,修改,删除。
可以在线录取考生成绩,修改成绩,以各种组合查询成绩,同时对考生提出的问题进行回答等功能。
本章主要讲述该系统模块的实现的功能以及实现的方法。
3.1登录模块
以下均使用MVC模式
在职称外语考试网上报名及成绩管理系统中,有两类用户:
考生和管理员,如图3—2是考生登录流程图:
输入用户名和密码,单击"登录"按钮后,系统要对输入的内容进行验证。
通过UserLogin.jsp调用UserLoginServlet.java,UserLoginServlet.java
在调用UserLogin.java实现登录。
语句如下:
UserLogin.jsp中:
跳转:
UserLoginServlet.java中:
调用JavaBean:
Stringresult=newBean.UserLogin().select(user);
UserLogin.java中:
查询并比较是否匹配:
Stringsql="select*fromuserswhereusername='"+name+"'";
if(name.equals(rs.getString
(1))&&pass.equals(rs.getString
(2)))
{
return"true";
}
else
{
return"false";
}
3.2网上报名模块
网上报名当学生成功登录到本系统后可以进行网上报名,点击网上报名,进入网上报名,学生填写自己的信息,如姓名,性别,年龄,语种,学历等信息,点击提交就可以将自己的信息提交到数据库中。
如图3—3是考生网上报名流程图:
学生
信息
重新
填写学生
否信息
学生
信息
图3—3考生报名流程
图3—4考生报名接口图
在这个模块中学生填写自己的信息,在EnterOnline.java这个JavaBean中有成员变量存放学生信息,当考生输入自己的信息时就会将参数传给UserEnterOnline.java这个Servlet,UserEnterOnline.java这个Servlet调用EnterOnline.java里面的insert方法将信息插入到数据库中,如果插入成功返回true如果插入失败返回false,然后UserEnterOnline.java这个Servlet中判断如果返回true就跳到UserRegisterSuccess.jsp成功页面,如果返回false跳到UserLoginError.jsp失败页面。
主要代码为:
EnterOnline.jsp中:
跳转到Servlet中:
UserEnterOnline.java中:
取数据:
Stringname=newString(request.getParameter("username").getBytes("ISO8859-1"),"GB2312");
Stringpassword=request.getParameter("password");
Stringsex=newString(request.getParameter("sex").getBytes("ISO8859-1"),"GB2312");
存到JavaBean中:
Bean.EnterOnlineenter=newBean.EnterOnline();
enter.setUsername(name);
enter.setPassword(password);
调用insert(enter)方法:
Stringresult=newBean.EnterOnline().insert(enter);
返回值判断:
if(result.equals("true")){
response.sendRedirect("UserRegisterSuccess.jsp");}
elseresponse.sendRedirect("UserLoginError.jsp");
EnterOnline.java中:
插入数据:
Stringsql="INSERTINTOstudentVALUES(?
?
?
?
?
?
?
?
?
?
)";
Statementst=conn.createStatement();
PreparedStatementps=conn.prepareStatement(sql);
ps.setString(1,enter.getUsername());
ps.setString(2,enter.getPassword());
3.3网上交费模块
考生报考完毕后考生要在指定日期进行网上交费,交完费后会返回给学生准考证信息。
如果填写信息不正确,会提示考生。
如图3—5是考生网上交费的接口图:
如图3—5考生网上交费的接口图
如图3—6返回考生准考证
如图3—7是考生网上交费的流程图:
3—7考生网上交费的流程图
UserFeeOnline.jsp将考生交费是提交上来的数据提交给UserFeeOnline.java的Servlet,在UserFeeOnline.java中先调用Stringresult=newBean.FeeOnline().feein(fee);通过JavaBean中的feein(fee)函数来判断交费是否成功,如果交费成功再调用Bean.UserMessagemessage=newBean.UserMessage();message.message1(userid);调用UserMessage()中的.message1(userid)将考生信息会回到页面上,主要代码:
UserFeeOnline.java中:
取数据:
Stringuserid=request.getParameter("userid");
Stringmoney=request.getParameter("money");
存到fee这个对象中:
fee.setUserid(userid);
fee.setMoney(money);
调用:
Bean.FeeOnlinefee=newBean.FeeOnline();
Stringresult=newBean.FeeOnline().feein(fee);
返回值为true时:
Bean.UserMessagemessage=newBean.UserMessage();
message.message1(userid);
并将值存到request中并调用UserMessage.jsp:
request.setAttribute("sex",message.getSex());
request.setAttribute("age",message.getAge());
request.getRequestDispatcher("UserMessage.jsp").forward(request,response);
FeeOnline.java中:
略
3.4信息修改模块
如果学生信息有错误管理员可以在后台修改学生信息,点击修改信息就返回了所有学生信息返回,想修改哪个学生的信息,就点击那个学生后面的修改,就可以进行修改了,修改完毕提交完了显示学生信息,如下图3-8为修改信息接口图:
图3-8修改信息接口图
当管理员要修改学生信息时会调用AdminAlterMessage.jsp,它中的ArrayListal=newArrayList();al=newEnterOnline().showStudent();这两句话会直接调用EnterOnline.java这个Javabean中的showStudent()方法,并且在这个页面上返回查询的值并输出,当管理员点击修改时就会以doget的形势调用AdminUpdateMessage.java,他会通过Bean.EnterOnlinestudent=newBean.EnterOnline().showStudent(id);调用showStudent(id)方法将要修改的学生信息返回到AdminUpdateMessage.jsp中,然后管理员进行修改,当修改完毕在提交AdminUpdate.java中,在AdminUpdate.java中调用EnterOnline.java
中修改学生信息的函数student.updateStudent(request,id);修改信息,将修改后的信息返回到AdminAlterMessage.jsp中,修改工作就完成了。
主要代码:
AdminAlterMessage.jsp中:
返回所有学生信息:
ArrayListal=newArrayList();
al=newEnterOnline().showStudent();
调用AdminUpdateMessage:
id=<%=student.getUserid()%>">修改
AdminUpdateMessage.java中:
调用showStudent(id),将返回值放到session中:
Bean.EnterOnlinestudent=newBean.EnterOnline().showStudent(id);
session.setAttribute("student",student);
request.getRequestDispatcher("AdminUpdateMessage.jsp").forward(request,response);
AdminUpdate.java中:
调用updateStudent(request,id)方法将值返回到AdminAlterMessage.jsp:
Bean.EnterOnlinestudent=newBean.EnterOnline();
student.updateStudent(request,id);
response.sendRedirect("AdminAlterMessage.jsp");
EnterOnline.java中:
包含以下方法publicStringinsert(EnterOnlineenter)
publicArrayListshowStudent()
publicEnterOnlineshowStudent(Stringid)
publicvoidupdateStudent(HttpServletRequestrequest,Stringid)
第四章结论
4.1课程设计工作总结
半个月的企业级应用软件课程设计课程设计结束了,在这半个月的时间里从盲目到有了目标,从感觉时间很多到忙得不可开交,经历了很多转折点。
第一天选择题目,开始觉得所有的题目觉得都挺简单的,但是后来仔细研究了每个题目觉得每个题目都有他深刻的含义,和难点,听着老师在前面讲述做课程设计的整体思路,当时头都大了,可能是以前从来都没接触过这样的题目,再加上老师说的那么严肃,好象很不容易做,当时就想这可怎么办呀,自己平时上课也很认真听呀,怎么跟上课不一样呢?
后来知道一些同学也选了研究生这道题就决定和他们一起讨论,人多力量大嘛,接下来的几天还算顺利,需求分析,E-R图和表很快就制定好了。
当时觉得原来也不难也很好做。
接下来就开始了编程阶段,觉得自己JAVA图形界面学的好不错,决定做个漂亮的界面,但是当我看到别人漂亮的界面时觉得原来还自以为是其实已经背别人落在后面了。
但是还安慰自己这是数据库课程设计不是JAVA课程设计,只要我把数据库后台做的好一样能行。
时间过得真快2周时间快过去了,我也开始了连数据库的过程,可是机房这些机器好象在跟我作对,怎么也连不上,后来在同学的帮助下终于连上了,当时我真是开心死了。
有一种很大的成就感。
两周过去了,我还有很多功能没有实现,于是决定要全天在机房奋斗,跟同学说好以后一个星期每天都去机房知道完成为止。
接下来这个星期才是最考验我的时候,也是这次作课程设计最有意义的一个星期,最磨练意志的一个星期。
在这一个星期里,曾经绝望过,想过要放弃,也曾开心过,决定一定要坚持下去。
前两次做课程设计也遇到过各种困难,但是都没有这次难。
直到周四我还没有完成所有的功能,还好老师很宽容,决定周六验收,在这里我真的要好好感谢王老师。
正是您和其他老师放弃休息时间换来我宝贵的一天,也让我重新找回了信心,周五下午终于完成了所有工作,当时真实高兴的要跳起来了,看见自己做的到目前为止最大的一项工程,真是无比开心。
程序设计结束了,在这次程序设计中学到了太多太多的东西,有些是在课本中学到的,有些是在课本中学不到了,比如说信心,耐心,决心。
宋老师曾经跟我们说过学软件一定要有耐心,要坐的住冷板凳,现在终于体会到了。
以后无论是做一个小的实验还是一个大的工程都要认真用心去做,还要有耐心,这次我就是因为缺乏信心和耐心差点放弃,还好最后坚持下来了。
这也是一项不小的收获呀。
作课程设计也是一个学习的过程,结果重要,但是过程更重要,因为我们不是只做这一次,我们要学会这个过程,体会其中的深刻内涵。
在作课程设计的过程中知道自己还有那些不足,哪方面需要重点学习。
通过这次课程设计,不仅巩固了以前学的JAVA和数据库知识还学会了用存储过程,我由不了解存储过程,到会使用存储过程,我觉得这就是一次成长,自己研究过的东西记忆会更深刻,可以永远都不会忘记。
对大三学数据库理论更有信心啦。
4.2进一步的工作
由于时间关系,开发工作以发布新闻信息为主,因此系统还存在不足,需要进一步改进和完善。
本系统存在不足和改进方向:
对系统的搜索功能实现的不是很完美,上传功能不是很强,对于javaBean的使用不是很熟练,某些采取的方法不是很科学。
在以后的编程日子,会进行改进。