1、JAVA 课程设计题目: JAVA 学籍管理系统 姓 名: 学 号: 班 级: 日 期: 目 录一、设计思路 .3二、具体实现 .3三、运行调试与分析讨论 .4四、设计体会与小结 .8五、参考文献 .8六、附录 .8一、设计思路随着社会经济的发展,入学的同学越来越多,为方便对同学学籍信息的的管理,设计学籍管理软家来管理本班级同学的学籍信息。该软件应支持添加、删除、修改、查询功能。并且查询功能分为两种情况显示查询的结果:查询方式主要是支持学号查询,例如:输入“111” ,则显示该学生的信息。运用流式、卡片、整体布局方式对系统的主界面和各功能界面进行设计;通过连接数据库的方式来实现对数据的存储;各
2、功能实现时访问数据库,并对数据信息进行读取,运用 Java 语句对其进行输出,学号查询时显示在文本框中;管理员登录、管理员添加信息,系统提示功能用来提醒用户的错误操作和输入时的错误信息,提醒用户进行改正二、具体实现该系统中的信息存储在数据库中,并实现以下各功能:管理员登录:管理员帐号 admin,密码:12345,进行增删查改。添加功能:添加数据信息,当有新同学进入是可以添加该同学的信息。通过文本框读入添加信息,连接数据库后储存数据。精确查询:输入要查询同学的学号,显示出该同学的信息。通过文本框读入要查找的信息,用 SQL 语句在数据库中进行查找。删除功能:该功能和精确查询功能在同一功能模块中
3、实现,有于删除同学信息并更新数据库信息。修改功能:当同学的信息改变时,用此功能更新同学信息。通过对数据库信息的更新保存最新信息。每种功能通过一个类来实现:类分分为主类、精确查询类、修改类、添加类、增加类。主类(Info_manager )实现系统主界面以及和各功能界面的连接;精确查询类(SearchStudent) 实现对数据库中数据的精确查询;修改类(MdifyStudent)实现对数据的修改更新;添加类(AddStudent)向数据库中添加新数据;删除类(DeleteStudent) 实现对数据的删除。该系统需要用数据库来实现对信息的存储,每次对信息的操作都要访问数据库,并对数据库的信息作
4、相应的读入和取出。该系统流程图如下:系统管理员增加信息删除信息查询信息修改信息关于系统退出图 1 系统流程图开始A c t i o n E v e n t e查询的内容修改的内容添加的内容S Q L 语句模糊查询内容添加号码修改号码精确查询整体查询模糊查询电话信息发送添加S Q L 语句发送修改S Q L 语句发送查询S Q L 语句发送S Q L 语句结果结果显示结束图 2 程序流程图三、运行调试与分析讨论系统的详细设计代码请查阅附带的代码。以下仅对各个界面进行截图展示:图 3 系统登录界面图 4 系统主要界面图 5 修改信息时的界面图 6 添加信息的界面图 7 删除界面图 8 查询界面运行
5、 JAVA 程序中的 Infor_Manager 文件,显示系统的主界面,如图三所示,主界面有进入其他子功能的按钮,选择相应的按钮便可进入相应的功能。添加号码功能如图四所示,根据提示输入要添加的信息,点击确定,将弹出提示框,确认是否添加。修改号码功能如图五所示,首先输入要修改的人姓名,点击开始修改,在下面的文本框现实当前数据库内所存该人的信息,同时录入修改键变化为可点击,在文本框内输入要修改的学号,点击录入修改,系统将新信息录如数据库。点击精确查询按钮,将弹出查询对话框,输入学号便可以精确查询到此人的所有学籍信息。查询如图七所示,将显示数据库中所存的所有号码信息。四、设计体会与小结一周的课设,
6、自己通过查找资料、复习课本、编程调试,写实验报告等环节,进一步掌握了以前学到的知识,并且还对 GUI 组键的应用有了更深入的认识与掌握,另外还学到了一些新东西,比如 JAVA 的 SWING、AWT 包,以前是没有接触过的,可是通过这次课程设计使得我们对这个包更了解。通过与数据库的连接掌握了 Java 与数据库的连接技术。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习 java语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。五、参考文献1朱福喜,尹为民等编著.Java 语言与面向对象程序设计.武汉:武
7、汉大学出版社,2002.12 2冯军,程超等编著.JBuilder 9.0 程序设计. 北京:中国水利水电出版社,2004.53丁振凡,黎章等编著.Java 语言实用教程 北京:北京邮电大学出版社,2005.84何桥,李肃义等编著.Java 程序设计简明教程.北京:中国水利水电出版社,2004.9六、附录程序的主要代码:主界面模块主要代码登录界面 Info_Manager.javapublic class Info_Manage extends Frame implements ActionListener JLabel JLUserName = new JLabel(“用户名:“);/ 创建
8、一个标签对象,现实用户名JLabel JLPaw = new JLabel(“密码:“ );/ 创建一个标签对象,现实密码JTextField JTUserName = new JTextField();/ 创建一个密码框对象JPasswordField JPsw = new JPasswordField();/ 创建一个对象框对象JButton JB1 = new JButton(“登录“);/ 创建按钮对象JButton JB2 = new JButton(“取消“);public Info_Manage() this.setTitle(“学籍管理系统“);/ 设置窗口的显示标题this.
9、setLayout(null);JLUserName.setBounds(100, 40, 100, 20);/ 设置姓名标签显示的大小和位置this.add(JLUserName);/ 将组件添加到容器中JTUserName.setBounds(200, 40, 80, 20);/ 设置姓名输入对话框标签的大小和位置this.add(JTUserName);JLPaw.setBounds(100, 100, 60, 20);/ 设置密码标签显示的大小和位置this.add(JLPaw);/ 将组件添加到容器中JPsw.setBounds(200, 100, 80, 20);/ 设置密码框的大
10、小和位置this.add(JPsw);/ 将组件添加到容器中JB1.setBounds(100, 200, 60, 20);/ 设置按钮显示的大小和位置this.add(JB1);/ 将组件添加到容器中JB1.addActionListener(this);JB2.setBounds(200, 200, 60, 20);/ 设置按钮显示的大小和位置this.add(JB2);/ 将组件添加到容器中JB2.addActionListener(this);this.setVisible(true);this.setBounds(10, 10, 400, 250);addWindowListener
11、(new WindowAdapter()/ 设置关闭窗口的事件监听public void windowClosing(WindowEvent e)System.exit(0););public static void main(String args) / TODO Auto-generated method stubnew Info_Manage();public void actionPerformed(ActionEvent e)/ 单机登录时的事件处理if (e.getSource() = JB1) String name = JTUserName.getText();/ 获取用户名S
12、tring password = new String(JPsw.getPassword();/ 获取密码if (name != null / 主页打开this.setVisible(false);/ 隐藏该登录窗口/ 取消按钮/ else if(e.getSource()=JB2)/ / System.exit(0);/ else JOptionPane.showMessageDialog(null, “对不起!亲,您输入的用户名或密码有误,请重新输入“);管理功能模块主要代码 Student_manage.javapublic class Student_manage extends JF
13、rame implements ActionListener / 设置选项信息JMenuBar jmb = new JMenuBar();JMenu Message = new JMenu(“学生信息“);JMenuItem Item1 = new JMenuItem(“增加学籍信息 “);JMenuItem Item2 = new JMenuItem(“删除学籍信息 “);JMenuItem Item3 = new JMenuItem(“修改学籍信息 “);JMenuItem Item4 = new JMenuItem(“查询学籍信息 “);JMenu exit = new JMenu(“系
14、统“ );JMenuItem Item5 = new JMenuItem(“系统信息 “);JMenuItem Item6 = new JMenuItem(“退出“ );/ JPanel panel = new JPanel();/设置图像面板/ String url = “D:Systemstitle.jpg“;/图像添加public Student_manage() super(“管理界面“ );/ JLabel img = new JLabel(new ImageIcon(url);/图像添加/ img.setBounds(0,0,500,100);/图像添加/ panel.add(im
15、g);/图像添加this.setSize(500, 400);this.setVisible(true);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setJMenuBar(jmb);jmb.add(Message);jmb.add(exit);/ 添加到组件Message.add(Item1);Message.add(Item2);Message.add(Item3);Message.add(Item4);Item1.addActionListener(this);Item
16、2.addActionListener(this);Item3.addActionListener(this);Item4.addActionListener(this);/ 设置退出exit.add(Item5);exit.add(Item6);Item5.addActionListener(this);Item6.addActionListener(this);public void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif (e.getSource() = Item1) AddStudent ad
17、 = new AddStudent(); else if (e.getSource() = Item2) DeleteStudent ds = new DeleteStudent(); else if (e.getSource() = Item3) ModifyStudent ms = new ModifyStudent(); else if (e.getSource() = Item4) SearchStudent ss = new SearchStudent(); else if (e.getSource() = Item5) / System.out.println(“我的学籍管理系统“
18、);JOptionPane.showMessageDialog(null, “亲,欢迎访问我的学籍管理系统“); else System.exit(0);public static void main(String args) / TODO Auto-generated method stubnew Student_manage();增加模块代码主要代码 AddStudent.javapublic class AddStudent extends JFrame implements ActionListener JLabel JL = new JLabel(“添加学生基本信息“ , JLabe
19、l.CENTER);JLabel JLNumber = new JLabel(“学号:“);/ 创建标签对象,用于显示学号JTextField JTNumber = new JTextField();/ 创建文本框对象,用于接收学号信息JLabel JLName = new JLabel(“姓名:“);/ 创建标签对象,用于显示姓名JTextField JTName = new JTextField();JLabel JLClass = new JLabel(“班级:“);/ 创建标签对象,用于显示班级JTextField JTClass = new JTextField();JLabel J
20、LSex = new JLabel(“性别:“ );/ 创建标签对象,用于显示性别ButtonGroup BG = new ButtonGroup();JRadioButton JRB1 = new JRadioButton(“男“);JRadioButton JRB2 = new JRadioButton(“女“);JLabel JL1 = new JLabel(“学院:“); / 创建标签对象,用于显示JTextField JT1 = new JTextField();JLabel JL2 = new JLabel(“生日:“); / 创建标签对象,用于显示生日JTextField JT2
21、 = new JTextField();JButton JBAdd = new JButton(“添加:“);/ 创建标签对象JButton JBNext = new JButton(“重置:“);/ 创建标签对象JButton JBExit = new JButton(“退出:“);/ 创建标签对象String sql = “;public AddStudent() this.setTitle(“添加学生学籍信息“);this.setLayout(null);JL.setFont(new Font(“TimesRoman“, Font.BOLD, 24);/ 设置字体和颜色JL.setFor
22、eground(Color.red);JL.setFont(new Font(“宋体“, Font.PLAIN, 19);JL.setBounds(100, 30, 200, 40);this.add(JL);/ 以下为设置前面所创建的标签和文本框,以按照顺序显示JLNumber.setBounds(100, 80, 100, 20);this.add(JLNumber);JTNumber.setBounds(200, 80, 80, 20);this.add(JTNumber);JLName.setBounds(100, 120, 60, 20);this.add(JLName);JTNam
23、e.setBounds(200, 120, 80, 20);this.add(JTName);JLSex.setBounds(100, 160, 100, 20);this.add(JLSex);JRB1.setBounds(200, 160, 40, 20);JRB2.setBounds(300, 160, 40, 20);this.add(JRB1);this.add(JRB2);BG.add(JRB1);BG.add(JRB2);JL2.setBounds(100, 200, 80, 20);this.add(JL2);JT2.setBounds(200, 200, 80, 20);th
24、is.add(JT2);JLClass.setBounds(100, 240, 60, 20);this.add(JLClass);JTClass.setBounds(200, 240, 80, 20);this.add(JTClass);JL1.setBounds(100, 280, 60, 20);this.add(JL1);JT1.setBounds(200, 280, 80, 20);this.add(JT1);JBAdd.setBounds(80, 320, 90, 20);this.add(JBAdd);JBAdd.addActionListener(this);JBNext.se
25、tBounds(190, 320, 90, 20);this.add(JBNext);JBNext.addActionListener(this);JBExit.setBounds(300, 320, 90, 20);this.add(JBExit);JBExit.addActionListener(this);this.setBounds(10, 10, 500, 400);this.setVisible(true);public void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif (e.getSou
26、rce() = JBAdd) String snumber = JTNumber.getText();/ 获取文本框中所输入的信息String sname = JTName.getText();/ 获取文本框中所输入的信息String sclass = JTClass.getText();/ 获取文本框中所输入的信息String ssex = “女“; / 获取文本框中所输入的信息if (JRB1.isSelected()ssex = “男“;elsessex = “女“;String scollect = JT1.getText();String sbir = JT2.getText();s
27、ql = “select * from student where id=“ + snumber + “;/ 根据ID对数据库信息进行查询try Class.forName(“com.mysql.jdbc.Driver“);/ 使用数据源进行数据库连接Connection con = (DriverManager.getConnection(“jdbc:mysql:/localhost/student_info?user=root/ 数据源名称 student_infoStatement stmt = con.createStatement();ResultSet rs = stmt.exec
28、uteQuery(sql);/ 传入sql语句,执行查询if (rs.next()/ 如果有查询结果,则提示该号已经存在,否则执行数据库写入JOptionPane.showMessageDialog(null, “该号已经存在“);else / 将文本框中所有的输入信息都写入到数据库中,sql = “insert into student values(“ + snumber + “,“+ sname + “,“ + sclass + “,“ + ssex + “,“+ scollect + “,“ + sbir + “)“;/ 执行SQL语句,并将返回值赋值给iint i = stmt.ex
29、ecuteUpdate(sql);if (i 0)/ 判断如果i小于0 ,则说明添加成功,返回相应的提示信息JOptionPane.showMessageDialog(null, “添加成功“);else/ 否则提示添加失败JOptionPane.showMessageDialog(null, “添加失败“); catch (Exception ee) if (e.getSource() = JBNext) JTNumber.setText(null);JTName.setText(null);JTClass.setText(null);JT1.setText(null);JT2.setTex
30、t(null);if (e.getSource() = JBExit) setVisible(false);/* param args*/public static void main(String args) / TODO Auto-generated method stubnew AddStudent();删除模块主要代码 DeleteStudnet.javapublic class DeleteStudent extends JFrame implements ActionListener JLabel JL = new JLabel(“删除学生学籍信息“ , JLabel.CENTER
31、);JLabel JLNumber = new JLabel(“学号:“);/ 创建标签对象,用于显示学号JTextField JTNumber = new JTextField();/ 创建文本框对象,用于获取学号信息JLabel JLName = new JLabel(“姓名:“);/ 创建标签对象,用于显示姓名输入提示JTextField JTName = new JTextField();/ 创建文本框对象,用于获取姓名信息JButton JBDel = new JButton(“删除:“ );/ 创建按钮对象,用于显示删除JButton JBNext = new JButton(“重
32、置:“);/ 创建按钮对象,用于显示重置JButton JBExit = new JButton(“退出:“);/ 创建按钮对象,用于显示退出String sql = “;public DeleteStudent() this.setTitle(“删除学生学籍信息“);this.setLayout(null);JL.setFont(new Font(“TimesRoman“, Font.BOLD, 24);JL.setForeground(Color.red);JL.setFont(new java.awt.Font(“宋体“, Font.PLAIN, 19);JL.setBounds(100
33、, 30, 200, 40);this.add(JL);JLNumber.setBounds(100, 120, 100, 20);this.add(JLNumber);JTNumber.setBounds(200, 120, 80, 20);this.add(JTNumber);JLName.setBounds(100, 160, 60, 20);this.add(JLName);JTName.setBounds(200, 160, 80, 20);this.add(JTName);JBDel.setBounds(80, 320, 90, 20);this.add(JBDel);JBDel.
34、addActionListener(this);JBNext.setBounds(190, 320, 90, 20);this.add(JBNext);JBNext.addActionListener(this);JBExit.setBounds(300, 320, 90, 20);this.add(JBExit);JBExit.addActionListener(this);this.setBounds(10, 10, 500, 400);this.setVisible(true);addWindowListener(new WindowAdapter() public void windo
35、wClosing(WindowEvent e) System.exit(0););public void actionPerformed(ActionEvent e) / 执行操作if (e.getSource() = JBDel) String snumber = JTNumber.getText();/ 获取到文本框中填入的学号信息String sname = JTName.getText();/ 获取到文本框中填入的姓名信息sql = “select * from student where id=“ + snumber + “;try Class.forName(“com.mysql.
36、jdbc.Driver“);/ 使用数据源进行数据库连接Connection con = (DriverManager.getConnection(“jdbc:mysql:/localhost/student_info?user=root/ 数据源名称Statement stm = con.createStatement();ResultSet rs = stm.executeQuery(sql);/ 传入sql语句if (rs.next() sql = “delete from student where id=“ + snumber + “;int n = stm.executeUpdat
37、e(sql);if (n 0)/ 如果执行成功则返回删除成功JOptionPane.showMessageDialog(null, “删除成功“);else/ 否则提示删除失败JOptionPane.showMessageDialog(null, “删除失败“); else / 如果不存在这个学号的学生,则返回相应的信息JOptionPane.showMessageDialog(null, “不存在该学号学生“); catch (Exception er) if (e.getSource() = JBNext) JTNumber.setText(null);JTName.setText(nul
38、l);if (e.getSource() = JBExit) setVisible(false);/* param args*/public static void main(String args) new DeleteStudent();查询模块完整代码 SearchStudent.javapublic class SearchStudent extends JFrame implements ActionListener JLabel JL = new JLabel(“查询学生基本信息“ , JLabel.CENTER);JLabel JLNumber = new JLabel(“请输入
39、学号:“); / 创建标签对象,用于提示输入查询学号JTextField JTNumber = new JTextField();/ 创建文本框对象,用于接收学号信息JLabel JLName = new JLabel(“姓名:“);/ 创建标签对象,用于提示输入查询姓名JTextField JTName = new JTextField();/ 创建文本框对象,用于接收姓名信息JLabel JLClass = new JLabel(“班级:“);/ 创建标签对象,用于提示输入查询班级JTextField JTClass = new JTextField();/ 创建文本框对象,用于接收班级信
40、息JLabel JLSex = new JLabel(“性别:“ );/ 创建标签对象,用于提示输入查询性别ButtonGroup BG = new ButtonGroup();/ 创建文本框对象,用于接收性别信息JRadioButton JRB1 = new JRadioButton(“男“);JRadioButton JRB2 = new JRadioButton(“女“);JLabel JL1 = new JLabel(“学院:“); / 创建标签对象,用于提示输出查询JTextField JT1 = new JTextField();/ 创建文本框对象,用于接收学号信息JLabel J
41、L2 = new JLabel(“生日:“); / 创建标签对象,用于提示输出查询生日JTextField JT2 = new JTextField();/ 创建文本框对象,用于接收学号信息JButton JBSet = new JButton(“查询:“);/ 创建按钮对象JButton JBNext = new JButton(“重置:“);/ 创建按钮对象JButton JBExit = new JButton(“退出:“);/ 创建按钮对象String sql = “;public SearchStudent() / 设置所有的窗口大小和位置this.setTitle(“查询学生学籍信
42、息“);this.setLayout(null);JL.setFont(new Font(“TimesRoman“, Font.BOLD, 24);/ 设置字体和颜色JL.setForeground(Color.red);JL.setFont(new Font(“宋体“, Font.PLAIN, 19);JL.setBounds(100, 30, 200, 40);this.add(JL);/ 以下为设置前面所创建的标签和文本框,以按照顺序显示JLNumber.setBounds(100, 80, 100, 20);this.add(JLNumber);JTNumber.setBounds(2
43、00, 80, 80, 20);this.add(JTNumber);JLName.setBounds(100, 160, 60, 20);this.add(JLName);JTName.setBounds(200, 160, 80, 20);this.add(JTName);JLSex.setBounds(100, 200, 100, 20);this.add(JLSex);JRB1.setBounds(200, 200, 40, 20);JRB2.setBounds(300, 200, 40, 20);this.add(JRB1);this.add(JRB2);BG.add(JRB1);B
44、G.add(JRB2);JL2.setBounds(100, 240, 80, 20);this.add(JL2);JT2.setBounds(200, 240, 80, 20);this.add(JT2);JLClass.setBounds(100, 280, 60, 20);this.add(JLClass);JTClass.setBounds(200, 280, 80, 20);this.add(JTClass);JL1.setBounds(100, 320, 60, 20);this.add(JL1);JT1.setBounds(200, 320, 60, 20);this.add(J
45、T1);JBSet.setBounds(80, 120, 90, 20);this.add(JBSet);JBSet.addActionListener(this);JBNext.setBounds(190, 120, 90, 20);this.add(JBNext);JBNext.addActionListener(this);JBExit.setBounds(300, 120, 90, 20);this.add(JBExit);JBExit.addActionListener(this);this.setBounds(10, 10, 500, 400);this.setVisible(tr
46、ue);public void actionPerformed(ActionEvent e) / TODO Auto-generated method stub/ TODO Auto-generated method stubif (e.getSource() = JBSet) String snumber = JTNumber.getText();/ 获取文本框中所输入的信息String sname = JTName.getText();/ 获取文本框中所输入的信息String sclass = JTClass.getText();/ 获取文本框中所输入的信息String ssex = “女
47、“; / 获取文本框中所输入的信息if (JRB1.isSelected()ssex = “男“;String scollect = JT1.getText();String sbir = JT2.getText();sql = “select * from student where id=“ + snumber + “;/ 根据ID对数据库信息进行查询try Class.forName(“com.mysql.jdbc.Driver“);/ 使用数据源进行数据库连接Connection con = (DriverManager.getConnection(“jdbc:mysql:/local
48、host/student_info?user=root/ 数据源名称Statement stm = con.createStatement();ResultSet rs = stm.executeQuery(sql);/ 传入sql语句,执行查询if (rs.next()/ 将查询到的数据返回给相应的变量String name = rs.getString(2);JTName.setText(name);String clas = rs.getString(3);JTClass.setText(clas);String sex = rs.getString(4);JRB1.setText(sex);String collect = rs.getString(5);JT1.setText(collect);String bir = rs.getString(6);JT2.setText(bir);int n = stm.executeUpdate(sql);if (n 0)/ 判断是否查询成功则返回各自输出结果JOptionPane.showMessageDialog(null, “查询成功“);else/ 否则提示添加失败JOptionPane.showMessageDialog(null, “查询失败“); else / 否则提示不存在该学号学生JOpti