1、软 件 学 院课程设计报告书课程名称 java课程设计设计题目 学生信息管理系统专业班级 软件工程09-10班学 号 0920011023姓 名 赵壬冰指导教师 2011 年 6 月目录1 设计时间32 设计目的33 设计任务33。1任务说明33。2系统目标43。2使用范围43。3功能要求44 设计内容44.1界面构建44。2详细设计54。2。1模块设计54.2。2数据库设计(Access)54.2。3运行调试64。2.4主要源代码105总结与展望10参考文献111 设计时间 2011。6.112 设计目的本程序用于用户对少量学生信息进行简单的管理,本程序针对于对安全系数要求不高,操作不是很复
2、杂的小型客户开发.本程序可以实现对学生信息的录入、查询、修改、删除等操作,同时支持查看所有学生信息,功能完善,界面简洁美观,布局合理,操作简便,简单易用,任何人可轻松操作。同时,本程序对系统要求配置较低,运行速度快,而却对数据库管理要求较低.本程序数据库采用office2007版本的access数据库(。accdb)进行数据存储,该数据库可实现关系较为简单的数据管理.3 设计任务3.1任务说明设计一个简单学生个人信息管理系统,该系统具有录入,查询,修改三项基本功能.要求如下: (1)具有简单的录入,查询和修改功能。 (2)修改学生信息必须输入学号,然后对姓名、性别和专业等修改; (3)使用文件
3、存储数据.(也可用数据库) (4)学生个人信息必须包括:学号、姓名、性别、出生日期、身份证号、专业、班级自我简介,其余可自行丰富. (5)具有对姓名,出生日期和身份证号进行简单校验的功能.3。2系统目标软件开发的意图便于用户对学生的管理,方便查看学生的情况.如用户对学生基本信息进行录入、查询、修改、删除等。3。2使用范围 本系统仅针对用户对少量学生进行信息管理.3.3功能要求 1录入学生基本信息的功能 2查询学生基本信息的功能 3修改学生基本信息的功能 4删除学生基本信息的功能 5显示所有学生信息的功能4 设计内容4。1界面构建1、为了便于各种操作,软件采用多窗口的模式.用户可在不同窗口进行相
4、应操作(录入、查询、修改、删除、显示所有学生省信息)。 2、主窗口是用户进行各种操作的平台,具体操作在各个独立功能窗口中完成. 3、主窗口的主要功能位于菜单中,菜单为进入各个功能窗口的唯一通道. 4、当用户在进行个别录入、删除或错误输入操作时,会弹出相应对话框提示用户.如当录入成功或删除成功,弹出成功以及相应的简明信息提示当,当录入、删除失败以及输入不当是,弹出错误以及简单的错误原因提示用户重新操作. 5、界面布局尽量合理,各组件位置分布均匀美观.4.2详细设计登录4。2.1模块设计no密码正确yes进入操作界面查改删增4。2。2数据库设计(Access)图a。学生信息表图b。管理员表4。2。
5、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。DefaultTableMode
6、l; 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
7、); ); 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_ico
8、n=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.en
9、able(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.ad
10、d(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。ad
11、d(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。add
12、ActionListener(this);miAdd。addActionListener(this);miEdit.addActionListener(this);miDel。addActionListener(this);miShow.addActionListener(this);miUser。addActionListener(this);miAbout.addActionListener(this); class myConnectionResultSet re;String strurl = ”jdbc:odbc:driver=Microsoft Access Driver (*。m
13、db);DBQ=学生管理数据库.mdb”;public myConnection()public ResultSet getResult(String sql)tryClass.forName(sun。jdbc.odbc。JdbcOdbcDriver”);Connection conn=DriverManager。getConnection(strurl);Statement stmt=conn.createStatement(ResultSet。TYPE_SCROLL_SENSITIVE,ResultSet。CONCUR_UPDATABLE);ResultSet re=stmt。execut
14、eQuery(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 学号,姓名,性别,民族,年龄,年级,班级,专业;JButt
15、on 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
16、 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 JButt
17、on(”全部显示”);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 JDialogaboutFrame()JPanel p1=new JPanel();p1.add(new JLabel(”学生信息管理系统)
18、;p1。add(new JLabel(”赵壬冰 0920011023”));p1。add(new JLabel(辽宁工程技术大学”));p1。add(new JLabel(”软件工程0910 ”);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
19、 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。setM
20、odel(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 管理员”);i
21、f (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.CE
22、NTER);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 JTex
23、tField(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);
24、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感觉没什么新鲜感,它的跨平台特性也只是听听,根本没有认识,知道学到第
25、七章图形界面用户编程的时候,我发现学会之后自己可以做出来的软件就更接近平时使用的软件了,不过由于平时学习不刻苦,到时没有时间静下心来写java代码,知道结课做课设,才静下心来开始研究java,结合以前的编程知识,做起了自己的程序。我曾经用c语言做过这个系统,做起来会比较熟练,同时想通过做课设学习一点数据库的知识,感觉这些知识更贴近实际应用,选好之后开始准备课设,先从最简单的主窗体,到主窗体的菜单,组件添加,再到各个功能的独立窗体的建立,再到最后的数据库连接,功能的实现,一步步走来,收获颇多。其中独立窗体中的组件排版是碰到的第一个问题,最简单的方法是在建每个窗体时把所有需要的组件全部重新添加进去
26、,但是这样代码会很长,而却会多占很多内存空间,于是我决定把个功能窗体中共同的组件在一个新方法中统一加载,为了减小占内存空间,组建的在主类的构造方法中生成,所有独立功能窗口公用组件,这样既减少了代码额长度,又提高了程序的内存利用率.还有很多问题,都在权衡之后得到了较优的解决方法。它能够使这次课设还让我对java的跨平台性有了进一步认识,当我学好代码兴致勃勃的想把它做成exe可执行文件时,在网上搜索之后发现它似乎很难实现,就是应为它的java语言的实现机制,通过jre来执行执行java代码,而不是调用系统本地代码。除此之外我还学到了新的编程技巧,比如对try,catch的运用。刚学的时候就是照书本上的打,很不情愿但是必须打的代码,在做课设时,我发现他又很神奇的功能可以帮助我解决用其他办法不好解决的问题,比如关闭窗口。刚开始程序只有主窗口时,关闭很好实现,但随着程序功能的完善,需要关闭的窗口越来越多,需要关闭的类型也便多了,到了关闭Dialog的时候,发现Dialog不能强制转化为Frame,如果想用前面的方法管还得把多处代码进行修改,不过我想到了用try来解决这个问题。 参考文献1李钟尉,马文强,陈丹丹Java从入门到精通 第1版 清华大学出版社 2008。92刘万军,梁清华,王松波,宋强Java程序设计实践教程 第1版清华大学出版社2006。916