《简单学生信息管理系统java课程设计.doc》由会员分享,可在线阅读,更多相关《简单学生信息管理系统java课程设计.doc(62页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date简单学生信息管理系统java课程设计存档资料 成绩:目录 1设计目的32设计任务32.1任务说明32.2系统目标42.2使用范围42.3功能要求43 设计内容43.1界面构建43.2详细设计53.2.1模块设计53.2.2数据库设计53.2.3运行调试63.2.4主要源代码105总结与展望10参考文献111 设计目的本程序用于用户对少量学生信息进行简单的管理,本程序针
2、对于对安全系数要求不高,操作不是很复杂的小型客户开发。本程序可以实现对学生信息的添加、查询、修改、删除等操作,同时支持查看所有学生信息,功能完善,界面简洁美观,布局合理,操作简便,简单易用,任何人可轻松操作。同时,本程序对系统要求配置较低,运行速度快,而却对数据库管理要求较低该数据库可实现关系较为简单的数据管理。2 设计任务2.1任务说明设计一个简单学生个人信息管理系统,该系统具有录入,查询,修改三项基本功能。要求如下: (1)具有简单的录入,查询和修改功能。 (2)修改学生信息必须输入学号,然后对姓名、性别和专业等修改; (3)使用文件存储数据。(也可用数据库) (4)学生个人信息必须包括:
3、学号、姓名、性别、籍贯、系别。 2.2系统目标软件开发的意图便于用户对学生的管理,方便查看学生的情况。如用户对学生基本信息进行录入、查询、修改、删除等。2.2使用范围 本系统仅针对用户对少量学生进行信息管理。2.3功能要求 1录入学生基本信息的功能 2查询学生基本信息的功能 3修改学生基本信息的功能 4删除学生基本信息的功能 5显示所有学生信息的功能3 设计内容3.1界面构建1、为了便于各种操作,软件采用多窗口的模式。用户可在不同窗口进行相应操作(录入、查询、修改、删除、显示所有学生省信息)。 2、主窗口是用户进行各种操作的平台,具体操作在各个独立功能窗口中完成。 3、主窗口的主要功能位于菜单
4、中,菜单为进入各个功能窗口的唯一通道。 4、当用户在进行个别录入、删除或错误输入操作时,会弹出相应对话框提示用户。如当录入成功或删除成功,弹出成功以及相应的简明信息提示当,当录入、删除失败以及输入不当是,弹出错误以及简单的错误原因提示用户重新操作。 5、界面布局尽量合理,各组件位置分布均匀美观。3.2详细设计进入界面3.2.1模块设查询修改删除添加3.2.2数据库设计学生信息表3.2.3运行调试操作界面 添加学生信息修改学生信息查找学生信息3.2.4主要源代码import java.sql.Connection;import java.sql.DriverManager;import java
5、.sql.PreparedStatement;import java.sql.ResultSet;public class SqlHelper /对数据库进行操作PreparedStatement ps=null;Connection ct=null;ResultSet rs=null;String driver=com.microsoft.jdbc.sqlserver.SQLServerDriver;String url=jdbc:microsoft:sqlserver:/127.0.0.1:1433;databaseName=Jsql;String user=sa;String passw
6、d=sa;public void close()try if(rs!=null) rs.close(); if(ps!=null) ps.close(); if(ct!=null) ct.close(); catch(Exception e) e.printStackTrace(); public ResultSet queryExecute(String sql)try Class.forName(driver); ct=DriverManager.getConnection(url, user, passwd); ps=ct.prepareStatement(sql); rs=ps.exe
7、cuteQuery(); catch(Exception e)e.printStackTrace();finally return rs;/查询数据库操作public ResultSet queryExectue(String sql,String paras)try Class.forName(driver); ct=DriverManager.getConnection(url, user, passwd);ps=ct.prepareStatement(sql);for(int i=0; iparas.length; i+) ps.setString(i+1, parasi); rs=ps
8、.executeQuery(); catch(Exception e) e.printStackTrace(); finally return rs; /把增、删、改放在一起对数据库操作SuppressWarnings(finally)public boolean updExecute(String sql,String paras)boolean b=true;try Class.forName(driver); ct=DriverManager.getConnection(url, user, passwd); ps=ct.prepareStatement(sql); for(int i=
9、0; iparas.length; i+) ps.setString(i+1, parasi); if(ps.executeUpdate()!=1) b=false; catch (Exception e) b=false; e.printStackTrace(); finally return b; import javax.swing.*;import java.sql.*;import java.util.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement
10、;import java.sql.ResultSet;import java.util.Vector;import java.awt.*;import java.awt.Event.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;/学生管理类public class StuManger extends JFrame implements ActionListener JPanel jp1,jp2; JLabel jl1; JButton jb1,jb2,jb3,jb4; JTable jt; JS
11、crollPane jsp; JTextField jtf; StuMod ms; public static void main(String args) StuManger s=new StuManger(); public StuManger() jp1=new JPanel(); jtf=new JTextField(10); jb1=new JButton(查询); jb1.addActionListener(this); jl1=new JLabel(请输入名字); jp1.add(jl1); jp1.add(jtf); jp1.add(jb1); jp2=new JPanel()
12、; jb2=new JButton(添加); jb2.addActionListener(this); jb3=new JButton(删除); jb3.addActionListener(this); jb4=new JButton(修改); jb4.addActionListener(this); jp2.add(jb2); jp2.add(jb3); jp2.add(jb4); ms=new StuMod(); String paras=1; ms.queryStu(select * from stu where 1=?, paras); jt=new JTable(ms); jsp=n
13、ew JScrollPane(jt); this.add(jsp); this.add(jp1,North); this.add(jp2,South); this.setSize(400,300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); public void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif(e.getSource()=jb1)System.out.println(希望查询);St
14、ring name=this.jtf.getText().trim();String sql=select * from stu where stuName=?;String paras=name; ms=new StuMod();ms.queryStu(sql, paras); jt.setModel(ms); else if(e.getSource()=jb2) StuAddDialog g=new StuAddDialog(this,添加学生,true); ms=new StuMod(); String paras2=1; ms.queryStu(select * from stu wh
15、ere 1=?, paras2); jt.setModel(ms); else if(e.getSource()=jb4) int rowNum=this.jt.getSelectedRow(); if(rowNum=-1) JOptionPane.showMessageDialog(this, 请选择一行); return; / new StuUpdDialog(this,修改,true,ms,rowNum); ms=new StuMod(); String paras2=1; ms.queryStu(select * from stu where 1=?, paras2); jt.setM
16、odel(ms); String stuId=(String)ms.getValueAt(rowNum,0); System.out.println(id=+stuId); /删除 else if(e.getSource()=jb3) int rowNum=this.jt.getSelectedRow(); if(rowNum=-1) JOptionPane.showMessageDialog(this, 请选择一行); return; jt.setModel(ms);String stuId=(String)ms.getValueAt(rowNum,0);System.out.println
17、(id=+stuId);String sql=delete from stu where stuid=?;String paras=stuId;StuMod temp=new StuMod();temp.updStu(sql, paras); ms=new StuMod();String paras2=1; ms.queryStu(select * from stu where 1=?, paras2);jt.setModel(ms); 5总结与展望做课设让我对java有了新的认识,首先我接触了很多上课见过见过但没有实际用过的类和方法,让我对编程有了许多新的思想。大一学了C语言,虽然当时学的还
18、不错,由于学的都是入门知识,所以自己做的都是DOS下执行的程序,虽然可以实现一定的功能,但和自己平时用的软件相差很大。这学期刚开课学java感觉没什么新鲜感,它的跨平台特性也只是听听,根本没有认识,知道学到第七章图形界面用户编程的时候,我发现学会之后自己可以做出来的软件就更接近平时使用的软件了,不过由于平时学习不刻苦,到时没有时间静下心来写java代码,知道结课做课设,才静下心来开始研究java,结合以前的编程知识,做起了自己的程序。我曾经用c语言做过这个系统,做起来会比较熟练,同时想通过做课设学习一点数据库的知识,感觉这些知识更贴近实际应用,选好之后开始准备课设,先从最简单的主窗体,到主窗体
19、的菜单,组件添加,再到各个功能的独立窗体的建立,再到最后的数据库连接,功能的实现,一步步走来,收获颇多。其中独立窗体中的组件排版是碰到的第一个问题,最简单的方法是在建每个窗体时把所有需要的组件全部重新添加进去,但是这样代码会很长,而却会多占很多内存空间,于是我决定把个功能窗体中共同的组件在一个新方法中统一加载,为了减小占内存空间,组建的在主类的构造方法中生成,所有独立功能窗口公用组件,这样既减少了代码额长度,又提高了程序的内存利用率。还有很多问题,都在权衡之后得到了较优的解决方法。它能够使这次课设还让我对java的跨平台性有了进一步认识,当我学好代码兴致勃勃的想把它做成exe可执行文件时,在网上搜索之后发现它似乎很难实现,就是应为它的java语言的实现机制,通过jre来执行执行java代码,而不是调用系统本地代码。除此之外我还学到了新的编程技巧,比如对try,catch的运用。刚学的时候就是照书本上的打,很不情愿但是必须打的代码,在做课设时,我发现他又很神奇的功能可以帮助我解决用其他办法不好解决的问题,比如关闭窗口。刚开始程序只有主窗口时,关闭很好实现,但随着程序功能的完善,需要关闭的窗口越来越多,需要关闭的类型也便多了,到了关闭Dialog的时候,发现Dialog不能强制转化为Frame,如果想用前面的方法管还得把多处代码进行修改,不过我想到了用try来解决这个问题。 -
限制150内