用户信息管理系统.docx
《用户信息管理系统.docx》由会员分享,可在线阅读,更多相关《用户信息管理系统.docx(18页珍藏版)》请在冰点文库上搜索。
用户信息管理系统
代码行数
639
项目名称
用户信息管理系统
1.实训目的
面向对象程序设计课程设计是计算机科学与技术专业培养计划中的重要实践教学环节,旨在通过一个管理信息系统的开发,加深学生对Java语言的理解和应用,尤其是对面向对象编程思想、Java编码规范、图形用户接口、JDBC访问数据库的理解,巩固软件工程课程的相关知识,了解软件开发的基本流程,进一步提高学生的学习能力、理解能力、表达能力及沟通能力。
2.实训内容
使用Eclipse为开发工具,使用ProcessOn、IDEA为建模工具,使用MySQL为数据库服务器,基于JDBC技术,分析、设计并实现一个管理信息系统。
3.需求分析
3.1需求描述
登录:
输入账号和密码,完成登录操作,进入主界面,显示所有用户的基本信息以及可进行的相关操作的选项。
退出:
登录后可进行退出操作,结束整个程序。
注册:
输入账户、密码和确认密码完成新用户的注册。
显示用户信息:
登录成功后在主界面中以表格形式显示所有用户的信息。
添加用户:
输入用户各项信息,完成用户信息的添加操作,添加成功后以表格形式显示所有的用户信息。
删除用户:
根据用户主键,完成用户信息的删除操作,删除成功后以表格形式显示所有的用户信息。
修改用户:
输入用户主键,显示用户信息,输入每个字段值,完成用户信息的修改,修改成功后以表格形式显示所有的用户信息。
查询用户:
可利用模糊查询完成对用户名的查询操作
3.2用例描述
4.功能设计
4.1系统层次方框图
4.2算法设计(活动图或时序图)
登录功能活动图
注册功能活动图
显示所有用户信息活动图
用户信息添加活动图
查询用户信息活动图
删除用户信息活动图
修改用户信息活动图
5.数据设计
5.1类图设计
系统类图
数据库访问层类图
数据库封装类类图
业务层类图
控制层类图
视图层类图
Test类图
5.2数据表设计
t_login表
序号
字段名
类型
长度
备注
1
id
int
4
主键
2
account
char
20
唯一性、不为空
3
password
char
20
不为空
t_user表
序号
字段名
类型
长度
备注
1
id
int
4
主键
2
name
char
20
不为空
3
sex
int
2
0表示男,1表示女
4
birthday
date
默认
不为空
6.运行结果
1.注册
密码和确认密码不一致
2.登录
3.添加
4.删除
5.修改
6.查询
如果没有查询到相关的信息
7.退出
7.关键代码
1.LoginService.java
importjava.sql.ResultSet;
importjava.sql.SQLException;
importa.DB;
importcn.edu.ccut.po.Login;
publicclassLoginService{
privateDBdb;
privatestaticLoginServiceservice;
privateLoginService(){//构造方法
db=DB.getInstance();
}
publicstaticLoginServicegetInstance(){
if(service==null){
service=newLoginService();
}
returnservice;
}
publicbooleanlogin(Loginlo){
Stringsql="select*fromt_loginwhereaccount=?
andpassword=?
";
ResultSetrs=db.executeQueryByParam(sql,lo.getUsername(),lo.getPassword());
try{
if(rs.next()){
returntrue;
}
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
db.close();
}
returnfalse;
}
publicbooleanregister(Loginlo){//注册
Stringsql="insertintot_login(account,password)values(?
?
)";
intcount=db.executeUpdate(sql,lo.getUsername(),lo.getPassword());
db.close();
if(count>0){
returntrue;
}else{
returnfalse;
}
}
}
2.DB.java
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
publicclassDB{
privatestaticDBdb;
privateConnectioncon;
privatePreparedStatementpre;
privateResultSetrs;
static{
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
privateDB(){
}//构造方法
publicstaticDBgetInstance(){
if(db==null){
db=newDB();
}
returndb;
}
privatevoidbuildconnection(){
try{
con=DriverManager.getConnection("jdbc:
mysql:
//localhost:
3306/db",
"root","");
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicResultSetexecuteQueryByParam(Stringsql,Object...o){//查询操作
this.buildconnection();
try{
pre=con.prepareStatement(sql);//预处理操作
System.out.println(o.length);
for(inti=0;ipre.setObject(i+1,o[i]);//设置字段内容,把通配符替换object
}
rs=pre.executeQuery();//执行sql语句
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnrs;
}
publicResultSetexecuteQueryNOparam(Stringsql){//查询表中的所有内容
this.buildconnection();
try{
pre=con.prepareStatement(sql);
rs=pre.executeQuery();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnrs;
}
publicintexecuteUpdate(Stringsql,Object...o){
this.buildconnection();
try{
pre=con.prepareStatement(sql);
for(inti=0;ipre.setObject(i+1,o[i]);
}//设置字段内容
intcount=pre.executeUpdate();
returncount;//计数,修改的地方
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
return0;
}
}
publicvoidclose(){
try{
if(rs!
=null){
rs.close();
}
pre.close();
con.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
3.AddView.java
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.InputMismatchException;
importjava.util.Scanner;
importcn.edu.ccut.service.UserService;
publicclassAddViewimplementsOperation{
@Override
publicvoidoperation(UserServiceservice)throwsInputMismatchException{
//TODOAuto-generatedmethodstub
Scannerscan=newScanner(System.in);
while(true){
System.out.println("pleaseinputname、sex、birthdaytoADD,ifreturninput0:
");
Stringname=scan.next();
if("0".equals(name)){
break;
}
Stringsex0=scan.next();
intsex1=1;
if("男".equals(sex0)){
sex1=0;
}
Stringbirthday0=scan.next();
SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-dd");
Datebirthday=newDate();
try{
birthday=format.parse(birthday0);
}catch(ParseExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
booleanflag=service.insertOneUser(name,sex1,newjava.sql.Date(birthday.getTime()));
if(flag){
System.out.println("addsuccess~~~~~~");
//scan.close()
return;
}else{
System.out.println("addfailure,tryagain~~~~~~");
}
}
}
}
8.实训总结
通过三周的实训,时间虽短却也学到了不少的知识。
刚开始只是有简单的想法,再到实践,中间还是有很多的问题和错误,但通过这个过程,自身修改错误的能力也相对增长。
在这次实训的过程中,我发现平时学习的知识和实践应用有一定的差距,实践中必须自己摸索适合程序的方法,收集各个方面的知识,完成于数据库的连接和后台的搭建。
此次实训,让我自己意识到自身还有很多问题,还有很多的不足,系统也不是很完善,但总的来说,此次实训对自身还是有很大的帮助,受益匪浅。
成绩
Score
教师签字日期