校友录课设报告.docx
- 文档编号:9744222
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:23
- 大小:1.82MB
校友录课设报告.docx
《校友录课设报告.docx》由会员分享,可在线阅读,更多相关《校友录课设报告.docx(23页珍藏版)》请在冰豆网上搜索。
校友录课设报告
选题:
校友录
一、系统分析
1.1需求分析
(1)文字描述
设计一个校友录系统,实现注册、登陆、添加好友、选择学校、寻找班级、创建班级、加入班级、在班级中上传图片、留言等功能,由于时间关系,某些重复的功能尚未实现,如在班级中实现了上传图片,在个人主页中尚未实现,在班级中实现了留言,在个人主页中尚未实现。
在jsp界面,我避免使用java代码,所以大量应用了EL表达式和JSTL标记库。
登陆模块采用struts框架,其他模块采用MVC开发模式,即将系统分解成Model(模型)、View(视图)、Controller(控制)三种部件,业务逻辑和数据库操作与其它层分离,最大限度的提高了代码的重用性,同时也提高了代码的可读性。
MVC模式各部件关系如下图:
(2)本系统名为“大学生之家”,好友可以跨校添加,但查询班级、创建班级、加入班级则必须在本学校内进行,系统数据流图如下:
1.2功能分析
系统主要分三个模块,分别是用户模块、学校模块和班级模块,学校作为两个模块的中间载体,只有选择了学校才可以访问班级模块。
用户模块可以实现注册、登陆、寻找添加好友、选择学校功能,在选择学校之后,方可访问班级模块。
学校模块作为中间连接的模块,没有专属界面,但却起着至关重要的作用,用户只有选择了学校之后,方可进行班级的查询、创建、加入等操作。
班级模块是本系统的主模块,包含的功能和相关的数据库表也最多,且分为管理员和普通成员界面,管理员界面相比普通成员界面多了一个成员管理链接,负责同意或拒绝加入班级的申请。
模块图如下:
二、数据库设计
2.1数据库概念结构设计
根据需求分析可以规划出的实体有:
用户信息实体、学校信息实体、班级信息实体。
实体之间关系的E-R图如下图所示:
2.2数据库逻辑结构设计
(1)用户信息表User_information
字段名
类型
注释
User_id
Varchar(50)
用户ID,主码
User_name
Varchar(20)
用户姓名
User_sex
Varchar(4)
用户性别
User_password
Varchar(20)
用户密码
User_photo
Varchar(50)
用户头像
(2)大学信息表College
字段名
类型
注释
College_province
Varchar(20)
大学所在省
College_name
Varchar(50)
大学校名,主码
(3)用户大学关系表User_college
字段名
类型
注释
User_id
Varchar(40)
用户ID,外码,主码
User_college
Varchar(50)
大学校名,外码
(4)各校班级表,表名为学校名
字段名
类型
注释
Class_name
Varchar(20)
班级名称,主码
Class_manager
Varchar(50)
班级管理员,外码
(5)用户注册时,自动生成用户好友表和用户留言表,用户好友表将用户ID,即邮箱中包含的“@”和“.”替换为“_”,并在开头加一个字母“e”作为表名,用户留言表将用户ID,即邮箱中包含的“@”和“.”替换为“_”,并在开头加一个字母“m”作为表名
用户好友表:
字段名
类型
注释
Friend_id
Varchar(50)
好友ID,外码,主码
Agree
Varchar(4)
是否同意加为好友
用户留言表:
字段名
类型
注释
Friend_id
Varchar(50)
好友ID,外码
Message
Varchar(1000)
留言内容
Time
Varchar(20)
留言时间
(6)用户选择学校时,自动生成用户班级表,确保用户只能创建和加入本学校的班级,将用户ID,即邮箱中包含的“@”和“.”替换为“_”,并在开头加一个字母“c”作为表名
用户班级表:
字段名
类型
注释
Class_name
Varchar(20)
好友ID,外码,主码
Agree
Varchar(4)
管理员是否同意加入班级
(7)用户创建班级时,自动生成班级表和班级留言表,班级表表名为学校名加班级名,班级留言表为“m”加上学校名和班级名
班级表:
字段名
类型
注释
Class_member
Varchar(50)
成员ID,外码,主码
Member_Tel
Varchar(20)
成员联系电话
Member_addr
Varchar(100)
成员地址
Agree
Varchar(4)
管理员是否同意加入班级
班级留言表:
字段名
类型
注释
Class_member
Varchar(50)
成员ID,外码,主码
Message
Varchar(1000)
留言
Time
Varchar(20)
留言时间
三、系统设计
公用类
类名
功能说明
JDBCBean
与数据库建立连接
3.1注册模块
流程图及文件调用结构图如下:
注册模块jsp页面列表如下表所示:
jsp文件名
功能说明
Register.jsp
注册界面
login.jsp
登陆界面
实现该功能模块所涉及的重要类包括:
类名
功能说明
RegisterBean
封装用户注册数据类
JudgeBean
验证用户输入信息是否合法
RegisterServlet
注册控制类
JDBCRegister
判断用户是否存在和将用户输入的信息添加到数据库类
3.2登陆模块
流程图及文件调用结构图如下:
登陆模块jsp页面列表如下表所示:
jsp文件名
功能说明
login.jsp
登陆界面
main.jsp
用户主界面
实现该功能模块所涉及的重要类包括:
类名
功能说明
LoginForm
封装用户登陆数据类
LoginAction
用户登录控制逻辑类
JDBCLogin
验证用户登陆信息与数据库是否一致
3.3用户模块
流程图如下:
用户模块jsp页面列表如下表所示:
jsp文件名
功能说明
main.jsp
用户主页面
MyFriend.jsp
用户好友
FindFriend.jsp
寻找好友页面
MyClass.jsp
我的班级页面
FindClass.jsp
寻找班级页面
CreateClass.jsp
创建班级页面
MyMessage.jsp
留言板页面
实现该功能模块所涉及的重要类包括:
类名
功能说明
SelectMyFriendServlet
我的好友控制类
SearchBean
封装好友信息类
SearchServlet
寻找好友控制类
JDBCMyFriend
在数据库中寻找好友
SelectMyClass
我的班级控制类
FindClassServlet
寻找班级控制类
JDBCFindClass
在数据库中查询我的班级和寻找班级
CreateMyClassServlet
创建班级控制类
JDBCCreateClass
在数据库中添加创建的班级的信息
JoinClassServlet
申请加入班级控制类
FindClassServlet
在数据库中添加申请加入班级的信息
3.4学校模块
流程图及文件调用结构图如下:
学校模块jsp页面列表如下表所示:
jsp文件名
功能说明
MySchool.jsp
让用户选择省
Schools.jsp
让用户选择学校
实现该功能模块所涉及的重要类包括:
类名
功能说明
JDBCChangeInformation
负责学校模块在数据库中的操作
ProvinceServlet
查询数据库中学校所在的省的控制类
ProvinceSchoolServlet
查询用户选择的省都有哪些学校的控制类
MySchoolServlet
提交用户选择学校的信息
SelectMyClassServlet
查看我的班级
3.5班级模块
流程图如下:
如用户模块jsp页面列表如下表所示:
jsp文件名
功能说明
ClassMain.jsp
班级主页面
ClassMemberResult.jsp
管理员同意加入班级
ClassMember.jsp
显示班级所有成员
ClassAlbum.jsp
班级相册
AddPhoto.jsp
上传照片
MemberTelAddr.jsp
班级成员通讯录
Message.jsp
班级留言板
实现该功能模块所涉及的重要类包括:
类名
功能说明
AddPhotoServlet
上传图片控制类
AgreeMemberServlet
同意好友加入班级控制类
AlbumServlet
相册显示控制类
ClassMemberResult
查看申请加入的成员
ClassMemberServlet
显示班级成员控制类
EnterClassServlet
进入班级主页控制类
JudgeMemberBean
封转同意加入成员的表单
LeaveMessageServlet
留言控制类
MemberIdNameBean
封装成员信息
MemberTelAddrBean
封装成员通讯信息
MemberTelAddrServlet
查看通讯录控制类
MessageBean
封装留言信息
MessageServlet
显示留言控制类
MyTelAddrServlet
修改我的通讯信息控制类
JDBCEnterClass
班级模块关于数据库操作类
四、系统实现
4.1登陆功能实现
登陆采用struts框架,LoginForm为登陆表单对象,声明ActionErrorsvalidate(ActionMappingmapping,javax.servlet.http.HttpServletRequestrequest)表单校验框架,为表单类编写消息资源文件ApplicationResources.properties,内容如下:
#Resourcesforparameter'com.yourcompany.struts.ApplicationResources'
#ProjectLession_Design
login.idNullError=用户名不能为空
login.pwNullError=密码不能为空
login.idError=该用户名不存在
login.pwError=密码错误
用native2ascii.exe小工具将struts转换成ApplicationResources_zh.properties和ApplicationResources_zh_CN.properties,语句如下:
native2ascii-encodinggb2312ApplicationResources.propertiesApplicationResources_zh.properties
native2ascii-encodinggb2312ApplicationResources.propertiesApplicationResources_zh_CN.properties
在struts-config.xml中配置:
scope="request"validate="true"input="/login.jsp"> 在LoginAction中,若验证有误,返回登陆界面,显示错误类型,若验证无误,则执行下面的语句,跳转到“success”,即main.jsp: returnmapping.findForward("success"); LoginAction继承Action类,登陆界面如下: 登陆验证成功,则进入用户主页面,在用户主页面中,运用JSTL标记库将需要用到的用户信息定义在session作用范围内,部分代码如下: <%@tagliburi="prefix="c"%> setvar="user_name"value="${user_name}"scope="session"> set> setvar="user_id"value="${user_id}"scope="session"> set> setvar="user_college"value="${user_college}"scope="session"> set> 主页面采用分层模式,无须频繁更换界面,简洁明了,截图如下: 4.2用户模块实现 由于篇幅关系,取其中主要功能进行说明。 4.2.1寻找好友 寻找好友可只根据姓名,或学校,或姓名和学校三种查询条件查找好友,查询结果以复选框的形式显示,在jsp界面中,我避免出现java代码,所以,复选框部分,用EL表达式和JSTL标记库来实现,并排除用户本身,方便用户批量添加好友,部分代码如下: forEachitems="${requestScope.result}"var="next"varStatus="status"> iftest="${next.friend_id! =sessionScope.user_id}"> if> forEach> iftest="${notemptyrequestScope.result}"> if> 效果如下图: 4.3学校模块实现 学校模块本来想将学校省份和学校放在一个界面中,但能力有限,做不出用下拉框结果监听单选框的效果,所以想了一个笨方法,就是先调用ProvinceServlet,通过servlet访问JDBCChangeInformation提取数据库中省份信息,反馈给ProvinceSchoolServlet,servlet再将结果传递给Schools.jsp,用户选择好学校后,再通过MySchoolServlet和JDBCChangeInformation完成用户择校。 点击“设置”,从数据库中提取所有学校的省份,使用EL表达式和JSTL标记库实现下拉框。 选择好省份后,点击“确定”,显示该省份所有大学,界面如下: 选择好学校后,无论是更新还是重新插入一条信息,都提示用户“设置学校成功! ” 4.4班级模块实现 若用户尚未选择学校,则在点击“我的班级”、“寻找班级”和“创建班级”时会转到NoSchool.jsp,提示用户“您还未选择学校,请在设置中选择您所在的学校! ” 用户设置好自己的学校后,点击寻找班级,将出现如下界面: 输入班级名称后,系统将在用户所在学校的班级里搜索该班级,如果没有这个班级,提示用户“该班级不存在,您可以创建这个班级! ”如果这个班级存在,则将班级和管理员信息反馈给用户,界面如下: 点击“加入班级按钮”后,系统提示“请等待管理员核实您的信息…”此处是通过数据库建表时设置的一个“Agree”属性实现的,当用户申请加入班级时,在班级表和用户班级表中各插入一条数据,将Agree置为“0”,表示该用户申请加入班级,但尚未通过审核。 另一边的管理员,在再次进入班级主页时,将收到申请加入班级的同学信息,当管理员同意用户加入时,将班级表和用户班级表中对应的用户的“Agree”属性置“1”,表明管理员同意该用户通过审核,加入班级,部分代码如下: publicintJDBCJoinClass(Stringuser_school,Stringuser_class,Stringuser_id)throwsSQLException { JDBCBeancon=newJDBCBean(); Statementsql=con.JDBCConnection(); intok=sql.executeUpdate("insertinto"+user_school+user_class+"values('"+user_id+"','','','0');"); if(ok==1) { chartemp[]=user_id.toCharArray(); Stringuserclasstable="c"; inti; for(i=0;i { if(temp[i]=='.'||temp[i]=='@') { temp[i]='_'; } userclasstable=userclasstable+temp[i]; } ok=sql.executeUpdate("insertinto"+userclasstable+"values('"+user_class+"','0');"); } con.JDBCClose(); returnok; } 管理员界面如下,请注意,只有身份是“管理员”时,“成员管理”链接才会显示: 点击“成员管理”链接,显示如下: 管理员在申请人前面的复选框中打钩后,点击“同意”按钮,则提示“添加成员成功! ” 当申请人在下一次登陆系统时,点击“我的班级”链接,则经过管理员同意加入的班级会出现,界面如下: 用户选中班级后,点击“进入班级主页”按钮,界面如下,显示用户的身份为“班级成员”,“成员管理”链接不显示: 用户点击班级相册,可查看班级相册,界面如下: 用户点击“上传图片”按钮,则进入上传界面,可上传图片,界面如下: 用户点击“留言板”链接,则显示留言板,用户在上方留言后,留言用户、留言内容、留言时间可立即在下方显示。 界面如下: 五、总结及展望 通过做课程设计,我学会了许多平时学不到的知识,并且动手能力的到了大大的提升。 在本次课程设计中我了解到,要开发一个好的项目一定要先做好规划,按照软件的开发过程,详细地写好每一个必要的文档。 软件文档的最主要目标是传达一个系统的技术要素和使用方法,第二个目标是提供软件开发过程中的需求,决策,行为,角色和责任的书面记录。 在课程设计之初,我先是构思题目的E-R图,尽量使各个实体之间的关系清晰明了,减少数据冗余。 光是构思就用了三天的时间,虽然如此,当构思清晰后再动手,思路也清晰很多,编起代码来也得心应手。 通过这次课程设计,加深了我对JSP基本知识的理解,掌握使用struts和MVC模式进行软件设计的基本方法,掌握了EL表达式和JSTL标记库的用法,并了解了它们在jsp系统开发中的有点,同时提高了我运用数据库解决实际问题的能力。 虽然我的校友录系统还有很多不足,但最终实现了给定的应用要求,构造出了相对合理的数据库模式,使之能够有效地存储数据,满足了信息要求和处理要求。 通过这次实验让我熟悉了servlet、JavaBean封装、数据库调用的一些基本知识,能够把所学的知识联系起来做成一个相对较大的系统,让我在运行系统时,小有成就感,就是这种成就感,让我喜欢编程。 经过一学期的学习,让我对JSP的知识有了大概的了解,但动手能力却还是没有得到提高,只能是纸上谈兵,经过这次实验,既锻炼了我的动手能力,也让我把把本学期学习的主要知识都结合起来,并且我开始考虑一个项目的架构问题,这对学软件的学生来说是一个质的飞跃,所以我从中受益匪浅。 在实验中,我也遇到了很多问题,通过查找资料,错误排查,我的自学能力也得到了很大的提高,而且通过自己努力解决的问题,印象更为深刻。 现在我对JSP和网页的设计产生了浓厚的兴趣,我会在以后的学习和工作中继续努力学习。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 校友录 报告