大连科技学院JSP应用技术题目QQ登陆系统学生姓名张娇专业班级软件工程(茅)11-2指导教师刘瑞杰职称讲师所在单位信息科学系软件教研室系主任王立娟完成日期 2014年10月17日目录1.前言 (3)1.1 问题提出 (3)1.2 研究意义 (3)2.系统需求分析 (4)2.1功能分析 (4)2.1系统包含的类及类之间的关系 (4)2.2 系统使用数据字典: (5)3.数据库的概要结构设计 (7)3.1数据抽象 (7)3.2设计全局概念模式 (8)4.数据库的逻辑结构设计 (10)4.1 形成初始的关系模式 (10)5.系统的实现与调试 (11)5.1主界面运行效果 (11)6代码 (12)1.前言1.1 问题提出随着嵌入式的发展,近年来,嵌入式在社会发展中占据着越来越重要的地位。
我们日常生活中的手机,电子手表,MP3,医疗设备,汽车导航等等,到处可见嵌入式相关的东西。
以前很多手动式的操作由嵌入式设备的代替后运行效率和方便程度都有了明显的提高。
目前嵌入式相关的技术已经成为未来世界发展的主流方向。
与此同时,网络的发展更是火遍了全球,几乎80%以上的人都会上网。
可以说已经成为人们的生活的一部分。
由以上可想而知,嵌入式联网功能定会是未来的一种趋势。
TCP/IP(通常它是指传输控制协议/网际协议,Transmission Control Protocol / Internet Protocol)是发展至今最成功的通信协议,它被用于当今所构筑的最大的开放式网络系统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 系统使用数据字典:(2)方法见表2-23.数据库的概要结构设计概念结构设计是将分析得到的用户需求抽象为信息结构(即概念模型)的过程,它是整个数据库设计的关键。
为了把用户的数据要求清晰明确的表达出来,通常要建立一种面向问题的数据模型,按照用户的观点来对数据和信息建模。
最常用的概念性数据模型就是ER模型。
以下是本系统涉及到数据抽象后的E-R图。
3.1数据抽象基本信息表图3-1修改表信息图3-2数据库信息图3-33.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所示图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.系统的实现与调试用SQL Server 2000数据库管理系统建立数据库结构,加载数据,实现各种查询,根据系统功能建立视图等对象,并能对数据库做简单的维护操作。
5.1主界面运行效果图 5-1 用户注册页面注册失败的话,就要按题示重新注册。
图5-2 MM登录6代码QueryBean.Java源代码package tom.jiafie;import java.sql.*;public class QueryBean {String databaseName="";String tableName="";String user="";String secret="";StringBuffer queryResult;public QueryBean(){queryResult=new StringBuffer();try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");}catch(Exception e){}}public void setDatabaseName(String s){databaseName=s.trim();queryResult=new StringBuffer();}public String getDatabaseName(){return databaseName;}public void setTableName(String s){tableName=s.trim();queryResult=new StringBuffer();}public String getTableName(){return tableName;}public void setSecret(String s){secret=s.trim();queryResult=new StringBuffer();}public String getSecret(){return secret;}public void setUser(String s){user=s.trim();queryResult=new StringBuffer();}public String getUser(){return user;}public StringBuffer getQueryResult(){Connection con;Statement sql;ResultSet rs;try{queryResult.append("<table border=1>");Stringuri="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName="+databas eName;String id=user;String password=secret;con=DriverManager.getConnection(uri,id,password);DatabaseMetaData metadata=con.getMetaData();ResultSet rs1=metadata.getColumns(null,null,tableName,null);int字段个数=0;queryResult.append("<tr>");while(rs1.next()){字段个数++;String clumnName=rs1.getString(4);queryResult.append("<td>"+clumnName);}queryResult.append("</tr>");sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM "+tableName);while(rs.next()){queryResult.append("<tr>");for(int k=1;k<=字段个数;k++){queryResult.append("<td>"+rs.getString(k));}queryResult.append("</tr>");}queryResult.append("</table>");con.close();}catch(SQLException e){queryResult.append("请输入正确的用户名和密码");}return queryResult;}}AddBean.javapackage tom.jiafie;import java.sql.*;public class AddBean {Stringzhanghao="",mima="",name="",nicheng="",sex="",birthday="",addrass="",answer="";String addMessage="";public AddBean(){try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");}catch(Exception e){}}public void setZhanghao(String s){zhanghao=s.trim();}public void setMima(String s){mima=s.trim();}public void setName(String s){name=s.trim();}public void setNicheng(String s){nicheng=s.trim();try{byte bb[]=nicheng.getBytes("ISO-8859-1");nicheng=new String(bb,"gb2312");}catch(Exception e){}}public void setSex(String s){sex=s.trim();try{byte bb[]=sex.getBytes("ISO-8859-1");sex=new String(bb,"gb2312");}catch(Exception e){}}public void setBirthday(String s){birthday=s.trim();}public void setAnswer(String s){answer=s.trim();try{byte bb[]=answer.getBytes("ISO-8859-1");answer=new String(bb,"gb2312");}catch(Exception e){}}public void Addrass(String s){addrass=s.trim();try{byte bb[]=addrass.getBytes("ISO-8859-1");addrass=new String(bb,"gb2312");}catch(Exception e){}}public String getAddMessage(){String insertCondition="insert QQvalues('"+zhanghao+"','"+mima+"','"+name+"','"+nicheng+"','"+sex+"',' "+addrass+"','"+answer+"','"+birthday+")";String str="";Connection con;Statement sql;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){int m=sql.executeUpdate(insertCondition);if(m!=0){str="账号申请成功啦!";}else{str="账号申请失败";}}else{str="账号密码不能为空";}con.close();}catch(SQLException e){str="请重新输入!";}return str;}}ConditionBean.javapackage tom.jiafie;import java.sql.*;public class ConditionBean{String zhanghao,mima;StringBuffer queryResultByMima;StringBuffer queryResultByZhanghao;public ConditionBean(){queryResultByZhanghao=new StringBuffer(); queryResultByMima=new StringBuffer();try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriv er");}catch(Exception e){}}public void setZhanghao(String s){zhanghao=s.trim();queryResultByZhanghao=new StringBuffer(); queryResultByMima=new StringBuffer();}public void setMima(String s){mima=s.trim();queryResultByMima=new StringBuffer(); queryResultByZhanghao=new StringBuffer();}public String getZhanghao(){return zhanghao;}public String getMima(){return mima;}public StringBuffer getQueryResultByZhanghao(){String condition="select * from QQ wherezhanghao='"+zhanghao+"' and mima='"+mima+"'";queryResultByZhanghao=f(condition);return queryResultByZhanghao;}private StringBuffer f(String condition){StringBuffer str=new StringBuffer();Connection con;Statement sql;ResultSet rs;try{Stringuri="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseNa me=factory";con=DriverManager.getConnection(uri,"sa","sa");sql=con.createStatement();rs=sql.executeQuery(condition);str.append("<table border=1>");str.append("<th width=100"+"zhanghao");str.append("<th width=100"+"name");str.append("<th width=100"+"nicheng");str.append("<th width=100"+"sex");str.append("<th width=100"+"birthday");str.append("<th width=100"+"addrass");while(rs.next()){str.append("<tr>");str.append("<td"+rs.getString(1));str.append("<td"+rs.getString(2));str.append("<td"+rs.getString(3));str.append("<td"+rs.getString(4));str.append("<td"+rs.getString(5));str.append("<td"+rs.getString(6));str.append("</tr>");}str.append("<table border=1>"); con.close();}catch(SQLException e){System.out.println(e);}return str;}}。