第一次优化后---学生管理系统(层次分明的设计)

程序源代码:http://download.csdn.net/detail/u012332962/6493517(仅供参考)

在上周,个人学习java的路上,写了一个可以连接数据库,从数据库中拿去数据的学生管理系统,但鉴于动能过于简单,同时时写学来的程序没有一个调理性,导致代码实在看着就是一个词形容:惨不忍睹,丝毫条理性都没有,所以几个一个星期的空余时间的努力,我又做出了里一个学生选课管理系统,功能相近,只是优化了整个设计过程,利用了老师说的结构,数据,与视图的分析方法,个人不知道是不是传说中的MVC默认,但是整个开发过程,个人觉得比第一次设计的时候,思路清楚了很多,各种设计都能顺利设计出来,更重功能的响应都有了一个统一了解

本次设计过程将数据库的操作与界面实现了很好的分离,目前个人还不怎么了解为什么不能在主界面程序中包含有数据库的操作语句(学习MLDN的java开发实战经典中李兴华在最后一节的设计课上强调了这一点),但觉得这个应该是为了数据操作的安全考虑

本次设计,因为要数据与操作,视图进行分离所以数据库进行了进一步的了解深化,但主要的功能还是一样的,只是深入理解了一下,一个软件开发设计的一个整体过程;

数据库的简单设计;

建立数据库
 CREATE DATABASE MANAGER;
 建立用户表:
CREATE TABLE `user` (
  `username` varchar(20) NOT NULL,
  `password` varchar(16) NOT NULL DEFAULT '111111',
  `admin` tinyint(1) NOT NULL DEFAULT '0', //是否有管理员权限
  PRIMARY KEY (`username`)
) 
建立学生信息表;
CREATE TABLE `student` (
  `username` int(8) NOT NULL,
  `name` varchar(20) NOT NULL,
  `sex` tinyint(1) unsigned zerofill NOT NULL,
  `birthday` date DEFAULT NULL,
  PRIMARY KEY (`username`)
)
建立课程表:
CREATE TABLE `course` (
  `id` int(8) unsigned NOT NULL AUTO_INCREMENT,
  `cname` varchar(20) NOT NULL,
  `credit` tinyint(2) NOT NULL DEFAULT '2',
  `room` varchar(20) DEFAULT 'E307',
  `time` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`)
)
建立学生选课表:
CREATE TABLE `studentcourse` (
  `username` int(8) NOT NULL,
  `id1` int(8) DEFAULT NULL,
  `id2` int(8) DEFAULT NULL,
  `count` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`username`)
)

建立出发器:添加或删除用户的时候使用:
CREATE
    TRIGGER `delete_student` BEFORE DELETE ON `student` 
    FOR EACH ROW BEGIN
	DELETE FROM users WHERE users.username = old.username;
    END;
CREATE
    TRIGGER `insert_student` BEFORE INSERT ON `student` 
    FOR EACH ROW BEGIN
	INSERT INTO users(username) VALUES(new.username);
    END;
    

下次更新会更新一个manager类主要对数据库内的人员及数据进行增,删,改,查,对数据哭内部的数据进行操作

程序的见面进行了改进(上次那个版本实在太惨不忍睹了,传说中差到极点的UI设计了)

大致地给大家看一下主要的类设计;

几个包作用的说明,本次设计的过程可以从包名中体验出来,因为这些包名就很好的解释了,进过”MVC”设计之后的功能作用(对比上次的设计,是不是光从报名上就可以知道,整个设计的过程没有半点的犹豫,对整个功能的需求及用途都有了一个大致的设计方向)

下面对这些类进行详细地列出(因为本次作品是对上一个作品的一个设计过程的优化,而且这行优化都在代码中,所以不再进行过多的陈诉,有空就看看,指点指点吧,我是一个善于接受批评的人哦,我要在自己千疮百孔的身体上走过,升华自己!

一,隔离出来的数据(package com.rainplus.data;)
1.		public class Course
	2	public class Student
	3. public class User 
4. public class StudentCourse

	二,独立出来的界面(package com.rainplus.frame)
1 class LoginFrame extends JFrame
2 public class MainFrame extends JFrame
3manager类在下次更新时实现
三,拥有自主权的数据库操作(package com.rainplus.DBOperate;)
1 public class DBOperate implements IDBOperate
2 public interface IDBOperate {
四,数据库的链接(package com.rainplus.jdbc;)
1 public class ConnectDB
一,隔离出来的数据(package com.rainplus.data;)
1 public class Course {
	private String id;
	private String cname;
	private String credit;
	private String room;
	private String time;
/*此处省去getter and setter**/
}

	2 public class Student {
	private String username;
	private String name;

	private String sex;
	private String birthday;
	private String college;
/*此处省去getter and setter**/
}


	3. public class StudentCourse {
	private String username;
	private String id1;
	private String id2;
	private int count;
/*此处省去getter and setter**/
}

	4. public class User {
	private String username;
	private String password;
	private String admin;
	/*此处省去getter and setter**/
}

二,独立出来的界面(package com.rainplus.frame)
1package com.rainplus.frame;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import com.rainplus.DBOperate.DBOperate;
import com.rainplus.data.User;

class LoginFrame extends JFrame {

	private JPanel content;
	private JLabel userLabel;
	private JLabel passwordLabel;
	private JPasswordField passwordField;
	private JTextField userNameField;
	private JButton loginButton;
	private JButton exitButton;
	private JButton adminButton;
	
	private DBOperate operate;
	private User user;
	private final String ADMIN = "1";

	public LoginFrame() {
		super("优化学生选课系统");
		setSize(250, 200);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		content = new JPanel();
		content.setLayout(null);
		add(content);

		userLa
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值