大型软件项目实训报告题目:交友网站系统选题来源:校外指导教师:姓名:班级:学号:辽宁工程技术大学软件学院目录1.序言 (3)选题背景 (3)选题目的及意义 (3)选题完成情况 (3)2.项目需求分析 (3)项目功能需求 (3)项目性能需求 (3)3.项目概要设计 (4)系统功能结构设计 (4)4.项目详细设计 (5)模块1描述 (5)功能描述 (5)性能描述 (5)界面构建 (5)详细设计 (6)利用工厂化模型 (6)跳转界面优化设计 (6)用户登录时session验证设计 (6)成绩评定 (13)1.序言选题背景目前在电子商务大行其道的大情况下,越来越多的人选择上交友网站选择交友,网站上交友可以在家“交友”,交友不受时间,地点的限制,同时,获得较大的人物信息,可以交到不在当地的朋友。
更重要的是网上交友比传统的交友更加的放便。
但同时网上交友也有很大的风险,遇到钓鱼网站,可能会泄露个人资料。
在现代社会里,网上交友作为一种网络的服务形式得到了越来越多的人的认可,也已经成为近两年广泛受到用户欢迎和商家请来的网络服务项目。
网络技术的发展为交友的模式的革新带来了新的机遇,现代网络交友将结合现代网络技术,多媒体与传统沟通与学习的优势,改变传统名对面形式的交友方式。
选题目的及意义本文通过JAVA编程技术,使用主流的面向对象开发工具进行开发,这里我们主要用到,,mysql等,因为要求交友的网站具有可视美观的操作界面,所以我们用基于c/s的myeclipse的作为开发的环境。
同时,本程序对系统要求配置较低,运行速度快,而却对数据库管理要求较低。
本程序数据库采用mysql进行数据存储,该数据库可实现关系较为简单的数据管理。
选题完成情况2012年12月25日选题后一个月内完成。
2.项目需求分析项目功能需求1用户登录验证功能2用户注册功能3查看用户列表功能4添加用户图片显示功能5 删除修改用户信息功能项目性能需求该系统是专门用于异地的交友的群,实现了用户的登录和注册功能,可以在本地上传图片以及后续的添加删除操作等,不同用户可以查看全部的用户信息但不可以修改,只有当前登录用户才可以修改自己的基本信息。
它应该具有开放性、方便性和灵活性。
在本文中主要分析了用户交友网站的界面设计,功能介绍,使用说明以及系统需求,为用户提供可靠地交友平台。
用户可以是学校等单位的教师及学生和企事业单位的培训部门,有助于增加同时,学生之间的沟通和了解,有利于企业的团结和学校的交友。
3.项目概要设计系统功能结构设计要实现一个软件系统,首先应该进行需求分析,这样才能令设计出的软件满足用户的各项功能。
用户注册登录,如果密码正确,则进入菜单界面,进入在交友系统,结构图如下:图3-1 在线交友系统统结构图登录密码正确用户列表界面后台信息录入注册修改导入基本信息显示其他用户信息4.项目详细设计模块1描述功能描述(一)必备功能说明:用户登录设置:查询数据库,匹配密码,验证码。
用户注册设置:插入用户基本信息,设置验证码。
基本信息库管理:基本信息分为,用户的基本信息,和图片信息。
验证用户的安全性:对非登录用户,不能修改用户信息。
(二)开发语言与开发环境:MyEclipse、Java、MySql数据库性能描述要实现一个软件系统,首先应该进行需求分析,这样才能令设计出的软件满足用户的各项功能。
该系统可以实现多个用户同时登录并参看全部用户的信息。
实现在本地上传图片功能。
登录和注册时进行安全验证使网友能够安全和真实的交到朋友。
界面构建1、应用了4个基本的静态的页面,分别是login,list。
Regist,listdetial。
2、登陆界面的主要功能是查询数据库信息,并进行判断,返回错误或者跳转到用户类表界面。
3、注册界的主要功能是向数据库插入数据,并进行安全验证,注册成功跳转到登录界面,并创建保存用户图片的文件夹。
4、当用户在进行个别录入、删除或错误输入操作时,会弹出相应对话框提示用户。
如当录入成功或删除成功会跳转到登陆界面中,当录入、删除失败以及输入不当时,弹出错误以及简单的错误原因提示用户重新操作。
5、页面布局尽量合理,各组件位置分布均匀美观。
6、用户列表界面,可以查看所有用户的基本信息,对当前用户的基本信息进行修改和查看。
7、用户详细界面,可以对当前用户的信息进行修改和删除,并向数据库进行修改,同时添加或删除当前用户图片。
详细设计利用工厂化模型如果dao中不只是一个接口的话,我们在service调用实现类就有一定的麻烦,不知道那个实现类完成那个接口。
所以就有了工厂模型,factory定义一个工厂工具类,再定一个,configutil工具类,用configutil 读配置文件,并且提供相应的方法,来方便获得该配置文件的内容。
当中ClassLoader类类加载器负责查找.class文件,并且将该文件的内容读入到,方法区,然后依据这些内容构造一个对应的class对象。
(ClassLoader loader )类加载器的getResourceAsStream方法,会依据classpath搜索资源文件,并且转换成一个输入流。
这样就可以通过接口找出实现类的名称,在通过factroy类,利用反射创建出一个实例。
反射可以应用一个类的名字创建一个实例。
跳转界面优化设计我们现在在文件中用到了太多的跳转,代码太多。
如何让一个servlet处理多种不同的请求,首先获取到地址页面的名称,String action = ("/"),("."));在service方法里面,分析请求资源路径。
然后用if else 判断页面的action名称就可以了。
在文件中<url-pattern>*.action</url-pattern>,匹配所有以.action结尾的请求。
这样就实现了让一个servlet处理多种不同的请求。
用户登录时session验证设计在进行登录操作中,如果直接输入访问,会直接进入到列表界面,登录就失去意义了,所以要在登录时增加一个验证,session验证,浏览器在访问服务器的时候,服务器会先创建一个session对象(该对象有一个id,其值是唯一的,一般称之为sessionId) ,接下来服务器默认会使用cookie机制将sessionId发送给浏览器,浏览器会将这个sessionId保存在内存里面;当浏览器再次访问服务器的时候,会将sessionId发送给服务器,服务器会依据sessionId找到之前创建的session对象。
具体的步骤,首先获得一个session,HttpSession s = (boolean flag);flag =true时,服务器会检查请求当中是否包含sessionId, 如果没有,则创建一个session对象;如果有,服务器会依据sessionId查找对应的session对象,如果找到了,则返回,找不到,会创建一个新的session对象。
当flag = false时,找不到,返回null。
进行session验证,在登录成功以后,在session对象上绑订相关的数据。
("user",user);绑定一个user,然后对list页面进行session验证,Object obj = ("user");if(obj == null){);if("/regist")){String username = ("username");UserDAO dao = new UserDAO();try {User user = (username);if(user != null){("regist_error", "注册错误");("").forward(request, response);}else{user = new User();(user,());int id = (user);/*String path = getServletContext().getRealPath("upload");File file = new File(path + "quals(pwd)){HttpSession session =();("user", user);("");}else{("login_error","登陆错误");("").forward(request, response);}} catch (Exception e) {();}}else if("/list")){UserDAO dao = new UserDAO();try {List<User> users = ();("users", users);("").forward(request, response);} catch (Exception e) {();throw new ServletException(e);}}else if("/userDetail")){int id = ("id"));UserDAO dao = new UserDAO();PicDAO dao2 = new PicDAO();try {User user = (id);List<Pic> pics = (id);("user", user);("pics", pics);("").forward(request, response);} catch (Exception e) {();throw new ServletException(e);}}else if("/upload")){int userId = ("id"));DiskFileItemFactory factory =new DiskFileItemFactory();ServletFileUpload sfu =new ServletFileUpload(factory);try {List<FileItem> items =(request);for(int i=0;i<();i++){FileItem curr = (i);if()){etRealPath("upload");String fileName = ();File file = new File(path + "/pic_" + userId);if (!()) {();}fileName = fileName.substring("/") + 1);(new File(path + "SP网站编程教程[M].第1版, 北京:北京希望电子出版社,2005[4] 白勇.用B/S模式构建在线考试系统[J],重庆电力高等专科学校学报,2003,10(4): 100~130.成绩评定成绩教师签字。