资源描述
(完整word版)简单学生信息管理系统java课程设计
数据库课程设计
-简单学生信息管理系统
学院:计算机科学学院
专业:软件工程02
学号:41109050209
姓名:李欢欢
目录
1设计目的 3
2设计任务 3
2.1任务说明 3
2.2系统目标 4
2.2使用范围 4
2.3功能要求 4
3 设计内容 4
3.1界面构建 4
3.2详细设计 5
3.2.1模块设计 5
3.2.2数据库设计 5
3.2.3运行调试 6
3.2.4主要源代码 10
5总结与展望 10
参考文献 11
1 设计目的
本程序用于用户对少量学生信息进行简单的管理,本程序针对于对安全系数要求不高,操作不是很复杂的小型客户开发。本程序可以实现对学生信息的添加、查询、修改、删除等操作,同时支持查看所有学生信息,功能完善,界面简洁美观,布局合理,操作简便,简单易用,任何人可轻松操作。
同时,本程序对系统要求配置较低,运行速度快,而却对数据库管理要求较低该数据库可实现关系较为简单的数据管理。
2 设计任务
2.1任务说明
设计一个简单学生个人信息管理系统,该系统具有录入,查询,修改三项基本功能。要求如下:
(1)具有简单的录入,查询和修改功能。
(2)修改学生信息必须输入学号,然后对姓名、性别和专业等修改;
(3)使用文件存储数据。(也可用数据库)
(4)学生个人信息必须包括:学号、姓名、性别、籍贯、系别。
2.2系统目标
软件开发的意图便于用户对学生的管理,方便查看学生的情况。如用户对学生基本信息进行录入、查询、修改、删除等。
2.2使用范围
本系统仅针对用户对少量学生进行信息管理。
2.3功能要求
1录入学生基本信息的功能
2查询学生基本信息的功能
3修改学生基本信息的功能
4删除学生基本信息的功能
5显示所有学生信息的功能
3 设计内容
3.1界面构建
1、为了便于各种操作,软件采用多窗口的模式。用户可在不同窗口进行相应操作(录入、查询、修改、删除、显示所有学生省信息)。
2、主窗口是用户进行各种操作的平台,具体操作在各个独立功能窗口中完成。
3、主窗口的主要功能位于菜单中,菜单为进入各个功能窗口的唯一通道。
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.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 passwd="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.executeQuery();
}
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; i<paras.length; i++)
{
ps.setString(i+1, paras[i]);
}
rs=ps.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=0; i<paras.length; i++)
{
ps.setString(i+1, paras[i]);
}
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;
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;
JScrollPane 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();
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=new 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 stub
if(e.getSource()==jb1){
System.out.println("希望查询");
String 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 where 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.setModel(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("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语言,虽然当时学的还不错,由于学的都是入门知识,所以自己做的都是DOS下执行的程序,虽然可以实现一定的功能,但和自己平时用的软件相差很大。这学期刚开课学java感觉没什么新鲜感,它的跨平台特性也只是听听,根本没有认识,知道学到第七章图形界面用户编程的时候,我发现学会之后自己可以做出来的软件就更接近平时使用的软件了,不过由于平时学习不刻苦,到时没有时间静下心来写java代码,知道结课做课设,才静下心来开始研究java,结合以前的编程知识,做起了自己的程序。
我曾经用c语言做过这个系统,做起来会比较熟练,同时想通过做课设学习一点数据库的知识,感觉这些知识更贴近实际应用,选好之后开始准备课设,先从最简单的主窗体,到主窗体的菜单,组件添加,再到各个功能的独立窗体的建立,再到最后的数据库连接,功能的实现,一步步走来,收获颇多。其中独立窗体中的组件排版是碰到的第一个问题,最简单的方法是在建每个窗体时把所有需要的组件全部重新添加进去,但是这样代码会很长,而却会多占很多内存空间,于是我决定把个功能窗体中共同的组件在一个新方法中统一加载,为了减小占内存空间,组建的在主类的构造方法中生成,所有独立功能窗口公用组件,这样既减少了代码额长度,又提高了程序的内存利用率。还有很多问题,都在权衡之后得到了较优的解决方法。它能够使这次课设还让我对java的跨平台性有了进一步认识,当我学好代码兴致勃勃的想把它做成exe可执行文件时,在网上搜索之后发现它似乎很难实现,就是应为它的java语言的实现机制,通过jre来执行执行java代码,而不是调用系统本地代码。除此之外我还学到了新的编程技巧,比如对try,catch的运用。刚学的时候就是照书本上的打,很不情愿但是必须打的代码,在做课设时,我发现他又很神奇的功能可以帮助我解决用其他办法不好解决的问题,比如关闭窗口。刚开始程序只有主窗口时,关闭很好实现,但随着程序功能的完善,需要关闭的窗口越来越多,需要关闭的类型也便多了,到了关闭Dialog的时候,发现Dialog不能强制转化为Frame,如果想用前面的方法管还得把多处代码进行修改,不过我想到了用try来解决这个问题。
参考文献
[1]李钟尉,马文强,陈丹丹Java从入门到精通 第1版 清华大学出版社 2008.9
[2]刘万军,梁清华,王松波,宋强Java程序设计实践教程 第1版清华大学出版社2006.9
13
展开阅读全文