1、JSP作业课程设计副本学院JSP大作业报告题 目 QQ登陆系统 学生姓名 专业班级 计算机10-1 指导教师 职称 讲师 所在单位 教研室主任 完成日期 2013年5月22日摘 要QQ是腾讯公司开发的一款基于Internet的即时通信软件。腾讯QQ作为当下中国最流行的聊天工具之一,必有他成功的理由。所以我希望基于JSP能模仿QQ的登陆系统,一方面向腾讯QQ学习他的登陆界面,以便日后可以把它成功的运用到网页游戏或者是网站的一些会员登录中,另一方面也可以帮我巩固在JSP课上学习到的知识。用JSP编辑的网站中,一般要求用户提供登陆该网站的用户名称和密码等信息,在注册页面中用SQL语句在数据库中查询该
2、用户名和密码是否存在于数据库中。该系统用到的关键技术,使用JSP编程、建立数据库、采用HTML超文本链接等编程技术。关键字:QQ登录系统;JSP编程;数据库;学习目 录1总体设计 11.1本系统的主要功能 11.2系统包含的类及类之间的关系 11.3java源文件及其功能 12详细设计 12.1类AddBean 12.2类QueryBean 22.3类Query 22.4类ReadFiles 32.5类RandomArr 33 运行效果 43.1 系统登陆界面 43.2 更改密码界面 53.2 个人主界面 53.2 注册信息界面 5参考文献 6附录1 软件源程序 7课程设计实践总结: 161总
3、体设计1.1本系统的主要功能 本系统为QQ登陆系统仿照QQ的登陆界面完成学习目的,功能包括了帐号、密码的注册、清空及登录,而注册界面包含了帐号、密码、姓名、年龄等信息,还加入了修改密码的界面,简单地说就是QQ登陆界面的简化版本。1.2系统包含的类及类之间的关系本系统共包括5个java源文件,7个jsp文件1.3java源文件及其功能1.AddBean.java该文件用于添加用户编号、密码、年龄、名字等信息2. QueryBean.java该文件为查询用户信息组件的文件,通过QueryBean扩展查询功能3. Query.java该文件为查询用户信息文件4. ReadFiles.java该文件为
4、读取文件5. RandomArr.java该文件随机生成帐号的文件2详细设计2.1类AddBean(1)成员变量见表2-1表2-1 主要成员变量(属性)成员变量描述变量类型名称用户名及帐号Stringname,number年龄、密码、添加信息Intage,pass,addMessage(2)方法见表2-2表2-2 主要方法方法名功能备注AddBean()添加组件扩充添加程序setName()设置用户名字符串型setAge()设置年龄整型setPass()设置密码整型setNumber()设置账号字符串型getAddMessage()获取添加信息注册(3)源代码见文件AddBean.java2.
5、2类QueryBean(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称数据库名、密码、用户名、表名StringdatabaseName=,secret=,user=,tableName=(2)方法见表2-4表2-4 主要方法方法名功能备注QueryBean()查询组件JavaBean组件类似COM组件getQueryResult()获取查询结果将获取的信息汇总setDatabaseName()设置数据库名设置需要传参getDatabaseName()获取数据库名获取需要return返回setTableName()设置表名以下设置与获取的描述不再赘余,参考数据库设置与获取g
6、etTableName()获取表名setSecret()设置密码getSecret()获取密码setUser()设置用户名getUser()获取用户名(3)源代码见文件QueryBean.java2.3类Query(1)成员变量见表2-5表2-5 主要成员变量(属性)成员变量描述变量类型名称帐号Stringnumber密码及新密码Intpass,newpassword(2)方法见表2-6表2-6 主要方法方法名功能备注setNumber()设置账号将参数传参到帐号read()读取读取信息setNewpassword()设置新密码将参数传参到新密码(3)源代码见文件Query.java2.4类R
7、eadFiles(1)成员变量见表2-7表2-7 主要成员变量(属性)成员变量描述变量类型名称变量名、内容Stringpath,content(2)方法见表2-8表2-8 主要方法方法名功能备注 setPath()设置变量名字符串型 getContent()获取内容字符串型(3)源代码见文件ReadFiles.java2.5类RandomArr(1)成员变量见表2-9表2-9 主要成员变量(属性)成员变量描述变量类型名称帐号String number10位数组用作存储帐号int arrarri随机变量Inti(2)方法见表2-10表2-10 主要方法方法名功能备注getNumber()获取账号
8、数组中的数字以字符串型作为账号Math.random()随机生成一个01之间的数 (int)(Math.random()*10)通常用作生成整数(3)源代码见文件RandomArr.java3 运行效果3.1 系统登陆界面图3-1 系统登陆界面3.2 更改密码界面图3-2 更改密码界面3.2 个人主界面图3-2 个人主界面3.2 注册信息界面图3-2 注册信息界面 参考文献 1 程志艳等JSP实用简明教程,清华大学出版社,2005.122 李曙光JSP开发实例完全剖析,中国电力出版社,2006.43 孙延鹏等Web程序设计-JSP,人民邮电出版社,2008.54张阳等Java Web开发实践教
9、程-从设计到实现,清华大学出版社,2008.95 刘彬编著,JSP数据库高级教程,清华大学出版社,2006附录1 软件源程序package tom.jiafei;import java.sql.*;public class AddBean int age,pass,addMessage; String name,number; public AddBean() try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); catch(Exception e) public void setName(String s) name
10、=s.trim(); try byte bb=name.getBytes(ISO-8859-1); name=new String(bb,gb2312); catch(Exception e) public void setAge(int n) age=n; public void setPass(int n) pass=n; public void setNumber(String s) number=s; public int getAddMessage()throws Exception String uri=jdbc:sqlserver:/127.0.0.1:1433;Database
11、Name=factory; String user=sa; String password=sa; Connection con=DriverManager.getConnection(uri, user, password);/连接 Statement st=con.createStatement();/创建语句 String sql=insert into qq (number,pass,name,age)values(+number+,+pass+,+name+,+age+); addMessage=st.executeUpdate(sql); st.close(); con.close
12、(); return addMessage; /*利用Random生成10个数且第一个数不为0*/package tom.jiafei;import java.io.*;public class RandomArr private StringBuilder sb=new StringBuilder(); String number; public String getNumber() int arr = new int 10; int i=0; while(iarr.length) arri=(int)(Math.random()*10); if(arr0=0) continue; /控制第
13、一个数不为0 else sb.append(arri); i+; number=sb.toString(); return number; package tom.jiafei;import java.io.*;public class ReadFiles private String path,content; public void setPath(String path) this.path=path; public String getContent()throws IOException FileReader fr=new FileReader(path); BufferedRead
14、er br=new BufferedReader(fr); StringBuilder sb=new StringBuilder(); String str=null; while(str=br.readLine()!=null) sb.append(str+); content=sb.toString(); return content; package tom.jiafei;import java.sql.*;public class Query String number; int pass,newpassword; public void setNumber(String s) num
15、ber=s; public void setNewpassword(int s) newpassword=s; public int read() throws Exception Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); String uri=jdbc:sqlserver:/127.0.0.1:1433;DatabaseName=factory; String user=sa; String password=sa; /建立连接 Connection con=DriverManager.getConnection
16、(uri, user, password); /创建语句 Statement st=con.createStatement(); ResultSet rs=st.executeQuery (SELECT number,pass,name,age FROM qq where number=+number+); while(rs.next() pass=rs.getInt(2); return pass; public int update() throws Exception Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);
17、 String uri=jdbc:sqlserver:/127.0.0.1:1433;DatabaseName=factory; String user=sa; String password=sa; Connection con=DriverManager.getConnection(uri, user, password);/连接 Statement st=con.createStatement();/创建语句 String sql=update qq set pass=+newpassword+ where number=+number+; int i=st.executeUpdate(
18、sql); st.close(); con.close(); return i; package tom.jiafei;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.mic
19、rosoft.sqlserver.jdbc.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 S
20、tring 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 getQu
21、eryResult() Connection con; Statement sql; ResultSet rs; try queryResult.append(); String uri= jdbc:sqlserver:/127.0.0.1:1433;DatabaseName=+databaseName; String id=user; String password=secret; con=DriverManager.getConnection(uri,id,password); DatabaseMetaData metadata=con.getMetaData(); ResultSet r
22、s1=metadata.getColumns(null,null,tableName,null); int 字段个数=0; queryResult.append(); while(rs1.next() 字段个数+; String clumnName=rs1.getString(4); queryResult.append(+clumnName+); queryResult.append(); sql=con.createStatement(); rs=sql.executeQuery(SELECT * FROM +tableName); while(rs.next() queryResult.
23、append(); for(int k=1;k=字段个数;k+) queryResult.append(+rs.getString(k)+); queryResult.append(); queryResult.append(); con.close(); catch(SQLException e) queryResult.append(请输入正确的用户名和密码); return queryResult; 帐号 密码 登录成功 请输入密码: 姓名: 年龄: % String str1=request.getParameter(num); /重定向 String str2=request.getParameter(password); if(str1.length()=0|str2.length()=0) response.sendRedirect(In.jsp); else Query.setNumber(str1); int pass=Query.read(); int password=Integer.parseInt(str2); if(pass=password) out.println(登录成功+); else out.println(密码错误,请重新登录); % % page con