文章目录
注:之后的小组开发工作
软件开发生命周期:
- 需求分析
规范需求分析说明书 - 软件原型设计
Axure RP 8
v1->审核–>v2… - 静态网页制作
HBuilder(HTML,CSS,JS,jQuery,Bootstrap) - 数据库建模
PowerDesigner - 后台功能开发实现
- 前端相应的表单测试,jQuery+Ajax
- 测试/发布
人员分工:DEV,FE,AQ*
7.1PowerDesigner新建模型
选择MySQL5
新建表作为人员表
var(10)固定长度字符,varchar()可变长度字符
操作提示:
- 设置每个表的主键,并且可以设置自动增长;
- 外键可以自动生成。
7.2 MySQL
7.2.1 MySQL安装
首先直接使用老师给的安装包进行安装,上课的时候没有听,直接next一顿操作,中间要填一个密码,密码要记住,之后每次连接数据库的时候都要用。
安装之后要验证安装
1.添加环境变量
我的win10桌面上没有放此计算机,所以点开设置——系统——关于——高级系统设置——环境变量,在系统变量和用户变量的path中统一添加安装的bin文件夹路径
2、注意一下,由于默认的字符集为拉丁英文Latin1,要将它修改为Iso-8859-1 英文字符,打开C:\Program Files\MySQL\MySQL Server 5.5\ my.ini配置文件
将这两处的latin1修改为utf8
3、启动cmd
C:\Users\Administrator>net start mysql
请求的服务已经启动。
请键入 NET HELPMSG 2182 以获得更多的帮助。
C:\Users\Administrator>mysql -uroot -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.20 MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
显示如上则连接成功。之后可以在这里进行数据库的增删查改,表的增删查改等操作。
7.2.2 Navicat 8 for MySQL
有时直接在cmd中进行操作会比较慢,且对新手也不太友好,所以在这里我们安装Navicat 8 for MySQL进行操作
界面如下
首次连接注意验证账户密码
创建数据库
也可以通过console 使用命令来操作MySQL数据库
7.3 JDBC
Java 数据库DB(DataBase)连接 Connectivity
DEMO:
- 创建项目 Java Project
- 加载驱动包 *.jar [将mysql的jar包文件,复制到 Java Project中]
建立连接
package demo;
import java.sql.*;
public class DBUtil {
public static Connection getConnection(){
//获取connection对象
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("未找到驱动类!");
}
//url --统一资源定位符 主协议:子协议://主机IP:端口号/数据库名
try {
String url = "jdbc:mysql://localhost:3306/demo2";
conn = DriverManager.getConnection(url, "root","123456");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("数据库服务器异常,数据连接错误!");
}
return conn;
}
public static void main(String[] args){
Connection conn = DBUtil.getConnection();
System.out.println(conn != null ? "连接成功" : "连接失败");
}
}
增加对象
try {
String sql = "insert into info(Id,Name) values('12','张三')";
Statement stmt = conn.createStatement();
int rows = stmt.executeUpdate(sql);
if(rows>0){
System.out.println("添加成功!");
}else{
System.out.println("添加失败!");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
7.4 用Java做一个简单的学生信息系统
7.4.1 代码部分
可以实现对数据库的增删查改
package sy.demo.util;
import java.sql.*;
public class DBUtil {
public static Connection getConnection(){
//获取connection对象
Connection conn = null; //连接对象
try {
//加载驱动包中的驱动类名
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("未找到驱动类!");
}
//url --统一资源定位符 主协议:子协议://主机IP:端口号/数据库名
//通过驱动管理器类获取连接对象
try {
String url = "jdbc:mysql://localhost:3306/demo";
conn = DriverManager.getConnection(url, "root","123456");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("数据库服务器异常,数据连接错误!");
}
return conn;
}
public static void closeAll(ResultSet rs,Statement stmt,PreparedStatement pstmt,Connection conn){
try {
if(rs != null){
rs.close();
}
if(stmt != null){
stmt.close();
}
if(pstmt != null){
stmt.close();
}
if(conn != null){
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
Connection conn = DBUtil.getConnection();
System.out.println(conn != null ? "连接成功!" : "连接失败!");
}
}
package sy.demo.entity;
public class Inf {
private int id;
private String name;
private int age;
public Inf() {
}
public Inf(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Inf(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return this.id+"\t"+this.name+"\t"+this.age;
}
}
package sy.demo.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import sy.demo.entity.Inf;
import sy.demo.util.DBUtil;
public class InfDao {
private Connection conn = null; //连接对象
private Statement stmt = null; //语句对象
private PreparedStatement pstmt = null; //预编译语句对象
private ResultSet rs = null; //结果集对象
public Inf queryInfByld(int id) {
Inf inf = null;
try {
String sql="select * from inf where id="+id;
conn = DBUtil.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
if(rs.next()) {
inf = new Inf();
inf.setId(rs.getInt(1));
inf.setName(rs.getString(2));
inf.setAge(rs.getInt(3));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}finally {
DBUtil.closeAll(rs, stmt, null, conn);
}
return inf;
}
public List<Inf> queryInfList(){
List<Inf> infList = new ArrayList<Inf>();
try {
String sql ="select * from inf";
conn = DBUtil.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()) {
Inf inf = new Inf();
inf.setId(rs.getInt(1));
inf.setName(rs.getString(2));
inf.setAge(rs.getInt(3));
infList.add(inf);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}finally {
DBUtil.closeAll(rs, stmt, null, conn);
}
return infList;
}
public boolean addInf(Inf inf) {
try {
String sql = "insert into inf(name,age) values('"+inf.getName()+"',"+inf.getAge()+")";
conn = DBUtil.getConnection();
stmt = conn.createStatement();
int rows=stmt.executeUpdate(sql);
if(rows>0){
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DBUtil.closeAll(rs,stmt,null,conn);
}
return false;
}
public boolean modiQuery(Inf inf) {
try {
String sql = "update inf set name='"+inf.getName()+"',age="+inf.getAge()+" where id="+inf.getId();
conn = DBUtil.getConnection();
stmt = conn.createStatement();
int rows=stmt.executeUpdate(sql);
if(rows>0){
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
DBUtil.closeAll(rs,stmt,null,conn);
}
return false;
}
public boolean delQuery(int id) {
try {
String sql = "delete from inf where id="+id;
conn = DBUtil.getConnection();
stmt = conn.createStatement();
int rows=stmt.executeUpdate(sql);
if(rows>0){
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
DBUtil.closeAll(rs,stmt,null,conn);
}
return false;
}
}
package sy.demo.biz;
import java.util.Scanner;
import java.util.List;
import sy.demo.dao.InfDao;
import sy.demo.entity.Inf;
public class Biz {
Scanner sc = new Scanner(System.in);
private InfDao infDao = new InfDao();
//根据编号查询单个数据
public int querySingle() {
int single1=1;
while(single1==1) {
System.out.print("请输入你要查询的编号:");
int id = sc.nextInt();
Inf inf =infDao.queryInfByld(id);
if(inf!=null) {
System.out.println(inf);
System.out.println("————————————————————————————————");
System.out.println("继续查询(1),返回首页(2)");
}else {
System.out.println("————————————————————————————————");
System.out.println("你输入的编号不存在,重新查询(1),返回首页(2)");
System.out.println("请选择");
}
single1=sc.nextInt();
}
return single1;
}
//查询列表
public int queryInfList() {
int list1=1;
while(list1==1) {
List<Inf> infList = infDao.queryInfList();
for(Inf inf : infList) {
System.out.println(inf);
}
System.out.println("————————————————————————————————");
System.out.println("重新查询(1),返回首页(2)");
System.out.println("请选择");
list1=sc.nextInt();
}
return list1;
}
//增加
public int add() {
int add1 = 1;
int add2 = 2;
String name = null;
int age = 0;
while(add1==1) {
while(add2==2){
System.out.println("请输入学生的姓名:");
name = sc.next();
System.out.println("请输入学生的年龄:");
age = sc.nextInt();
System.out.println("信息录入完成,确定(1),重新输入(2):");
System.out.println("请选择");
add2 = sc.nextInt();
}
Inf inf = new Inf(name,age);
boolean flag = infDao.addInf(inf);
System.out.println(flag ?"数据添加成功,继续添加(1),返回首页(2)" : "数据添加失败,继续添加(1),返回首页(2)");
System.out.println("请选择");
add1 = sc.nextInt();
add2 = 2;
}
return add1;
}
//修改
public int modify() {
int modify1=1;
int modify2=2;
String name = null;
int age = 0;
while(modify1==1) {
System.out.println("请输入你要修改的学生的编号:");
int id = sc.nextInt();
System.out.println("******************************");
Inf infOld =infDao.queryInfByld(id);
if(infOld==null) {
System.out.println("该编号不存在!重新输入(1),返回主页(2)");
modify1=sc.nextInt();
}
else{
System.out.println(infOld);
while(modify2==2) {
System.out.println("输入新姓名:");
name = sc.next();
System.out.println("输入新年龄:");
age = sc.nextInt();
System.out.println("修改数据已接收,确定修改(1),重新输入(2)");
System.out.println("请选择");
modify2=sc.nextInt();
}
Inf inf = new Inf(id,name,age);
boolean flag = infDao.modiQuery(inf);
System.out.println(flag ?"数据修改成功,继续修改(1),返回首页(2)" : "数据修改失败,继续修改(1),返回首页(2)");
System.out.println("请选择");
modify1 = sc.nextInt();
modify2 = 2;
}
}
return modify1;
}
public int del() {
int del1=1;
while(del1==1) {
System.out.println("请选择你要删除的编号:");
int id = sc.nextInt();
boolean flag = infDao.delQuery(id);
System.out.println(flag ? "删除成功,继续删除(1),返回首页(2)" : "删除失败,重新输入(1),返回首页(2)");
System.out.println("请选择");
del1=sc.nextInt();
}
return del1;
}
}
package sy.demo;
import java.util.*;
import sy.demo.*;
import sy.demo.biz.Biz;
public class Prepare {
public void New() {
int flag = 2;
Scanner sc = new Scanner(System.in);
while(flag==2) {
System.out.println("**************************************************");
System.out.println("********************学生信息管理系统*******************");
System.out.println("* *");
System.out.println("* *");
System.out.println("**************************************************");
System.out.println("* 1、添加数据 *");
System.out.println("* 2、修改数据 *");
System.out.println("* 3、查询数据 *");
System.out.println("* 4、删除数据 *");
System.out.println("* 5、退出系统 *");
System.out.println("* *");
System.out.println("**************************************************");
System.out.println("请选择你要进行的操作(请输入对应的编号):");
int i = sc.nextInt();
Biz biz = new Biz();
switch (i) {
case 1:
flag=biz.add();
break;
case 2:
flag=biz.modify();
break;
case 3:
System.out.println("请选择你要查询的方式 查询所有数据(1),根据编号查询(2)");
int choose = sc.nextInt();
if(choose==1) {
flag=biz.queryInfList();
}else {
flag=biz.querySingle();
}
break;
case 4:
flag=biz.del();
break;
case 5:
System.out.println("系统已停止!");
System.exit(0);
// default:
// System.out.println("指令错误,请重新输入!");
// flag=2;
// break;
}
}
}
}
package sy.demo;
import java.util.*;
import sy.demo.*;
import sy.demo.biz.Biz;
public class Strat {
public static void main(String[] args) {
Prepare pre = new Prepare();
pre.New();
}
}
7.4.2 运行结果
查询所有:
添加学生:
添加后查询:
修改数据:
修改后根据学号查询:
查询学号不存在:
删除学号不存在:
删除成功:
删除后查询:
退出系统: