资源描述
最后的结果是这个画面,过于简略,也是限于时间和能力了。
前言
由于二妹前一阵子要写一个简易的学生信息管理系统做毕业设计,要求我用MySQL数据库、Java和Eclipse替她写个小程序交。这个文档是为了记录一个过程,供有需要的java学习者学习和参考。
1,安装虚拟机VMware12(为了安装win10系统)
2,安装windows10系统(妹子的笔记本系统是win10)
3,安装Java【jdk1.8.0_91和jre1.8.0_91】
4,安装Microsoft.NET4.0.exe插件(不安装,MySQL软件会报错)
5,安装 MySQL 5.7.12
6,安装Navicat11.0.9企业版用于图形化开发MySQL
7,安装 MyEclipse 2016 CI和mysql-connector-java-5.1.39.zip插件
8,程序开发,利用MyEclipse 2016 CI,java编程,并连接MySQL数据库。
1安装虚拟机VM12
2在虚拟机中,安装windows10_x64系统企业版
启用共享文件夹功能,方便主机硬盘里面的文件能够在虚拟机系统里面直接使用,不必复制到虚拟机硬盘里面。
3,安装Java【jdk-8u91-windows-x64.exe】
在虚拟机系统win10里面安装和配置java环境变量。
配置环境变量:
-->此电脑,右击,属性-->高级系统设置-->环境变量-->系统变量-->找到Path,编辑如下图,添加jdk和jre的bin目录路径,最前添加.;
测试java环境配置:
按住Windows键+R键,运行cmd命令,输入java和javac,按回车键出现下面这两个图片的就成功了
4,Microsoft.NET4.0组件安装
组件在网上下载安装,再安装MySQL,就不会报错。
5,安装 mysql-installer-community-5.7.12.0.msi
选择只安装MySQL服务器,其他组件不需要。
配置,选择Server Machine,剩下的都默认
密码:lindejun
开始菜单,找到安装的MySQL菜单。测试安装成功如下图:
6,安装Navicat11.0.9企业版,网上有破解版下载。该软件方便进行MySQL数据库图形式的创建和修改查询表的信息等。
7,安装 MyEclipse 2016 CI
安装完成,下载myeclipse2016crack.zip破解以下就无限期使用了,也可以暂时不用破解,有30天的使用权限。
设置默认工作目录,就是以后你写的工程代码都保存的位置,不建议在C盘,由于虚拟机系统安装的时候没分区,就一个C盘,这里先将就了。
启动的很慢(毕竟不在地球上),给它一点爬行的时间吧。
好了,这个就是以后新建java工程的工具了
8S,ManageStudents数据库开发
S1,打开Navicate for MySQL软件,建立与MySQL服务器的连接。
文件->新建连接
输入密码(我这边的MySQL数据库安装时设定的密码是:lindejun)
点击测试连接,显示连接成功!
上图主机名默认的localhost如果连接不成功,改成上图的IP:127.0.0.1
S2,双击下图中的MySQL服务器,可以看到当前的MySQL服务器上面有哪些数据库:
S3,新建数据库StudentsManager和表格
右击上图中的MySQL服务器,新建数据库,输入数据库名StudentsManager
双击数据库ManageStudents,右击表,新建表
新建三个表格:StudentsInfo、Classinfo、DepartmentInfo。分别是学生信息表、班级表、部门系表。
学生信息表如下图
选择学号那行,添加主键:点击黄色的钥匙图标,完成后保存为StudentsInfo。
班级表
系部门表
S4,添加数据到表中,例如学生表
插入一条数据:
点击查询,新建查询,输入下面的语句,点击运行,就插入一条记录了。
Insert into StudentsInfo values('2016020304','李阳','男','1996-11-22','江苏','201602');
其中学号,最后两位表示部门系号,1-6位表示学号,如7-8位的数字表示系号,9-10表示在班级的第几个学生。
用SELECT命令,查看一下是否插入成功:
以文本方式把多条记录插入数据库的表中
mysql> load data local infile "C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/SM_studentinfo.txt" into table studentsinfo;
创建一个文本文件“SM_studentinfo.txt”,放在C:/ProgramData/MySQL/MySQL Server 5.7/Uploads文件夹下,每行包含一个记录,每一项之间用Tab键进行分隔,如果该字段为空,则用NULL表示,并且以在学生信息表中列出的列次序给出,
例如:
20160201 张川 男 1990-06-08 河南 01 201602
20160302 马伟 男 1992-02-18 江苏 02 201603
20160103 刘邦 男 1987-11-25 北京 03 201601
20160504 李彤 女 1991-09-22 浙江 04 201605
20160105 胡红 女 1990-09-08 河北 05 201601
20160207 端木川 男 1993-08-07 新疆 07 201602
首先,这个文本文件保存的时候,编码选择UTF-8,最好用EditPlus文本编辑器保存,会有选择UTF-8编码。否则可能会报错:
ERROR 1300 (HY000): Invalid utf8 character string: ''
students.txt文件不放在C:\ProgramData\MySQL\MySQL Server 5.7\Uploads这个目录里面,会遇到错误:
ERROR 1290 (HY000):
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
这个错误是:mysql默认对”C:\ProgramData\MySQL\MySQL Server 5.7\Uploads”,这个文件夹内的文件可以操作,如需修改目录为C :/,请打开my.ini文件修改路径。
修改为:
Secure-file-priv=”c:/”就可以加载在C盘下的文件了。
重启一下MySQL服务,运行services.msc,打开服务,找到MySQL57
重启动此服务。【这里我没有修改,还是按默认的文件夹uploads】
剩下的两个表格的数据插入,同上方法。这里不做详细写出。
9M,新建一个Java项目:学生信息管理系统--StudentsManager。
File -> New -> Project -> Java Project -> next -> Project Name,此处填写:StudentsManager
配置JRE,如上图,选择。点击Configure JRE..如下图
点击Add..
下图的Directory目录为刚才安装的Java JRE目录
最后刚刚添加的JRE勾选为默认的,然后ok
点击finish,完成创建
配置JDBC驱动,连接MySQL数据库,添加mysql-connector-java-5.1.39.jar
下载mysql-connector-java-5.1.39.zip,解压到C盘下,改名mysqlconnectorjava,把该目录下的mysql-connector-java-5.1.39.jar文件添加到StudentsManager工程里,如下图:
在,右击StudentsManager,Build Path,Add External Archives..
完成后如下图:
M1,右击StudentsManger,新建一个Java类,StudentsManager,工程Main()方法所在的主类,如下图
上图中StudentsManager .java文件代码:
/**
* 这是学生管理系统的主程序,main();
*/
//导入公共java包
import java.awt.*;
//import javax.swing.*;
/**
* @author Administrator
* @创建日期:2016-06-10
*/
//创建学生管理系统类
public class StudentsManager {
/**
* @param args
*/
public static void main(String[] args) {
//创建主界面窗口
MainInterface frame=new MainInterface();
//获取屏幕尺寸
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
//获取主界面的窗体尺寸
Dimension frameSize =frame.getSize();
//令主界面窗体居中
if(frameSize.height>screenSize.height)
frameSize.height=screenSize.height;
if(frameSize.width>screenSize.width)
frameSize.width=screenSize.width;
frame.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);
//令主界面显示
frame.setVisible(true);
}
}
M2,同上,再新建一个MainInterface类,窗体主界面类
MainInterface.java文件代码:
//系统主界面类
//导入系统的包
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//创建主界面类
public class MainInterface extends JFrame implements ActionListener
{
private static final long serialVersionUID = 1L;
//创建内容面板
JPanel contentPane;
//创建菜单栏(见267页的图12.1里的菜单栏)
JMenuBar jMenuBarSM=new JMenuBar();
JMenu jMenuFile=new JMenu("文件");
JMenuItem jMenuFileExit=new JMenuItem("退出");
JMenu jMenuStudents=new JMenu("学生信息管理");
JMenuItem jMenuStuName=new JMenuItem("按姓名查询");
JMenuItem jMenuStuId=new JMenuItem("按学号查询");
JMenuItem jMenuAddStu=new JMenuItem("添加学生");
JMenuItem jMenuDelStu=new JMenuItem("删除学生");
JMenu jMenuClass=new JMenu("班级信息管理");
JMenuItem jMenuOnClassId=new JMenuItem("按班级编号查询");
JMenuItem jMenuAddClass=new JMenuItem("添加班级");
JMenuItem jMenuDelClass=new JMenuItem("删除班级");
JMenu jMenuDepartment=new JMenu("部门系信息管理");
JMenuItem jMenuOnDepId=new JMenuItem("按部门系编号查询");
JMenuItem jMenuAddDep=new JMenuItem("添加部门系");
JMenuItem jMenuDelDep=new JMenuItem("删除部门系");
JMenu jMenuHelp=new JMenu("帮助");
JMenuItem jMenuHelpAbout=new JMenuItem("关于");
//创建标签,用于显示信息
JLabel jLabel1=new JLabel("欢迎使用学生信息管理系统");
JLabel jLabel2=new JLabel("2016年06月20日,林德军");
//构造方法,创建对象时自动调用
public MainInterface()
{
try{
//关闭框架窗口时的默认事件方法
setDefaultCloseOperation(EXIT_ON_CLOSE);
//调用初始化方法
jbInit();
}
catch(Exception exception){
exception.printStackTrace();
}
}
//界面初始化方法
private void jbInit() throws Exception
{
//创建内容面板和其布局
contentPane =(JPanel) getContentPane();
contentPane.setLayout(null);
//框架的大小和其标题
setSize(new Dimension(400,320));
setTitle("学生信息管理系统");
//添加事件监听器
jMenuFileExit.addActionListener(this);
jMenuHelpAbout.addActionListener(this);
jMenuAddStu.addActionListener(this);
jMenuDelStu.addActionListener(this);
jMenuStuName.addActionListener(this);
jMenuStuId.addActionListener(this);
jMenuOnClassId.addActionListener(this);
jMenuAddClass.addActionListener(this);
jMenuDelClass.addActionListener(this);
jMenuOnDepId.addActionListener(this);
jMenuAddDep.addActionListener(this);
jMenuDelDep.addActionListener(this);
//添加菜单条
setJMenuBar(jMenuBarSM);
//添加菜单组件到菜单条
jMenuBarSM.add(jMenuFile);
jMenuBarSM.add(jMenuStudents);
jMenuBarSM.add(jMenuClass);
jMenuBarSM.add(jMenuDepartment);
jMenuBarSM.add(jMenuFileExit);
jMenuBarSM.add(jMenuHelp);
//添加菜单项组件到菜单组件
jMenuFile.add(jMenuFileExit);
//学生信息管理菜单下的选择:按姓名查询,按学号查询,添加学生,删除学生
jMenuStudents.add(jMenuStuName);
jMenuStudents.add(jMenuStuId);
jMenuStudents.add(jMenuAddStu);
jMenuStudents.add(jMenuDelStu);
//班级信息管理菜单下的选择:按班级号查询,添加班级,删除班级
jMenuClass.add(jMenuOnClassId);
jMenuClass.add(jMenuAddClass);
jMenuClass.add(jMenuDelClass);
//部门系信息管理菜单下的选择:按系号查询,添加系,删除系
jMenuDepartment.add(jMenuOnDepId);
jMenuDepartment.add(jMenuAddDep);
jMenuDepartment.add(jMenuDelDep);
//帮助菜单下的
jMenuHelp.add(jMenuHelpAbout);
//添加标签到内容面板
contentPane.add(jLabel1);
contentPane.add(jLabel2);
//设置标签组件的大小和字体
jLabel1.setFont(new java.awt.Font("宋体",Font.BOLD,20));
jLabel1.setBounds(new Rectangle(65,70,275,55));
jLabel2.setFont(new java.awt.Font("宋体",Font.BOLD,16));
jLabel2.setBounds(new Rectangle(90,150,200,35));
}
//菜单事件的处理方法
public void actionPerformed(ActionEvent actionEvent)
{
//点击“文件”菜单下的“退出”菜单项
if(actionEvent.getSource()==jMenuFileExit)
{
System.exit(0);
}
//点击“学生查询”菜单下的“按姓名查询”菜单项
if(actionEvent.getSource()==jMenuStuName)
{
//创建“按姓名查询”面板对象
InquireOnStuName onName=new InquireOnStuName();
//移除主界面上原有的内容
this.remove(this.getContentPane());
this.setContentPane(onName);
//令界面可见
this.setVisible(true);
}
//点击“学生查询”菜单下的“按学号查询”菜单项
if(actionEvent.getSource()==jMenuStuId)
{
//创建“按学号查询”面板对象
InquireOnStuID onXH=new InquireOnStuID();
//移除主界面上原有的内容
this.remove(this.getContentPane());
this.setContentPane(onXH);
//令界面可见
this.setVisible(true);
}
//点击“学生管理”菜单下的“添加学生”菜单项
if(actionEvent.getSource()==jMenuAddStu)
{
//创建添加学生面板对象
AddStudents add=new AddStudents();
//移除主界面上原有的内容
this.remove(this.getContentPane());
this.setContentPane(add);
//令界面可见
this.setVisible(true);
}
//点击“学生管理”菜单下的“删除学生”菜单项
if(actionEvent.getSource()==jMenuDelStu)
{
//创建删除学生面板对象
DelStudents delete=new DelStudents();
//移除主界面上原有的内容
this.remove(this.getContentPane());
this.setContentPane(delete);
//令界面可见
this.setVisible(true);
}
//点击“班级信息管理”菜单下的“按班级编号查询”菜单项
if(actionEvent.getSource()==jMenuOnClassId)
{
//创建“编号查询”面板对象
InquireOnClassID onClassId=new InquireOnClassID();
//移除主界面上原有的内容
this.remove(this.getContentPane());
this.setContentPane(onClassId);
//令界面可见
this.setVisible(true);
}
//点击“班级管理”菜单下的“添加班级”菜单项
if(actionEvent.getSource()==jMenuAddClass)
{
//创建添加班级面板对象
AddClass addClass=new AddClass();
//移除主界面上原有的内容
this.remove(this.getContentPane());
this.setContentPane(addClass);
//令界面可见
this.setVisible(true);
}
//点击“班级管理”菜单下的“删除班级”菜单项
if(actionEvent.getSource()==jMenuDelClass){
//创建删除班级面板对象
DelClass delClass=new DelClass();
//移除主界面上原有的内容
this.remove(this.getContentPane());
this.setContentPane(delClass);
//令界面可见
this.setVisible(true);
}
//点击“部门系信息管理”菜单下的“按部门系编号查询”菜单项
if(actionEvent.getSource()==jMenuOnDepId)
{
//创建“编号查询”面板对象
InquireOnDepID onDepId=new InquireOnDepID();
//移除主界面上原有的内容
this.remove(this.getContentPane());
this.setContentPane(onDepId);
//令界面可见
this.setVisible(true);
}
//点击“部门系管理”菜单下的“添加部门系”菜单项
if(actionEvent.getSource()==jMenuAddDep)
{
//创建添加班级面板对象
AddDepartment addDep=new AddDepartment();
//移除主界面上原有的内容
this.remove(this.getContentPane());
this.setContentPane(addDep);
//令界面可见
this.setVisible(true);
}
//点击“部门系管理”菜单下的“删除部门系”菜单项
if(actionEvent.getSource()==jMenuDelDep){
//创建删除班级面板对象
DelDepartment delDep=new DelDepartment();
//移除主界面上原有的内容
this.remove(this.getContentPane());
this.setContentPane(delDep);
//令界面可见
this.setVisible(true);
}
//点击“帮助”菜单下的“关于”菜单项
if(actionEvent.getSource()==jMenuHelpAbout)
{
//创建“关于”面板对象
AboutMe about=new AboutMe();
//移除主界面上原有的内容
this.remove(this.getContentPane());
this.setContentPane(about);
//令界面可见
this.setVisible(true);
}
}
}
M3,同上,再新建一个DBConnect类,连接数据库的类
DBConnect.java文件代码如下:
/*数据库连接类*/
//导入sql数据库包
import java.sql.*;
//创建数据库连接类
public class DBConnect{
//静态方法提高数据库的连接效率
public static Connection getConn() throws Exception{
//驱动程序名
String driver="com.mysql.jdbc.Driver";
//URL指向要访问的数据库名:managestudents
String url="jdbc:mysql://127.0.0.1:3306/studentsmanager?useSSL=false";
//连接数据库的用户名
String user="root";
//Java连接MySQL数据库用户的密码
String passwd="lindejun";
//加载JDBC驱动---返回与带有给定字符串名的类或接口相关联的 Class 对象。
//第11行和下面这行不写也没关系,可能与工程中添加的mysql-connector-java-5.1.39-bin.jar有关吧
Class.forName(driver);
//创建连接数据库的对象conn
Connection conn=DriverManager.getConnection(url,user,passwd);
return conn;
/**
* 以上7行程序可以简写如下1行:
* return DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/studentsmanager?useSSL=false","root","lindejun");
* 这样写法紧凑,但是可读性比较差。
* */
}
}M4,同上,再新建一个InquireOnStuID类,按学号查询学生类。
InquireOnStuID.java文件代码:
//按学号查询学生面板类
//导入系统的类包
import java.awt.*;
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
//创建“学号查询学生”类面板
public class InquireOnStuID extends JPanel implements ActionListener
{
private static final long serialVersionUID = 1L;
//声明连接数据库对象
Connection conn;
//声明SQL语句对象
Statement st;
//创建组件对象:标签、文本行、单选
JLabel jLabel1=new JLabel("请输入待查询的学生的学号:");
JTextField xueHAO=new JTextField();
JLabel xueHAO2=new JLabel("学号是10位,如2016030607");
JButton jButton1=new JButton("查询");
JScrollPane jScrollPane1=new JScrollPane();
JTextArea jTextArea1=new JTextArea();
//构造方法
public InquireOnStuID()
{
try{
//调用初始化方法
jbInit();
}
catch(Exception exception){
exception.printStackTrace();
}
}
//面板初始化方法
private void jbInit() throws Exception
{
//连接数据库
conn=DBConnect.getConn();
st=conn.createStatement();
//框架的布局
this.setLayout(null);
//设置各组件的大小
jLabel1.setFont(new java.awt.Font("宋体",Font.BOLD,16));
jLabel1.setBounds(new Rectangle(46,4,222,32));
xueHAO.setBounds(new Rectangle(47,37,100,31));
xueHAO2.setBounds(new Rectangle(160,37,180,30));
jButton1.setBounds(new Rectangle(47,86,247,30));
jScrollPane1.setBounds(new Rectangle(24,130,305,109));
//添加按钮动作事件
jButton1.addActionListener(this);
//添加组件到面板
this.add(jScrollPane1);
jScrollPane1.getViewport().add(jTextArea1);
this.add(jLabel1);
this.add(xueHAO);
this.add(xueHAO2);
this.add(jButton1);
}
//点击按钮事件
public void actionPerformed(ActionEvent e)
{
//获取用户输入的学号
String xuehao=xueHAO.getText();
//清空文本区原有的内容
jTextArea1.setText("");
try{
//利用st对象执行SQL语句,返回结果集对象
ResultSet rs=st.executeQuery("select * from studentsinfo where xuehao='"+xuehao+"'");
//处理结果集:逐条显示结果集中的记录
//此处没有使用while,因为学号是唯一的
if(rs.next()){
jTextArea1.append("学号:"+rs.getString("xuehao")+"\n姓名:"+rs.getString("xingming")+"\n性别:"+rs.getString("xingbie")+"\n出生日期:"
+rs.getDate("dateString")+"\n籍贯:"+rs.getString("jiguan")+"\n班级号:"+rs.getString("ClassId"));
//清空文本行的内容
xueHAO.setText("");
}
else
JOptionPane.showMessageDialog(this,"没有这个学号!");
}
catch(Exception ex){
//利用消息对话框提示查询失败
JOptionPane.showMessageDialog(this,"查询失败!");
}
}
}
M5,同上,再新建一个InquireOnStuName类,按姓名查找类
InquireOnStuName.java文件代码:
//按姓名查询学生面板类
//导入系统的类包
import java.awt.*;
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
//创建“添加学生面板”类
public class InquireOnStuName extends JPanel implements ActionListener
{
private static final long serialVersionUID = 1L;
//声明连接数据库对象
Connection conn;
//声明SQL语句对象
Statement st;
//创建组件对象:标签、文本行、单选
JLabel jLabel1=new JLabel("请输入待查询的学生的姓名:");
JTextField jTextField1=new JTextField();
JButton jButton1=new JButton("查询");
JScrollPane jScrollPane1=new JScrollPane();
JTextArea jTextArea1=new JTextArea();
//构造方法
public InquireOnStuName()
{
try{
//调用初始化方法
jbInit();
}
catch(Exception exc
展开阅读全文