资源描述
软 件 学 院
课程设计报告书
课程名称 java课程设计
设计题目 学生信息管理系统
专业班级 软件工程09-10班
学 号 0920011023
姓 名 赵壬冰
指导教师
2011 年 6 月
目录
1 设计时间3
2 设计目的3
3 设计任务3
3。1任务说明3
3。2系统目标4
3。2使用范围4
3。3功能要求4
4 设计内容4
4.1界面构建4
4。2详细设计5
4。2。1模块设计5
4.2。2数据库设计(Access)5
4.2。3运行调试6
4。2.4主要源代码10
5总结与展望10
参考文献11
1 设计时间
2011。6.11
2 设计目的
本程序用于用户对少量学生信息进行简单的管理,本程序针对于对安全系数要求不高,操作不是很复杂的小型客户开发.本程序可以实现对学生信息的录入、查询、修改、删除等操作,同时支持查看所有学生信息,功能完善,界面简洁美观,布局合理,操作简便,简单易用,任何人可轻松操作。
同时,本程序对系统要求配置较低,运行速度快,而却对数据库管理要求较低.本程序数据库采用office2007版本的access数据库(。accdb)进行数据存储,该数据库可实现关系较为简单的数据管理.
3 设计任务
3.1任务说明
设计一个简单学生个人信息管理系统,该系统具有录入,查询,修改三项基本功能.要求如下:
(1)具有简单的录入,查询和修改功能。
(2)修改学生信息必须输入学号,然后对姓名、性别和专业等修改;
(3)使用文件存储数据.(也可用数据库)
(4)学生个人信息必须包括:学号、姓名、性别、出生日期、身份证号、专业、班级自我简介,其余可自行丰富.
(5)具有对姓名,出生日期和身份证号进行简单校验的功能.
3。2系统目标
软件开发的意图便于用户对学生的管理,方便查看学生的情况.如用户对学生基本信息进行录入、查询、修改、删除等。
3。2使用范围
本系统仅针对用户对少量学生进行信息管理.
3.3功能要求
1录入学生基本信息的功能
2查询学生基本信息的功能
3修改学生基本信息的功能
4删除学生基本信息的功能
5显示所有学生信息的功能
4 设计内容
4。1界面构建
1、为了便于各种操作,软件采用多窗口的模式.用户可在不同窗口进行相应操作(录入、查询、修改、删除、显示所有学生省信息)。
2、主窗口是用户进行各种操作的平台,具体操作在各个独立功能窗口中完成.
3、主窗口的主要功能位于菜单中,菜单为进入各个功能窗口的唯一通道.
4、当用户在进行个别录入、删除或错误输入操作时,会弹出相应对话框提示用户.如当录入成功或删除成功,弹出成功以及相应的简明信息提示当,当录入、删除失败以及输入不当是,弹出错误以及简单的错误原因提示用户重新操作.
5、界面布局尽量合理,各组件位置分布均匀美观.
4.2详细设计
登录
4。2.1模块设计
no
密码正确
yes
进入操作界面
查
改
删
增
4。2。2数据库设计(Access)
图a。学生信息表
图b。管理员表
4。2。3运行调试
图1.登录界面
图2.操作界面
图3。添加学生信息
图4.删除学生信息
图5。修改学生信息
图6。查找学生信息
图7。注册新用户
图8。删除用户
4。2.4主要源代码
import java。awt。*;
import javax.swing。*;
import java。awt.event.*;
import javax。swing。border.*;
import javax.swing。JOptionPane;
import javax。swing。JLabel;
import javax.swing。JPanel;
import javax.swing。table。DefaultTableModel;
import javax.swing.table.TableColumn;
import java。sql。*;
import java。awt。GridLayout;
class myStudent {
public myStudent() {
}
publicstaticvoid main(String[] args) {
loginFrame lf=new loginFrame();
lf。setVisible(true);
lf.addWindowListener(new WindowAdapter(){
publicvoid windowClosing(WindowEvent e){
System。exit(0);
}
});
}
}
class mainFrame extends JFrame implements ActionListener{
MenuBar myMenuBar=new MenuBar();
Menu myMenuFile,myMenuEdit,myMenuUser,myMenuAbout;
MenuItemmiNew,miOpen,miSave,miSaveAs,miExit;
MenuItemmiAdd,miEdit,miDel,miFind,miShow,miUser,miAbout;
public JTable table = new JTable();
Icon background_icon=new ImageIcon(”pct.jpg”);
JLabel background_Label=new JLabel(background_icon);
public DefaultTableModel mm ;
public mainFrame(){
myMenuFile=new Menu("文件");
miNew=newMenuItem(”新建”);
miOpen=newMenuItem(”打开");
miSave=newMenuItem(”保存");
miExit=newMenuItem(”退出");
//miNew.enable(false);
//miOpen.enable(false);
//miSave.enable(false);
//myMenuFile。add(miNew);
//myMenuFile。add(miOpen);
//myMenuFile。add(miSave);
myMenuFile。add(miExit);
myMenuEdit=new Menu(”数据编辑");
miFind=newMenuItem(”查找数据”);
miAdd=newMenuItem(”添加数据”);
miEdit=newMenuItem(”修改数据”);
miDel=newMenuItem("删除数据");
miShow=newMenuItem(”全部显示”);
myMenuEdit。add(miFind);
myMenuEdit.add(miAdd);
myMenuEdit。add(miEdit);
myMenuEdit。add(miDel);
myMenuEdit.add(miShow);
myMenuUser=new Menu(”用户”);
miUser=newMenuItem(”编辑用户");
myMenuUser。add(miUser);
myMenuAbout=new Menu(”我的课程设计");
miAbout=newMenuItem("课程设计说明”);
myMenuAbout。add(miAbout);
myMenuBar。add(myMenuFile);
myMenuBar。add(myMenuEdit);
myMenuBar。add(myMenuUser);
myMenuBar.add(myMenuAbout);
String[] col = {”学号",”姓名”,”性别”,"民族”,”年龄”,"年级”,"班级",”专业”};//创建属性列名
mm= new DefaultTableModel(col,0);
table。setModel(mm);
JScrollPane tableScrollPane = new JScrollPane(table);
this.setMenuBar(myMenuBar);
this.add(tableScrollPane);
miExit。addActionListener(this);
miFind。addActionListener(this);
miAdd。addActionListener(this);
miEdit.addActionListener(this);
miDel。addActionListener(this);
miShow.addActionListener(this);
miUser。addActionListener(this);
miAbout.addActionListener(this);
}
class myConnection{
ResultSet re;
String strurl = ”jdbc:odbc:driver={Microsoft Access Driver (*。mdb)};DBQ=学生管理数据库.mdb”;
public myConnection(){}
public ResultSet getResult(String sql){
try{
Class.forName("sun。jdbc.odbc。JdbcOdbcDriver”);
Connection conn=DriverManager。getConnection(strurl);
Statement stmt=conn.createStatement(ResultSet。TYPE_SCROLL_SENSITIVE,ResultSet。CONCUR_UPDATABLE);
ResultSet re=stmt。executeQuery(sql);
return re;
}
catch(Exception e){
System.out.println(”getResult-——-—-”+e。toString());
returnnull;
}
}
class addFrame extends JDialog implements ActionListener{
publicstaticfinalintWIDTH = 400;
publicstaticfinalintHEIGHT = 400;
JLabel 学号1,姓名1,性别1,民族1,年龄1,年级1,班级1,专业1;
JTextField 学号,姓名,性别,民族,年龄,年级,班级,专业;
JButton b;
JPanel p;
mainFrame mf;
class editFrame extends JDialog implements ActionListener{
publicstaticfinalintWIDTH = 400;
publicstaticfinalintHEIGHT = 400;
JLabel 学号1,姓名1,性别1,民族1,年龄1,年级1,班级1,专业1;
JTextField 学号,姓名,性别,民族,年龄,年级,班级,专业;
JButton b;
JPanel p;
mainFrame mf;
class findFrame extends JDialog implements ActionListener{
mainFrame mf;
JPanel p;
JComboBox c;
JTextField t;
JButton b;
JButton fAll;
String sql="select * from student”;
String[] colStr={”学号”,"姓名”,”性别”,"民族”,”年龄”,”年级”,"班级”,”专业"};
public findFrame(mainFrame mmf){
mf=mmf;
p=new JPanel();
c=new JComboBox(colStr);
t=new JTextField(10);
b=new JButton("查找");
fAll=new JButton(”全部显示”);
b.addActionListener(this);
fAll。addActionListener(this);
p。add(new JLabel("选择"));
p.add(c);
p。add(new JLabel("查找内容”));
p。add(t);
p.add(b);
p。add(fAll);
this。add(p);
this。setTitle(”查找”);
this.setSize(450,80);
}
class aboutFrame extends JDialog{
aboutFrame(){
JPanel p1=new JPanel();
p1.add(new JLabel(”学生信息管理系统"));
p1。add(new JLabel(”赵壬冰 0920011023”));
p1。add(new JLabel("辽宁工程技术大学”));
p1。add(new JLabel(”软件工程09—10 ”));
p1。setLayout(new GridLayout(4,1,5,5));
this。add(p1);
this.setTitle("关于我”);
this。setSize(300,200);
}
}
class userFrame extends JFrame implements ActionListener{
JTextField user,pass;
JButton add,del;
JTable t;
JPanel p1,p2,p3,p4,p5;
DefaultTableModel m;
public userFrame(){
p1=new JPanel();
p2=new JPanel();
p3=new JPanel();
p4=new JPanel();
p5=new JPanel();
user=new JTextField(8);
pass=new JTextField(8);
add=new JButton(”添加”);
del=new JButton(”删除”);
String[] col = {”用户名","密码”};
m= new DefaultTableModel(col,0);
t=new JTable();
t。setModel(m);
JScrollPane sp = new JScrollPane(t);
p1.add(new JLabel("用户名”));
p1.add(user);
p1。add(new JLabel(”密码”));
p1.add(pass);
p1.add(add);
p2。add(sp);
p3。add(del);
add。addActionListener(this);
del。addActionListener(this);
myConnection conn=new myConnection();
ResultSet rs;
rs=conn.getResult(”select * from 管理员”);
if (rs!=null){
try{
//m。setRowCount(0);
//table。setModel(mm);
while(rs.next()){
String 用户名 = rs。getString("用户名”);
String 密码 = rs.getString("密码”);
String[] cloumns ={用户名,密码};
m。addRow(cloumns);
}
t。setModel(m);
}catch(Exception e){
System。out.println(e。toString());
}
}
this.add(p1,BorderLayout.NORTH);
this。add(p2,BorderLayout.CENTER);
this。add(p3,BorderLayout.SOUTH);
this。add(p4,BorderLayout.WEST);
this.add(p5,BorderLayout。EAST);
this。setTitle("用户管理”);
this.setSize(600,400);
}
class loginFrame extends JDialog implements ActionListener{
JPanel p;
JTextField user,pass;
JButton login,cancel;
public loginFrame(){
p=new JPanel();
user=new JTextField(10);
pass=new JTextField(10);
login=new JButton("登录");
cancel=new JButton("退出”);
login.addActionListener(this);
cancel.addActionListener(this);
Icon background_icon=new ImageIcon(”pct。jpg”);
JLabel background_Label=new JLabel(background_icon);
p.add(background_Label);
p。add(new JLabel(”账号”));
p。add(user);
p。add(new JLabel("密码”));
p。add(pass);
p。add(login);
p.add(cancel);
this.add(p);
this。setTitle(”系统登录”);
this。setSize(360,260);
}
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
16
展开阅读全文