一.音乐管理系统升级版2.0
今天做的是模拟音乐管理系统的登入页面
新建一个数据表tb_user
新建一个“View”文件,还有一个“UserDao”文件,一个“User”文件
View 代码如下
public class View {
public static void main(String[] args) throws SQLException, LoginException {
boolean flag = true;
while (flag) {
Scanner input = new Scanner(System.in);
System.out.println("您尚未登入请先登入");
System.out.println("请输入用户名:");
String username = input.next();
System.out.println("请输入密码:");
String password = input.next();
UserDao userDao = new UserDao();
User user =userDao.findUserByUsername(username);
if (user == null) {
System.out.println("---该用户尚未注册,请先注册---");
System.out.println("---请输入注册名:---");
String name = input.next();
System.out.println("---请输入注册密码:---");
String pw = input.next();
userDao.zj(name, pw);
break;
} else if (user.getPassword().equals(password)) {
System.out.println("----欢迎来到音乐管理系统----");
musicSystem(user);
flag = false;
} else {
//System.out.println("-----密码错误,请重新输入-----");
throw new LoginException("登入失败");
}
}
}
public static void musicSystem(User user) throws SQLException {
Scanner input = new Scanner(System.in);
System.out.println("1.音乐查询 2.音乐添加 3.音乐修改 4.音乐删除 5.退出 ");
int choice = input.nextInt();
MusicDao musicDao = new MusicDao();
switch (choice) {
case 1:
List<Music> musics = musicDao.findMusics();
System.out.println(musics);
case 2:
if (user.getType()!=0){
System.out.println("权限不足,请联系管理员");
break;
}
System.out.println("请输入要插入的音乐名: ");
String ym = input.next();
System.out.println("请输入插入的作者名: ");
String au = input.next();
musicDao.zj(ym, au);
break;
case 3:
System.out.println("请输入要修改的id:");
int id1 = input.nextInt();
System.out.println("请输入新的音乐名:");
String newym = input.next();
System.out.println("请输入新的作者名:");
String newau = input.next();
musicDao.xg(id1, newym, newau);
break;
case 4:
System.out.println("请输入要删除的id:");
int id = input.nextInt();
musicDao.delete(id);
case 5:
System.exit(0);
}
}
}
User代码如下
public class User {
public User(){
this.username=username;
this.password=password;
}
private int id;
private String username;
private String password;
private int type;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", type=" + type +
'}';
}
}
UserDao代码如下
public class UserDao {
public User findUserByUsername(String username) {
ResultSet resultSet = null;
PreparedStatement statement = null;
Connection connection = null;
User user = null;
try {
connection = DBUtil.getConnection();
String sql = "select * from tb_user where username=?";
statement = connection.prepareStatement(sql);
statement.setString(1, username);
resultSet = statement.executeQuery();
while (resultSet.next()) {
user = new User();
user.setUsername(resultSet.getString(2));
user.setPassword(resultSet.getString(3));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.closeAll(resultSet, statement, connection);
}
return user;
}
public void zj(String username, String password) throws SQLException {
ResultSet resultSet = null;
PreparedStatement statement = null;
Connection connection = null;
try {
connection = DBUtil.getConnection();
String sql = "insert into tb_user(username,password) values (?,?)";
statement = connection.prepareStatement(sql);
statement.setString(1, username);
statement.setString(2, password);
statement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.closeAll(null, statement, connection);
}
}
}
原 MusicDao 代码更改如下
public class MusicDao {
public static void updateMusic(int id1, String newym, String newau) {
}
public List<Music> findMusics(){
ResultSet resultSet = null;
PreparedStatement statement = null;
Connection connection = null;
List<Music> musics=new ArrayList<>();
try {
connection = DBUtil.getConnection();
String sql = "select * from music";
statement = connection.prepareStatement(sql);
resultSet = statement.executeQuery();
while (resultSet.next()) {
Music music = new Music();
music.setId(resultSet.getInt(1));
music.setName(resultSet.getString(2));
music.setAuthor(resultSet.getString(3));
musics.add(music);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.closeAll(resultSet, statement, connection);
}
return musics;
}
public void delete(int id) throws SQLException {
Connection connection = DBUtil.getConnection();
String sql = "delete from music where id=?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,id);
statement.executeUpdate();
DBUtil.closeAll(null,statement,connection);
}
public void zj(String name,String author) throws SQLException {
Connection connection = DBUtil.getConnection();
String sql = "insert into music(name,author) values (?,?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1,name);
statement.setString(2,author);
statement.executeUpdate();
DBUtil.closeAll(null,statement,connection);
}
public void xg(int id,String name,String author) throws SQLException{
Connection connection = DBUtil.getConnection();
String sql = "update music set name=?,author=? where id=?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(3,id);
statement.setString(1,name);
statement.setString(2,author);
statement.executeUpdate();
DBUtil.closeAll(null,statement,connection);
}
}
程序运行结果如下
如果用户没有注册就登入,系统会显示用户未注册,请先注册 随后跳到注册界面,然后输入注册名和注册密码即完成注册
注册完成后如果登入密码输入错误则会显示登入失败,然后退出音乐管理系统
再次运行输入用户名和注册名进入音乐管理系统
输入 1 ,即音乐查询,能查询到数据库里所有音乐信息,运行结果如下
查询结果出来就进入了 2.音乐添加,输入想添加的音乐名和歌手即可添加成功
数据库中的数据也会随之更新
接下来是重新运行进入音乐管理系统 输入数字3,即可修改输入id对应的音乐名及歌手
数据库中刷新运行结果如下
输入数字4,输入想要删除行的id,这一行就会删除,数据运行结果如下
数据库中刷新运行结果如下,如图,id为4的那一行已经被删除
输入数字5,即可退出音乐管理系统
以上就是音乐管理系统的全部代码和运行结果
二.mvc模式
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。
m model 实体类
v view 视图
c controller 控制
三.包结构
model 实体类
dao 持久层 对数据库进行操作 增删改查
service 业务层
controller 控制层
四.Util 工具包
Util是utiliy的缩写,是一个多功能、基于工具的包。
Java的实用工具类库java.util包。在这个包中,Java提供了一些实用的方法和数据结构。