JSP课程设计模板.docx
《JSP课程设计模板.docx》由会员分享,可在线阅读,更多相关《JSP课程设计模板.docx(23页珍藏版)》请在冰豆网上搜索。
![JSP课程设计模板.docx](https://file1.bdocx.com/fileroot1/2023-1/5/9280129e-25bc-4635-9fc3-5ad937939d2a/9280129e-25bc-4635-9fc3-5ad937939d2a1.gif)
JSP课程设计模板
大连科技学院
JSP应用技术
题目QQ登陆系统
学生姓名张娇 专业班级软件工程(茅)11-2
指导教师刘瑞杰职称 讲师
所在单位信息科学系软件教研室
系主任王立娟
完成日期2014年10月17日
1.前言
1.1问题提出
随着嵌入式的发展,近年来,嵌入式在社会发展中占据着越来越重要的地位。
我们日常生活中的手机,电子手表,MP3,医疗设备,汽车导航等等,到处可见嵌入式相关的东西。
以前很多手动式的操作由嵌入式设备的代替后运行效率和方便程度都有了明显的提高。
目前嵌入式相关的技术已经成为未来世界发展的主流方向。
与此同时,网络的发展更是火遍了全球,几乎80%以上的人都会上网。
可以说已经成为人们的生活的一部分。
由以上可想而知,嵌入式联网功能定会是未来的一种趋势。
TCP/IP(通常它是指传输控制协议/网际协议,TransmissionControlProtocol/InternetProtocol)是发展至今最成功的通信协议,它被用于当今所构筑的最大的开放式网络系统Internet之上就是其成功的明证。
Internet最初的设计是为了满足美国国防的需要,具体来讲就是使美国政府即使在遭受核打击时也能保证通信不间断,TCP/IP就是用于这个目的的。
今天,Internet已经发展得更加商业化,更加面向消费者,尽管基本目的发生了改变,但其最初的所有质量标准(也就是开放式、抗毁性和可靠性)依然是必需的。
这些特性包括可靠传输数据、自动检测和避免网络发生错误的能力。
更重要的就是TCP/IP是一个开放式通信协议,开放性意味着在任何组合间,不管这些设备的物理特征有多大差异,都可以进行通信。
1.2研究意义
目前,嵌入式设备与TCP/IP协议的结合已经成为了必然的趋势。
但是嵌入式设备的容量小,处理速度慢等原因。
不可能会使用像普通PC机那样一样的TCP/IP协议支持系统。
所以要实现适合嵌入式设备的TCP/IP协议,是一个首要的问题。
这就要考虑在原有的协议的基础上对TCP/IP协议进行裁剪,使之留下有用的功能更适合于我们的嵌入式系统。
目前有部分的嵌入式设备上已经实现了相应的TCP/IP协议。
不过对于ARM这种比较流行的芯片来说针对于部分型号芯片的TCP/IP协议的实现并没有实现。
以LPC2124芯片为例,市面上很少会出现此类型号的匹配产品。
为了让这些型号的芯片也能够使用上功能强大的TCP/IP协议。
这就需要我们开发出具体针对这些芯片的TCP/IP协议。
为了使做出的协议更实用,成本更低。
配合免费稳定的UCOSII等操作系统也是必不可少的。
2.系统需求分析
2.1功能分析
QQ登陆系统仿QQ的登陆界面完成学习目的,功能包括了帐号、密码的注册、清空及登录,而注册界面包含了帐号、密码、姓名、年龄等信息,还加入了修改密码的界面,简单地说就是QQ登陆界面的简化版本。
2.1系统包含的类及类之间的关系
本系统包含三个JAVA源文件,四个JSP页面。
1.AddBean.java该文件用于添加用户账号、密码、出生日期、名字等信息
2.QueryBean.java该文件为查询用户信息组件的文件,通过QueryBean扩展查询功能
3.Conditionbean.java该文件为条件查询用户信息文件
图2-1系统功能模块关系图
输入数据
出错信息输出数据
登录信息
正确并更新
个人更新信息
错误信息
图2-2数据流图
2.2系统使用数据字典:
(1)成员变量名如表2-1
数据元素
数据类型
数据长度
姓名
varChar()
10
账号
String()
50
性别
varChar()
10
地址
Varchar()
50
还回信息
bufferString()
100
(2)方法见表2-2
方法名
功能
备注
getAddmessage()
向数据库添加数据
还回字符串类型的,判断书否数据添加成功。
queryResult()
还回查询结果
还回字符串类型的,查看用户的基本个人信息
方法名
功能
备注
setDatabaseName
设置数据库名
设置需要传参
getDatabaseName
获取数据库名
获取需要return还回
setTableName()
设置表名
设置和获取数据
getTableName()
获取表名
setPwd
设置密码
setPwd
获取密码
3.数据库的概要结构设计
概念结构设计是将分析得到的用户需求抽象为信息结构(即概念模型)的过程,它是整个数据库设计的关键。
为了把用户的数据要求清晰明确的表达出来,通常要建立一种面向问题的数据模型,按照用户的观点来对数据和信息建模。
最常用的概念性数据模型就是ER模型。
以下是本系统涉及到数据抽象后的E-R图。
3.1数据抽象
基本信息表图3-1
修改表信息图3-2
数据库信息图3-3
3.2设计全局概念模式
各个局部视图即分E-R图建立好后,还需要对它们进行合并,集成为一个整体的概念数据结构即全局E-R图。
(1)合并分E-R图,生成初步E-R图
合并分E-R图时并不能简单地将各个分E-R图画到一起,而是必须着力消除各个分E-R图中不一致的地方,以形成一个能为全系统中所有用户共同理解和接受的统一概念模型。
合理消除各分E-R图的冲突,合并分E-R图的主要工作与关键所在。
E-R图中的冲突有三种:
属性冲突,命名冲突结构冲突。
①属性冲突
属性域冲突:
属性值的类型、取值范围或取值集合不同。
属性取值单位冲突。
②命名冲突
命名不一致可能发生在实体名、属性名或联系名之间,其中属性的命名冲突更为常见。
一般表现为同名异义或异名同义。
同名异义:
不同意义的对象在不同的局部应用中具有相同的名字。
异名同义(一义多名):
同一意义的对象在不同的局部应用中具有不同的名字。
命名冲突可能发生在属性级、实体级、联系级上。
其中属性的命名冲突更为常见。
解决命名冲突的方法是通常用讨论、协商等行政手段加以解决。
③结构冲突(有三类结构冲突)
同一对象在不同应用中具有不同的抽象
解决方法:
通常是把属性变换为实体或把实体变换为属性,使同一对象具有相同的抽象。
变换时要遵循两个准则。
同一实体在不同局部视图中所包含的属性不完全相同,或者属性的排列次序不完全相同。
解决方法:
使该实体的属性取各分E-R图中属性的并集,再适当设计属性的次序。
实体之间的联系在不同局部视图中呈现不同的类型
解决方法:
根据应用语义对实体联系的类型进行综合或调整。
(2)消除不必要的冗余,设计基本E-R图
冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其他联系导出的联系。
冗余数据和冗余联系容易破坏数据库的完整性,给数据库维护增加困难。
采用分析的方法来消除数据冗余,以数据字典和数据流图为依据,根据数据字典中关于数据项之间逻辑关系的说明来消除冗余。
前面图3-1和图3-2在形成初步E-R图后,以及消除冗余联系,便可得到基本的E-R模型,如下图3-3所示
1
1
Nn
11
图3-3优化后的全局E-R图
4.数据库的逻辑结构设计
概念结构是各种数据模型的共同基础。
为了能够用某一DBMS实现用户需求,还必须将概念结构进一步转化为相应的数据模型,这正是数据库逻辑结构设计所要完成的任务。
一般的逻辑结构设计分为以下三个步骤:
1.将概念结构转化为一般的关系、网状、层次模型。
2.将转化来的关系、网状、层次模型向特定DBMS支持下的数据模型转换。
3.对数据模型进行优化。
4.1形成初始的关系模式
(1)一个实体转换为一个关系模式。
关系的属性:
实体的属性;关系的键:
实体的键
(2)一个m:
n联系转换为一个关系模式。
关系的属性:
与该联系相连的各实体的键以及联系本身的属性。
关系的键:
各实体键的组合。
(3)一个1:
n联系可以转换为一个关系模式
关系的属性:
与该联系相连的各实体的码以及联系本身的属性
关系的码:
n端实体的键
(4)一个1:
1联系可以转换为一个独立的关系模式。
关系的属性:
与该联系相连的各实体的键以及联系本身的属性
关系的候选码:
每个实体的码均是该关系的候选码
将图3-3中四个实体分别转换为关系模式(带下划线的为主键):
用户(账号,姓名,性别,地址)
密码(密保,账号)
数据库(数据库名,表名)
将图3-3中的四个联系也转换成关系模式:
属于(账号,表名)
修改(账号,密保,)
拥有(账号,表名)
5.系统的实现与调试
用SQLServer2000数据库管理系统建立数据库结构,加载数据,实现各种查询,根据系统功能建立视图等对象,并能对数据库做简单的维护操作。
5.1主界面运行效果
图5-1用户注册页面
注册失败的话,就要按题示重新注册。
图5-2MM登录
6代码
QueryBean.Java源代码
packagetom.jiafie;
importjava.sql.*;
publicclassQueryBean{
StringdatabaseName="";
StringtableName="";
Stringuser="";
Stringsecret="";
StringBufferqueryResult;
publicQueryBean(){
queryResult=newStringBuffer();
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(Exceptione){
}
}
publicvoidsetDatabaseName(Strings){
databaseName=s.trim();
queryResult=newStringBuffer();
}
publicStringgetDatabaseName(){
returndatabaseName;
}
publicvoidsetTableName(Strings){
tableName=s.trim();
queryResult=newStringBuffer();
}
publicStringgetTableName(){
returntableName;
}
publicvoidsetSecret(Strings){
secret=s.trim();
queryResult=newStringBuffer();
}
publicStringgetSecret(){
returnsecret;
}
publicvoidsetUser(Strings){
user=s.trim();
queryResult=newStringBuffer();
}
publicStringgetUser(){
returnuser;
}
publicStringBuffergetQueryResult(){
Connectioncon;
Statementsql;
ResultSetrs;
try{
queryResult.append("");
Stringuri="jdbc:
microsoft:
sqlserver:
//localhost:
1433;DatabaseName="+databaseName;
Stringid=user;
Stringpassword=secret;
con=DriverManager.getConnection(uri,id,password);
DatabaseMetaDatametadata=con.getMetaData();
ResultSetrs1=metadata.getColumns(null,null,tableName,null);
int字段个数=0;
queryResult.append("
");while(rs1.next()){
字段个数++;
StringclumnName=rs1.getString(4);
queryResult.append("
"+clumnName); } queryResult.append(" |
");
sql=con.createStatement();
rs=sql.executeQuery("SELECT*FROM"+tableName);
while(rs.next()){
queryResult.append("
");for(intk=1;k<=字段个数;k++){
queryResult.append("
"+rs.getString(k)); } queryResult.append(" |
");
}
queryResult.append("");
con.close();
}
catch(SQLExceptione){
queryResult.append("请输入正确的用户名和密码");
}
returnqueryResult;
}
}
AddBean.java
packagetom.jiafie;
importjava.sql.*;
publicclassAddBean{
String
zhanghao="",
mima="",
name="",
nicheng="",
sex="",
birthday="",
addrass="",
answer="";
StringaddMessage="";
publicAddBean(){
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(Exceptione){}
}
publicvoidsetZhanghao(Strings){
zhanghao=s.trim();
}
publicvoidsetMima(Strings){
mima=s.trim();
}
publicvoidsetName(Strings){
name=s.trim();
}
publicvoidsetNicheng(Strings){
nicheng=s.trim();
try{
bytebb[]=nicheng.getBytes("ISO-8859-1");
nicheng=newString(bb,"gb2312");
}
catch(Exceptione){}
}
publicvoidsetSex(Strings){
sex=s.trim();
try{
bytebb[]=sex.getBytes("ISO-8859-1");
sex=newString(bb,"gb2312");
}
catch(Exceptione){}
}
publicvoidsetBirthday(Strings){
birthday=s.trim();
}
publicvoidsetAnswer(Strings){
answer=s.trim();
try{
bytebb[]=answer.getBytes("ISO-8859-1");
answer=newString(bb,"gb2312");
}
catch(Exceptione){}
}
publicvoidAddrass(Strings){
addrass=s.trim();
try{
bytebb[]=addrass.getBytes("ISO-8859-1");
addrass=newString(bb,"gb2312");
}
catch(Exceptione){}
}
publicStringgetAddMessage(){
StringinsertCondition="insertQQvalues('"+zhanghao+"','"+mima+"','"+name+"','"+nicheng+"','"+sex+"','"+addrass+"','"+answer+"','"+birthday+")";
Stringstr="";
Connectioncon;
Statementsql;
try{
Stringuri="jdbc:
microsoft:
sqlserver:
//127.0.0.1:
1433;DatabaseName=factory";
con=DriverManager.getConnection(uri,"sa","sa");
sql=con.createStatement();
if(zhanghao.length()>0&&mima.length()>0){
intm=sql.executeUpdate(insertCondition);
if(m!
=0){
str="账号申请成功啦!
";
}
else{
str="账号申请失败";
}
}
else{
str="账号密码不能为空";
}
con.close();
}
catch(SQLExceptione){
str="请重新输入!
";
}
returnstr;
}
}
ConditionBean.java
packagetom.jiafie;
importjava.sql.*;
publicclassConditionBean{
Stringzhanghao,mima;
StringBufferqueryResultByMima;
StringBufferqueryResultByZhanghao;
publicConditionBean(){
queryResultByZhanghao=newStringBuffer();
queryResultByMima=newStringBuffer();
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(Exceptione){}
}
publicvoidsetZhanghao(Strings){
zhanghao=s.trim();
queryResultByZhanghao=newStringBuffer();
queryResultByMima=newStringBuffer();
}
publicvoidsetMima(Strings){
mima=s.trim();
queryResultByMima=newStringBuffer();
queryResultByZhanghao=newStringBuffer();
}
publicStringgetZhanghao(){
returnzhanghao;
}
publicStringgetMima(){
returnmima;
}
publicStringBuffergetQueryResultByZhanghao(){
Stringcondition="select*fromQQwherezhanghao='"+zhanghao+"'andmima='"+mima+"'";
queryResultByZhanghao=f(condition);
returnqueryResultByZhanghao;
}
privateStringBufferf(Stringcondition)
{
StringBufferstr=newStringBuffer();
Connectioncon;
Statementsql;
ResultSetrs;
try{
Stringuri="jdbc:
microsoft:
sqlserver:
//127.0.0.1:
1433;DatabaseName=factory";
con=DriverManager.getConnection(uri,"sa","sa");
sql=con.createStatement();
rs=sql.executeQuery(condition);
str.append("");
str.append("str.append("str.append("str.append("str.append("str.append("while(rs.next()){
str.append("
");str.append("
(1)); str.append(" | (2)); str.append(" | str.append(" | str.append(" | str.append(" | str.append(" |
");
}
str.append("");
con.close();
}
catch(SQLExceptione){
System.out.println(e);
}
returnstr;
}
}