还剩26页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
课程设计(论文)任务书软件学院软件+信息专业1班班
一、课程设计(论文)题目学籍管理系统
二、课程设计(论文)工作自—10年12月20日起至10年12月24日止
三、课程设计(论文)地点:软件学院实训中心....
四、课程设计(论文)内容要求
1.本课程设计的目的(1〕使学生稳固和提高Java编程技术____________________________________(2〕培养学生掌握程序设计的根本思路和方法;____________________________[3)加强学生研发、调试程序的能力;______________________________________[4)培养学生分析、解决问题的能力;[5)提高学生的科技论文写作能力
2.课程设计的任务及要求1)任务11)录入学生根本信息的功能;(2〕修改学生根本信息的功能
(3)查询学生根本信息的功能14)删除学生根本信息的功能2)创新要求15〕显示所有学生根本信息的功能
(6)在用户进行相应操作时应弹出提示对话框}catchException ex{Dialog dig=Dialoge.getSource;dig.disposeQ;文件中出现的窗体有两种一Frame和Dialogo关闭方法采用异常处理机制,非异常情况需要关闭的窗口是Frame,如果需要关闭的窗体是Dialog,那么进入异常处理机制当关闭Frame时先判断是否为主窗体,主窗体那么关闭所有窗体并退出窗体,同时与数据库断开,当需要关闭的窗体为功能窗体时,只关闭该功能窗体
3、公共组件Panel zt;〃欢迎窗体中的重要容器MenuBar mt;〃主菜单Frame zf;〃功能窗体加载的平台Panel stuinf;//功能窗体中学生信息家在的容器Font fontl;Label number,name,sex,profession,grade,birthday;〃属t生标签TextField numbers,names,professions,grades,birthdays;〃属‘性文本域CheckboxGroup style=new CheckboxGroup;〃性另U Checkboxf,m;String url=jdbc:odbc:学生管理系统”;〃数据库连接String sql=SELECT*FROM学生信息”;Connection con;Statement stmt;ResultSet rs;Dialog wrongd;//错误对话框Dialog confirmd;//成功对话框String numO=nn;
4、构造函数一主窗体public StudentManageSystem1{super学籍管理系统”;this.setV isibletrue;mt=new MenuBar;Menu menu=new Menu菜单;Menuitem ininformation=new Menuitem录入学生信息menu,addininformation;ininformation.addActionListener this;o o o mt.addmenu;setMenuBarmt;zt=new Panel;zt.addnew Label\n+欢迎登陆学生管理系统”;this.addzt;numbers=new TextField20;o o o number=new Label学好;o o o m二new Checkbox,男”,true,style;f=new Checkbox,女,false,style;try Classt/brA^ame nsun.jdbc.odbc.JdbcOdbcDriver n;Exception e{Systelne.getMessage;try{con=DriverManager.getConnectionurl,n,\null;s tmt=con.creates tatement;rs=stmt.executeQuerysql;System.out.println连接成功;catchSQLException ex{System.out.println nMessage n+ex.getMessage;}通过构造函数,加载主窗体[包括家在菜单以及欢迎界面,对主窗体设置大小,添加动作监听器以及窗口监听器,初始化局部程序用到的公共组件[学生学号、姓名、性别、专业、年级、生日等相关组件,以及连接数据库
5、学生信息加载方法public PanellodeinfPanel stuinf{o o o该方法用于加载功能窗体中学生信息显示组件的加载,包括学号、姓名、性别、专业、年级、生日的标签以及文本域组件
6、录入学生信息窗体public voidregistzfString s{stuinf=new Panel;zf=new Frames;zf.doLayout;zf.setLayoutnew BorderLayout;Panel ps=new Panel;Label l=new Label学号ps.setLayoutnull;o o o LsetBounds50,5,30,20;numbers.setBounds100,5,220,20;Panel px=new Panel;px.setLayoutnull;px.setBounds0,0,0940;Button sureb,cancelb;sureb=new Button录入”;cancelb=new Button取消sureb.setBounds150,5,40,30;cancelb.setBounds200,5,40,30;px.setBackgroundColor.LIGHT_GRAY;px.addsureb;px.addcancelb;sureb.addActionListenerthis;cancelb.addActionListenerthis;zf.setVisibletrue;o o o zf.addWindowListenerthis;录入窗体包含三个模块通过容器ps加载学号的相关组件,成为第一模块注册窗体调用lodeinfPanel stuinf加载学生信息主体组件进行加载,成为第二模块通过容器px加载录入,取消按钮,来实现成绩录入以及推出该窗体,成为第三模块
7、查询学生信息窗体public voidinquirezfString s{stuinf=new Panel;zf=new Frames;o o o Panel ps=new Panel;Label l=new Label请输入要查询的学号;Button b=new Button查询;b.addActionListenerthis;ps.setLayoutnull;ps.setBounds0,0,100,30;ps.setBackgroundColor.LIGHT_GRAY;ps.addl;o o o l.setBounds50,5,120,20;o o o zf.addNorth,ps;zf.add MCenter nJodeinfstuinf;zf.addWindowListenerthis;names.setEnabledfalse;查询窗体包含两个模块通过容器ps加载学号的相关组件,以及查询按钮,成为第一模块注册窗体调用lodeinfPanel stuinf加载学生信息主体组件进行加载,成为第二模块注意该窗体中,用户不能对除学号以外的信息进行操作
8、修改学生信息窗体public voidmodifyzfString s{stuinf=new Panel;zf=new Frames;o o o Panelp=new Panel;Panelps=new Panel;Label l=new Label请输入要修改的学号;Button b=new Button搜索;ps.setLayoutnull;ps.setBounds0,0,400,60;ps.setBackgroundColor.LIGHT_GRAY;ps.addl;o o o LsetBounds25,35,120,20;o o o b.addActi onListenerthis;Panel px=new Panel;px.setLayoutnull;px.setBounds0,250,400,50;Button inquire,reinquire;inquire=new Button录入修改”;reinquire=new Button重置”;inquire.setBounds130,5,60,25;reinquire.setBounds210,5,40,25;px.addinquire;px.addreinquire;px.setB ackgroundColor.LIGHT_GR AY;inquire.addActionListenerthis;reinquire.addActionListenerthis;Label wll,wl2,wl3,wl4,wl5;wl1=new Label新”;o o o wbl=new Button“修改”;o o o wl
1.setBackgroundColor.LIGHT_GRAY;o o o zf.addwll;o o o zf.addwbl;o o o wll.setBounds25,76,25,20;o o o wbl.setBounds330,75,40,20;o o o wb
1.addActionListenerthis;o o o wb
1.setEnabledfalse;o o o p=lodeinfstuinf;p.setBounds0,60,400,190;zf.addWindowListenerthis;zf.addps;o oo names.setEnabledfalse;ooo修改窗体包含三个模块+局部辅助组件通过容器ps加载学号的相关组件,以及搜索按钮,成为第一模块注册窗体调用lodeinfPanel stuinf加载学生信息主体组件进行加载,成为第二模块通过容器px加载录入修改,重置按钮,来实现成绩录入以及推出该窗体,成为第三模块还有局部显示“新〃的标签,以及修改的按钮注意没有显示学号之前其他组件均不能操作
9、删除学生信息窗体public voiddeletezfString s{stuinf=new Panel;zf=new Frames;ooo Panelps=new Panel;Label l=new Label请输入要删除的学号;Button b=new Button搜索;ps.setLayoutnull;ps.setBounds0,0,100,30;ps.setBackgroundColor.LIGHT_GRAY;ps.addl;ooo LsetBounds50,5,120,20;ooo b.addActionListenerthis;Panel px=new Panel;px.setLayoutnull;px.setBounds0,0,0940;Button sureb,cancelb;sureb=new Button删除cancelb=new Button取消;sureb.setBounds150,5,40,30;cancelb.setBounds200,5,40,30;px.setB ackgroundColor.LIGHT_GRAY;ooo sureb.addActionListenerthis;cancelb.addActionListenerthis;zf.addNorth,ps;ooo zf.addWindowListenerthis;names.setEnabl edfalse;ooo删除窗体包含三个模块通过容器ps加载学号的相关组件,以及搜索按钮,成为第一模块注册窗体调用lodeinfPanel stuinf加载学生信息主体组件进行加载,成为第二模块通过容器px加载删除,取消按钮,来实现成绩录入以及推出该窗体,成为第三模块注意没有显示学号之前其他组件均不能操作
10、显示所有学生信息窗体public voidallzfString s{String informations=学号\t姓名\t性别\t专业\t年级\t生日\r\n;TextArea text;zf=new Frames;ooo Fontfont=new Font宋体,12/4;try sql=SELECT*FROM学生信息”;rs=stmt.executeQuerysql;whilers.next{String s0=rs.getString学号”;ooo informations+=s0+\t+sl+\t+s2+\t+s3+\t+s4+\t+s5+\r\n;}catchException ex{}text=new TextAreainformations;text.setBounds10,30,380,260;text.setFontfont;text.setBackgroundColor.LIGHT_GRAY;zf.addtext;zf.addWindowListenerthis;该窗体由一个TextArea构成,用于显示全部学生的年根本信息注意显示要按一定规那么输出表格形式
11、动作监听public voidactionPerformedActionEvent e{ife.getActionCommand==录入学生信息{ifzf!=null{zf.dispose;}registzf学生信息录入ife.getActionCommand=查询学生信息{}ife.getActionCommand==修改学生信息{}ife.getActionCommand二二删除学生信息{ife.getActionCommand==所有学生信息{}ife.getActionCommand==录入{...}ife.getActionCommand==查询{...}ife.getActionCommand==搜索{...}ife.getActionCommand==修改{numbers.setTextnumO;ife.getSource==wb1names.setEnabledtrue;oooife.getActionCommand尸二录入修改{}ife.getActionCommand==重置{O Otry sql二SELECT*FROM学生信息”;rs=stmt.executeQuerysql;whilers.next{String sO=rs.getString学号;ooo ifnumO.equalssO{names.setTextsl;ifs
2.equals男m.setStatetrue;}catchException ex{System.out.printlnex.getMessage;ife.get ActionCommand尸=册!1除{•••ife.getActionCommand==取消{zf.dispose;ife.getActionCommand==iM出{System.exitO;ife.getActionCommand==确定{try confirmd.dispose;}catchException ex{try wrongd.dispose;}catchException ex{}
11、1进入录入、查询、修改、删除、显示所有信息窗口ife.getActionCommand尸=”录入学生信息{}ife.getActionCommand=查询学生信息{ife.getActionCommand==修改学生信息{}ife.getActionCommand=删除学生信息{}17〕采用数据库存储学生根本信息3)课程设计论文编写要求11)课程设计任务及要求12)设计思路一工作原理、功能规划______________________________________[3)详细设计--数据分析、算法思路、类设计、功能实现〔含程序流程图、主要代码及注释〕、界面等(4〕运行调试与分析讨论--给出运行屏幕截图,分析运行结果,有何改进想法等
(5)设计体会与小结一-设计遇到的问题及解决方法,通过设计学到了哪些新知识,稳固了哪些知识,有哪些提高____________________________________________16)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)
(7)报告按规定排版打印,要求装订平整,否那么要求返工;
(8)课设报告的装订顺序如下封面--任务书--中文摘要一一目录一一正文-一附录(代码及相关图片)19)严禁抄袭,如有发现,按不及格处理4)辩论与评分标准(1〕考勤10分;12)程序检查30分;13〕课设辩论20分13〕课程设计报告40分;5)参考文献〔1〕丁振凡Java语言使用教程?北京邮电大学出版社______________________12〕张.某出版社⑶6)课程设计进度安排ife.getActionCommand==所有学生信息{}
11、2录入ife.getActionCommand==录入{String numO=nn;String sO=numbers.getText;ooo ifm.getState s2二“男;iff.getState s2二女;int count=0;try sql=n SELECT*FROM学生信息”;rs=stmt.executeQuerysql;whilers.next{numO=rs.getS tring学号;ifnumO.equalssO{count++;i ifcount==0{sql=insert into学生信息学号,姓名,性别,专业,年级,生日,备注values+s0+J+s]+J+s2+J+s3+J+s4+,+s5+,stmt.executeUpdatesql;confirmd=new Dialogzf,恭喜你!,!;confirmd.setVisibletrue;confirmd.setModaltrue;confirmd.setSize300,100;confirmd.setBounds20,100,220,100;confirmd.addWindowListenerthis;Label confirml=new Label注册成功!\n学号+s0+\n姓名:“+sl+”\n性别:“+$2+”\11专业:“+s3+”\n年级:“+s4+”\n生日:“+s5+””;Button confirmb=new Button“确定”;confirmb.addActionListenerthis;confirmd.setLayoutnew FlowLayout;confirmd.add nNorth n,confirml;confirmd.add HCenter n,confirmb;confirmd.pack;else{wrongd=new Dialogzf,错误;ooo}catchException ex{System.out.printlnex.getMessage;录入之前先检查该学号是否存在,如果存在,弹出错误对话框,提示重新输入,如果录入成功,弹出成功窗口
11、3查询/搜索ife.getActionCommand==查询{numO=numbers.getText;int count=0;try sql=SELECT*FROM学生信息”;rs=stmt.executeQuerysql;whilers.next{String sO=rs.getString学号;ooo ifnumO.equalssO{names.setTextsl;ifs
2.equals“男”m.setStatetrue;ooo count++;ifcount==0{wrongd=new Dialogzf,“错误”;ooo Labelwrongl=new Label您输入的学号+numO+不存在,请重新输入!”;numbers.setText nn;}catchException ex{System.out.printlnex.getMessage;查询该学号是否存在,如果不存在,弹出错误对话框,提示重新输入,如果存在,在查询窗体中显示该学生信息
11、4修改ife.getActionCommand==录入修改”{numbers.setTextnumO;String sO=numO;String s1=names.getText;ooo ifm.getState s2+男;ooo System.out.printlns0+sl+s2+s3+s4+s5;try sql=n update学生信息set姓名=H,+sl+,n where学号=n+nnt+s0+,nn;stmt.executeUpdatesql;sql=update学生信息set性别=+s2+where学号=+””+sO+””;ooo confiimd=new Dialogzf,恭喜你!;ooo names.setText nn;catchException ex{System.out.printlnex.getMessage;录入修改后该学生的信息,如果录入成功,弹出成功窗口
11、5删除ife.get ActionCommand二二删除{numbers.setTextnumO;try{sql=n SELECT*FROM学生信息”;rs=stmt.executeQuerysql;whilers.next{String s0-rs.getStringC,学号”;ifnumO.equalssO{sql=delete*from学生信息where学号=+numO+;stmt.executeUpdatesql;confirmd=new Dialogzf,成功了!;ooo}catchException ex{System.out.printlnex.getMessage;ife.getActionCommand==取消{zf.dispose;ife.getActionCommand==退出n{System.exitO;ife.getActionCommand==确定n{try confirmd.dispose;}catchException ex{}try wrongd.dispose;}catchException ex{}删除选定学生的信息,如果删除成功,弹出成功删除窗口
五、运行调试与分析讨论号华另大级日桌某二噜二名一一二重四大大至金嘉大大生89901919889090899188--
1919191919192122.....=18i Ri4F234562100311111o OO
六、设计体会与小结做课设让我对java有了新的认识,首先我接触了很多上课见过见过但没有实际用过的类和方法,让我对编程有了许多新的思想大一学了C与C++,虽然当时学的还不错,由于学的都是入门知识,所以自己做的都是DOS下执行的程序,虽然可以实现一定的功能,但和自己平时用的软件相差很大这学期刚开课学java感觉没什么新鲜感,它的跨平台特性也只是听听,根本没有认识,知道学到第七章图形界面用户编程的时候,我发现学会之后自己可以做出来的软件就更接近平时使用的软件了,不过由于平时学士不刻苦,到时没有时间静下心来写java代码,知道结课做课设,才静下心来开始研究java,结合以前的编程知识,做起了自己的程序之所以会选学籍管理系统,是因为上学期C++做的也是这个,做起来会比较熟练,同时想通过做课设学习一点数据库的知识,感觉这些知识更贴近实际应用,选好之后开始准备课设,先从最简单的主窗体,到主窗体的菜单,组件添加,再到各个功能的独立窗体的建立,再到最后的数据库连接,功能的实现,一步步走来,收获颇多其中独立窗体中的组件排版是碰到的第一个问题,最简单的方法是在建每个窗体时把所有需要的组件全部重新添加进去,但是这样代码会很长,而却会多占很多内存空间,于是我决定把个功能窗体中共同的组件在一个新方法中统一加载,为了减小占内存空间,组建的在主类的构造方法中生成,所有独立功能窗口公用组件,这样既减少了代码额长度,又提高了程序的内存利用率还有很多问题,都在权衡之后得到了较优的解决方法它能够使这次课设还让我对java的跨平台性有了进一步认识,当我学好代码兴致勃勃的想把它做成exe可执行文件时,在网上搜索之后发现它似乎很难实现,就是应为它的java语言的实现机制,通过jre来执行执行java代码,而不是调用系统本地代码除此之外我还学到了新的编程技巧,比方对try,catch的运用刚学的时候就是照书本上的打,很不情愿但是必须打的代码,在做课设时,我发现他又很神奇的功能可以帮助我解决用其他方法不好解决的问题,比方关闭窗口刚开始程序只有主窗口时,关闭很好实现,但随着程序功能的完善,需要关闭的窗口越来越多,需要关闭的类型也便多了,到了关闭Dialog的时候,发现Dialog不能强制转化为Frame,如果想用前面的方法管还得把多处代码进行修改,不过我想到了用try来解决这个问题再次感谢老师一学期对我们的教学!
七、参考文献
[1]丁振凡?Java语言使用教程?北京邮电大学出版社⑵百度
[3]JavaEye内容天数.地点构思及收集资料7图书馆编码与调试5实验室撰写论文3图书馆、实验室学生签名_______________10年12月20日课程设计(论文)评审意见⑴考勤〔10分)优〔)、良〔)、中(〕、一般〔〕、差〔〕;[2)程序检查〔30分)优〔)、良1)、中〔〕、一般〔〕、差〔);[3)课设辩论120分)优])、良1〕、中〔)、一般()、差〔);[4)课设报告〔40分〕优()、1〕、中]〕、一般〔)、差〔〕;良评阅人职称讲师10年01月25日中文摘要本程序用于用户对少量学生信息进行简单的管理,本程序针对于对平安系数要求不高,炒作不是很复杂的小型客户开发,如本程序不符合您的要求,请选择其他大型程序本程序可以实现对学生信息的录入、查询、修改、删除等操作,同时支持查看所有学生信息,功能完善,界面简洁美观,布局合理,操作简便,简单易用,任何人可轻松操作同时,本程序对系统要求配置较低,运行速度快,而却对数据库管理要求较低本程序数据库采用office2007版本的access数据库〔.accdb)进行数据存储,该数据库可实现关系较为简单的数据管理如有需要,请与XXX公司联系本程序版本为
0.9公测版,使用完全免费,未经允许,禁止用于商业用途,欢迎用户使用,如在使用中出现问题,请及时将问题反响给我们,一边为您提供质量更优秀的软件,我们再次深表感谢!
一、课设任务及要求题目学籍管理系统设计内容设计基于access数据库的学籍管理系统学生根本信息应包括对学生的相关属性进行操作,如学号、姓名、性别、专业、年级、生日等信息,另外添加备注一栏存储学生的附加信息用户可对学生根本信息进行录入、查询、修改、删除、显示所有学生信息等根本操作学生根本信息包括多项属性,关系较为复杂,应采用数据库存储学生根本信息,这样各种信息之间的关系、区别以及联系可以更好的存储起来设计要求1录入学生根本信息的功能
1.1用户按照要求输入信息进行注册,成功之后要提示用户注册成功
1.2当用户注册是输入不当,如学号已存在,应提示用户学号已存在,并重新输入2查询学生根本信息的功能
2.1用户可通过学号查询数据库中学生的根本信息,并将该学号的学生根本信息显示在查询窗口里
2.2当用户输入有不当,如输入学号不存在,应提示用户输入的学号有误,并重新输入
2.3用户不能对查询窗口中显示的学生根本信息进行编辑3修改学生根本信息的功能
3.1用户可通过学号在数据库中搜索需要修改的学生的根本信息、,并将该学号的学生根本信息显示在修改窗口里
3.2用户可通过各行的修改按钮来改变学生信息的状态,并对学生根本信息进行修改
3.3用户输入新的学生信息后可将修改后的学生信息上传至数据库中4删除学生根本信息的功能
4.1用户可通过学号在数据库中搜索需要删除的学生的根本信息、,并将该学号的学生根本信息显示在删除窗口里
5.2用户可将需要删除的学生信息从数据库中删除
6.3当用户删除成功之后应提示用处该学号的同学已从数据库中删除5显示所有学生根本信息的功能
7.1可在窗口中显示所有数据库中的学生信息
8.2学生信息要按一定规那么有序的显示
二、需求分析系统目标软件开发的意图便于用户对学生的管理,方便查看学生的情况如用户对学生根本信息进行录入、查询、修改、删除等使用范围本系统仅针对用户对少量学生进行学籍管理功能要求1录入学生根本信息的功能2查询学生根本信息的功能3修改学生根本信息的功能4删除学生根本信息的功能5显示所有学生信息的功能信息采集与使用权限使用时由用户录入学生信息,安装本系统的用户皆可使用此软件性能需求
1、程序运行流畅程序占用内存小,可在大多数电脑上流畅运行
2、数据的完整性,准确性录入按格式录入,同时只能录入一名学生的根本信息输出按格式输出,输出所有学生信息是要采用表格形式
3、界面适当美观,优雅,通用性较强
三、设计思路界面构建
1、为了便于各种操作,软件采用多窗口的模式用户可在不同窗口进行相应操作〔录入、查询、修改、删除、显示所有学生省信息〕
2、主窗口是用户进行各种操作的平台,具体操作在各个独立功能窗口中完成
3、主窗口的主要功能位于菜单中,菜单为进入各个功能窗口的唯一通道
4、各功能窗口〔除显示所有学生信息窗口〕均由两到三个模块构成第一个模块中主要包含学号以及相关操作的组件第二个模块由姓名、性别、专业、年级、生日等相关组件构成第三个模块(录入、修改、删除窗口中包含)由相关操作的功能按钮组件构成
5、当用户在进行个别录入、删除或错误输入操作时,会弹出相应对话框提示用户如当录入成功或删除成功,弹出成功以及相应的简明信息提示当,当录入、删除失败以及输入不当是,弹出错误以及简单的错误原因提示用户重新操作
6、界面布局尽量合理,各组件位置分布均匀美观数据存储
1、由于学生包含多项属性,需对学生属性进行录入、修改、删除等多项操作,操作过程较为复杂,故采用数据库本软件针对小型用户使用,故使用入门级的access数据库
2、由于存储少量信息,数据库中只包含一个表,表中有学号、姓名、性别、专业、年级、生日等关键字
3、数据库在用完之后即使关闭
四、详细设计
1、程序主体概述import java.awt.*;import java.awt.event.*;import java.sql.*;程序采用AWT包的相关组件设计,故包含awt包;通过各种动作完成相关操作,故包含awt.event包;学生信息用数据库存储,故包含sql包;public classStudentManageSystem extendsFrame implementsWindowListener,ActionListener{}StudentManageSystem为主类,通过继承类Frame以及借口,分别实现主窗口创立功能,动作、窗口都做监听的功能
2、窗口监听windowClosingwei〔为实现各窗口关闭的方法public voidwindowClosingWindowEvent e{try Framefrm=Framee.getSource;ife.getSource==this{try stmt.close;con.close;catchException ex{System.out.printlnex.getMessage;System,ex万0;else{frm.disposeQ;。