计算机学院课程设计专业:计算机科学与技术课程名称: JAVA程序设计课题名称: 学生信息管理系统教师:学号: 姓名:20010年 6 月 25 日目录第一章总体设计............................... 错误!未定义书签。
本系统的主要功能.................................................. 错误!未定义书签。
系统包含的类及类之间的关系........................................ 错误!未定义书签。
Java源文件及其功能............................................... 错误!未定义书签。
相关文件及其功能.................................................. 错误!未定义书签。
第二章详细设计............................... 错误!未定义书签。
主类MainWindow .................................................... 错误!未定义书签。
类Database ........................................................ 错误!未定义书签。
类StuBean ......................................................... 错误!未定义书签。
类InputStudent .................................................... 错误!未定义书签。
类ModifyStudent ................................................... 错误!未定义书签。
类QueryStudent .................................................... 错误!未定义书签。
类DeleteStudent ................................................... 错误!未定义书签。
第三章功能测试及运行效果 ..................... 错误!未定义书签。
系统主界面....................................................... 错误!未定义书签。
录入学生信息界面................................................. 错误!未定义书签。
查询学生信息界面................................................. 错误!未定义书签。
修改学生信息界面................................................. 错误!未定义书签。
修改学生信息界面................................................. 错误!未定义书签。
工作总结...................................... 错误!未定义书签。
参考文献...................................... 错误!未定义书签。
第一章总体设计本系统的主要功能本系统是基于数据库的学生信息管理系统,实现了连接数据库,录入、修改、查询、删除学生信息的功能。
系统包含的类及类之间的关系本系统共包括7个Java源文件和3个辅助文件。
类之间的关系如图1-1所示图 1-1 类之间的关系图Java源文件及其功能该类负责创建学生信息管理系统的主窗口,该类还有main方法,程序从该类开始执行。
该类创建的对象是MainWindow类的重要成员之一,负责提供录入学生基本信息的界面。
该类创建的对象是MainWindow类的重要成员之一,负责提供修改学生基本信息的界面。
该类创建的对象是MainWindow类的重要成员之一,负责提供删除学生基本信息的界面。
该类创建的对象是MainWindow类的重要成员之一,负责提供查询学生基本信息以及打印基本信息的界面。
该类负责提供打开与关闭数据库连接的功能。
该类负责数据库操作,包括对学生信息数据库的添加、查询、修改、删除。
相关文件及其功能为主窗口的背景图片,MainWidow需要调用该文件。
该文件是窗口最小化时的窗口图标,MainWidow需要调用该文件。
3.专业.txt该文件为专业组合的组合键提供下拉菜单的内容,InputStudent与ModifyStudent需要调用该文件。
4该文件为本程序数据源,负责保存学生基本信息,Database连接到该数据库第二章详细设计主类MainWindow(1)成员变量见表2-1(2)方法见表2-2表2-2 主要方法(3)源代码见文件类Database(1)成员变量见表2-3(2)方法见表2-4表2-4 主要方法(3)源代码见文件类StuBean(1)成员变量见表2-5(2)方法见表2-4(3)源代码见文件类InputStudent(1)成员变量见表2-5表2-4 主要方法(3)源代码见文件类ModifyStudent(1)成员变量见表2-5(2)方法见表2-4(3)源代码见文件类QueryStudent(1)成员变量见表2-5(2)方法见表2-4(3)源代码见文件类DeleteStudent(1)成员变量见表2-5(2)方法见表2-4表2-4 主要方法(3)源代码见文件第三章功能测试及运行效果系统主界面图3-1 系统主窗口图3-2 学生信息录入界面查询学生信息界面图3-3学生信息查询界面图3-4学生信息修改界面修改学生信息界面工作总结通过这次课程设计,我锻炼了自己的动手能力,巩固了对面向对象程序设计概念的理解和JAVA的运用,初步掌握JAVA开发应用程序的基本方法,学习了对数据库的基本操作,能够对Microsoft Acess的表做基本处理,提高了自己综合运用所学知识的能力。
深刻认识到了基本知识的重要性。
现在我知道了,不知道函数怎么来的,根本什么也做不了。
除非照抄别人的代码,那样也根本不可能知道功能是如何实现的。
现在很有必要加强基本语法知识的学习了。
JAVA应用性很强,只有老师的讲解不行,只看也不中,只有自己动手去做才会发现自己确实有太多的不足,许多程序看似简单,真正去做才知道知识并没有自己想象的那样扎实。
从而懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
其中对JAVA图像用户界面、JAVA数据库JDBC 的运用、内部匿名类等JAVA知识有了更深的理解与应用。
树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。
而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。
提高了学习计算机的兴趣,增强了信心。
在本次课程设计中,我遇到了很多的困难,这些困难搞得我焦头烂额,几度试图放弃,但最终坚持着一一把困难克服掉了。
每当克服一个困难,都非常的兴奋,这些都是自己努力的结果。
现在,我有信心面对接下来的挑战,在不断的实践中锻炼自己,提高自己!经过几个星期的设计和开发,系统基本开发完毕。
在本次课程设计中困难遇到不少,比如数据库的连接,SQL语言的书写格式,全局参数的传递等。
由于设计时间较短,所以该系统还有许多不尽如人意的地方,比如用户界面不够美观,功能不够完善等多方面问题。
在这次系统开发的过程中,我深深体会到了做一个系统,首先进行需求分析的重要性,了解了一个系统的制作,从功能分析到功能模块分析、与其他系统的关系,再到数据库设计、数据库结构实现及各功能模块的创建都需要从整体上考虑设计。
这些都有待以后进一步改进。
回顾起此次JAVA课程设计,我仍感慨颇多,学到了很多的东西。
同时不仅巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。
在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。
一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。
参考文献[1] 耿祥义,张跃平.Java 2实用教程(第三版)[M].北京:清华大学出版社,2006[2] (美)霍斯特曼(Horstmann .)&nbs. Java2核心技术(卷Ⅱ高级特性原书第7版)/Sun 公司核心技术丛书 [M].机械工业出版社, 2006全部源码(此源码不在报告中,为了看着方便,附在了后面)。
package Stu;import .*;/*** 连接数据库的类*/public class Database {private Statement stmt=null;ResultSet rs=null;private Connection conn=null;String sql;String strurl="jdbc:odbc:scmanage";public Database(){}/*** 打开数据库连接*/public void OpenConn()throws Exception{try{("");conn=(strurl);}catch(Exception e){"OpenConn:"+());}}/*** 执行SQL查询语句,返回结果集RSpublic ResultSet executeQuery(String sql){ stmt = null;rs=null;try{stmt=,;rs=(sql);}catch(SQLException e){"executeQuery:"+());}return rs;}/*** 执行SQL更新语句*/public void executeUpdate(String sql){ stmt=null;rs=null;try{stmt=,;(sql);();}catch(SQLException e){"executeUpdate:"+());}}public void closeStmt(){try{();}catch(SQLException e){"closeStmt:"+());/*** 关闭数据库连接*/public void closeConn(){try{();}catch(SQLException ex){":"+());}}/**转换编码*/public static String toGBK(String str){try {if(str==null)str = "";elsestr=new String("ISO-8859-1"),"GBK");}catch (Exception e) {return str;}}package Stu;import .*;import .*;public class DeleteStudent extends JPanel implements ActionListener{ /**private static final long serialVersionUID = 1L; /*** 删除界面*/StuBean queryStu = new StuBean();StuBean delStu = new StuBean();JTextField Snum,Sname,Smajor,Sgrade,Sbirth; JRadioButton boy,girl;JButton del;ButtonGroup group = null;public DeleteStudent(){Snum = new JTextField(20);del = new JButton("删除");(this);(this);Sname = new JTextField(20);(false);Smajor = new JTextField(20);(false);Sgrade = new JTextField(20);(false);Sbirth = new JTextField(20);(false);group = new ButtonGroup();boy = new JRadioButton("男",false);girl = new JRadioButton("女",false);(boy);(girl);Box box0 = ();JLabel label = new JLabel("学生信息删除",;(new Font("黑体", , 25));(label);Box box1 = ();(new JLabel("学号:",);(del);Box box2 = ();(new JLabel("姓名:",);(Sname);Box box3 = ();(new JLabel("性别:",);(boy);(girl);Box box4 = ();(new JLabel("专业:",);(Smajor);Box box5 = ();(new JLabel("年级:",);(Sgrade);Box box6 = ();(new JLabel("出生:",);(Sbirth);Box boxH = ();(box0);(box1);(box2);(box3);(box4);(box5);(box6);());JPanel messPanel = new JPanel();(boxH);;setLayout(new BorderLayout());add(messPanel,;validate();setVisible(true);}quals("男"))else(true);String m = "确定要删除该学号及全部信息吗";int ok = (this,m, "确认",,;if(ok == {(number);}else if(ok == {(null);(null);(null);(null);(null);}}else if(yes == {(null);(null);(null);(null);(null);}}else{(this,"该学号不存在!","警告", ;}}}}package Stu;import .*;import .*;import .*;/****/private static final long serialVersionUID = 1L; /*** 录入界面*/StuBean addStu = new StuBean();StuBean queryStu = new StuBean();xt");FileReader fr = new FileReader());BufferedReader br = new BufferedReader(fr);String s = null;while((s= ())!=null)(s);();();}catch(IOException exp){}Sgrade = new JTextField(20);Sbirth = new JTextField(20);group = new ButtonGroup();boy = new JRadioButton("男",true);girl = new JRadioButton("女",false);(boy);(girl);entry = new JButton("录入");reset = new JButton("重置");(this);(this);Box box0 = ();JLabel label = new JLabel("学生信息录入",;(new Font("黑体", , 25));(label);Box box1 = ();(new JLabel("学号:",);Box box2 = ();(new JLabel("姓名:",); (Sname);Box box3 = ();(new JLabel("性别:",); (boy);(girl);Box box4 = ();(new JLabel("专业:",); (Smajor);Box box5 = ();(new JLabel("年级:",); (Sgrade);Box box6 = ();(new JLabel("出生:",); (Sbirth);Box boxH = ();(box0);(box1);(box2);(box3);(box4);(box5);(box6);());JPanel putButton = new JPanel(); (entry);(reset);JPanel messPanel = new JPanel(); (boxH);;;setLayout(new BorderLayout()); add(messPanel,;add(putButton,;setVisible(true);};import .*;import .*;public class MainWindow extends JFrame implements ActionListener { /****/private static final long serialVersionUID = 1L;/*** 主窗口的初始化*/InputStudent ins;ModifyStudent mos;QueryStudent qus;DeleteStudent des;etResource("")));(new Font("黑体", , 40));;;etResource(""));1Lxt");BufferedReader br = new BufferedReader(fr);String s = null;while((s= ())!=null)(s);();();}catch(IOException exp){}Sgrade = new JTextField(20);Sbirth = new JTextField(20);group = new ButtonGroup();boy = new JRadioButton("男",true);girl = new JRadioButton("女",false);(boy);oldMess = new JComboBox();start = new JButton("开始修改");entry = new JButton("录入修改");(false);reset = new JButton("重置");(this);(this);(this);(this);Box box0 = ();JLabel label = new JLabel("学生信息修改",;(new Font("黑体", , 25));(label);Box box1 = ();(new JLabel("学号:",);(Snum);(start);Box box2 = ();(new JLabel("姓名:",);(Sname);Box box3 = ();(new JLabel("性别:",);(boy);(girl);Box box4 = ();(new JLabel("专业:",);(Smajor);Box box5 = ();(new JLabel("年级:",);(Sgrade);Box box6 = ();(new JLabel("出生:",);(Sbirth);Box boxH = ();(box0);(box2);(box3);(box4);(box5);(box6);());JPanel putButton = new JPanel();(entry);(reset);JPanel messPanel = new JPanel();(boxH);;;setLayout(new BorderLayout());add(messPanel,;add(putButton,;validate();setVisible(true);}public void actionPerformed(ActionEvent e) {String number = ();String rs[] = new String[4];rs = (number);if() == start||() == Snum){();if(rs != null){String q = "该生信息已存在,您想修改他(她)的基本信息吗";(this,q,"警告" ,;(true);("姓名:"+rs[0]);("专业:"+rs[2]);("年级:"+rs[3]);("生日:"+rs[4]);if(rs[1].equals("男"))(true);(true);}else{(false);(this,"该学号不存在无法修改!","警告", ;clearMess();}}else if() == entry){if(rs != null){String m = "基本信息将被修改!";int ok = (this,m,"确认",,;if(ok == {String name = ();String major = (String)();String grade = ();String birth = ();String sex = null;if())sex = ();if())sex = ();(number, name, sex, major, grade, birth);}else if(ok == {(true);}}else{String w = "该学号没有基本信息,不能修改!";(this, w, "警告",;(false);clearMess();}else if() == reset){clearMess();(false);}}public void clearMess(){(null);(null);(null);(null);();}}package Stu;import .*;import .*;import .*;public class QueryStudent extends JPanel implements ActionListener{ /****/private static final long serialVersionUID = 1L;/*** 查询界面*/PrintJob pri;Graphics g = null;StuBean queryStu = new StuBean();JTextField Snum,Sname,Smajor,Sgrade,Sbirth;JRadioButton boy,girl;JButton query,print;JPanel messPanel;public QueryStudent(){Box box0Box box1Box box2Box box3Box box4Box box5Box box6quals("男"))(true);else(true);(true);}else{(this, "该学生信息不存在!", "错误", ;(null);}}else if() == print){try{pri = getToolkit().getPrintJob(new JFrame(), "打印", new Properties());g = ();(120, 120);(g);();();}catch(Exception ee){}}}public void clearMess(){(null);(null);(null);(null);(null);}}package Stu;import .*;import .*;//有关学生信息数据库操作的类public class StuBean {String sql;ResultSet rs = null;String sNum;String sName;String sSex;String sMajor;String sGrade;String sBirth;//添加学生信息public void stuAdd(String num, String name, String sex,String major, String grade, String birth){Database DB = new Database();= num;= name;= sex;= major;= grade;= birth;if(sNum == null||("")){(null, "请输入学生学号!", "错误", ;return;}else if(sName == null||("")){(null, "请输入学生姓名!", "错误", ;return;}(null, "请输入学生年纪!", "错误", ;return;}else if(sBirth == null||("")){(null, "请输入学生生日!", "错误", ;return;}else{sql = "insert into student(snum,sname,ssex,sgrade,smajor,sbirth) values('"+sNum+"','"+sName+"','"+sSex+"','"+sGrade+"','"+sMajor+"','"+sBirth+"')";try{();(sql);(null,"成功添加一条新的纪录!");}catch(Exception e){(null, "保存失败", "错误", ;}finally {();();}}}// 修改学生信息public void stuModify(String num, String name, String sex,String major, String grade, String birth){Database DB = new Database();= num;= name;= major;= grade;= birth;sql = "update student set snum = '"+sNum+"',sname = '"+sName+"', ssex = '"+sSex+"', smajor = '"+sMajor+"', sgrade = '"+sGrade+"',sbirth = '"+sBirth+"' where snum = "+(sNum)+"";try{();(sql);(null,"成功修改一条新的纪录!");}catch(Exception e){(null, "更新失败", "错误", ;}finally {();();}}//删除学生信息public void stuDel(String num){Database DB = new Database();= num;sql = "delete from student where snum = "+(sNum)+"";try{();(sql);(null,"成功删除一条新的纪录!");}catch(Exception e){(null, "删除失败", "错误", ;finally {();();}}// 根据学号查询学生信息public String[] stuSearch(String num){Database DB = new Database();= num;String[] s = new String[5];if(sNum == null||("")){(null, "请输入学生学号!", "错误", ;}sql = "select * from student where snum = "+(sNum)+"";try{();rs = (sql);if()){s[0] = ("sname");s[1] = ("ssex");s[2] = ("smajor");s[3] = ("sgrade");s[4] = ("sbirth");}else{s = null;}}catch(Exception e){}finally {();();return s;}}。