课程设计课程设计名称:java课程设计专业班级:计科10级5班学生姓名:学号:指导教师:课程设计时间:2012.6.18-2012.6.30计算机科学与技术专业课程设计任务书学生姓名专业班级学号题目毕业设计学生分配系统课题性质工程设计课题来源自拟课题指导教师同组姓名无主要内容1.能够导入学生名单;2.能够导入教师名单;3.能够设定规则,哪些教师可以多分多少个学生;4.考虑设定的规则,按顺序或随机的方法分配学生;5.输出分配后的名单,以教师为主或以学生为主。任务要求1.进一步掌握SQL语句的使用,能与实际结合应用于现实生活之中;2.掌握毕设学生分配系统的分配操作,实现对学生的按顺序分配及随机分配操作;3.掌握程序与数据库之间的连接,对毕设学生分配系统进行学生和教师的导入导出操作;4.能准确无误实执行学生教师的分配功能,并执行输出功能将结果输出。参考文献[1](美)CayS.Horstmann、GaryCornell.Java核心技术卷I:基础知识(第8版)(英文影印版).人民邮电出版社,2008.11[2]耿祥义、张跃平.JAVA2实用教程(修订).清华大学出版社,2001.10审查意见指导教师签字:教研室主任签字:2012年6月20日1毕设学生分配系统一、需求分析毕业设计学生分配系统主要用于导师对学生或学生对导师进行分配问题的解决而开发的应用性软件系统。该系统拥有的导入教师导入学生功能可以对教师、学生信息的导入并将其信息保存至数据库以备用户调用,在导入后的数据库中会自动为每位教师学生按先来后到的序号对其进行编排序号,用户可以自行在数据库中看到导入的教师或是学生信息,在导入信息时该系统会自动检查根据用户导入信息是否与相应的应该输入的信息类型是否匹配,匹配则会导入成功,否则会提醒用户,如果用户导入信息不完善时就会提醒用户导入将会失败。该系统中的设置规则功能会根据用户的分配方法不同可以自行设置为按顺序分配或是随机分配,在该系统中用户可以根据教师职称的不同对其进行名额的分配设置不同的分配量,在默认情况下每位教师均可分得两个学生,但用户可以设置教授多分配1名学生,则凡是教授级的教师均可分得3名学生,在默认情况下该系统分配顺序为按顺序分配,但用户可以设置随机分配,则分配情况为随机下的分配结果,执行分配功能后用户可以点击导出功能将会看到分配后的结果二、概要设计系统功能模块图如图1所示:2毕业设计学生分配系统教师信息导入模块学生信息导入模块执行分配功能模块导出结果功能模块设置规则功能模块教师信息添加姓名选择职称学生信息添加姓名学号专业可多分配人数的教师职称多分配人数及分配顺序点击直接执行点击直接导出结果图1.系统功能模块图系统流程图如图2所示:主界面学生信息导入教师信息导入执行分配设置规则导出结果图2.系统流程图三、运行环境、开发语言软件环境:MicrosoftWindowsXPProfessional版本2002ServicePack3硬件环境:Pentium(R)DCPU2.8GHz内存1.00GB开发语言:Java3四、详细设计1程序清单所有程序如表1所示。表1程序清单匿名内部类功能stuListener导入学生信息teaListener导入教师信息setListener设置规则功能fenpeiListener分配功能resultListener导出结果2数据库设计Student表用来存放学生信息,结构如下表2所示:表2Student(学生信息表)列名类型描述idBigint学生学号,唯一nameVarchar学生姓名ZhuanyeVarchar专业teacher表用来存放教师信息,结构如下表3所示:表3teacher(教师信息表)列名类型描述NameVarchar(200)教师姓名ZhichengVarchar(200)教师职称3主要代码3.1导入学生信息功能首先执行导入学生信息功能输入学生信息,输入姓名、学号、专业。单击“OK”按纽后会把数据保存到student数据库中。该功能截图如图3。具体代码如下:4图3导入学生信息界面classstuListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){Objectsource=e.getSource();if(source==stuBtn){finalJFramef=newJFrame(导入学生对话框);Containerc=f.getContentPane();finalJLabeljl1=newJLabel(姓名:);finalJLabeljl2=newJLabel(学号:);finalJLabeljl3=newJLabel(专业:);finalJTextFieldjtf1=newJTextField(15);finalJTextFieldjtf2=newJTextField(15);finalJTextFieldjtf3=newJTextField(15);finalJButtonokBtn=newJButton(Ok);finalJButtoncancelBtn=newJButton(Cancel);okBtn.setPreferredSize(newjava.awt.Dimension(105,25));cancelBtn.setPreferredSize(newjava.awt.Dimension(105,25));okBtn.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){Objectsource=e.getSource();if(source==okBtn){intflag=0;//输入类型是否匹配标记Stringtransport=jtf2.getText();stu_name=jtf1.getText();try{//如果textfield中没有内容将在Long.parseLong转换时导致异常Stringstr1=jtf2.getText();str1=str1.replaceAll([0-9],);//将所有的数字型字符替换为空if((str1.length()0)){//文本框中的值不是int类型,有其他字母或者符号型字符的存在JOptionPane.showMessageDialog(null,输入类型不匹配,Warning,JOptionPane.WARNING_MESSAGE);flag=1;}stu_id=Long.parseLong(transport);5}catch(Exceptionexp){}stu_zhuanye=jtf3.getText();if(flag==0&stu_name.length()!=0&transport.length()!=0&stu_zhuanye.length()!=0){try{stu_xuhao=stuBySelect()+1;insertStuTable(stu_xuhao,stu_id,stu_name,stu_zhuanye);JOptionPane.showMessageDialog(null,导入成功,信息已保存,Terrific,JOptionPane.PLAIN_MESSAGE);}catch(Exceptionf){}elseif(flag==0)JOptionPane.showMessageDialog(null,信息不完整,将导致导入信息失败,Confirm,JOptionPane.INFORMATION_MESSAGE);}cancelBtn.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){Objectsource=e.getSource();if(source==cancelBtn){f.dispose();//当前窗口消失}3.2导入教师信息功能导入教师信息功能输入教师信息,输入姓名、选择职称。单击“OK”按纽后会把数据保存到teacher数据库中。该功能截图如图4。具体代码如下:图4导入教师信息界面classteaListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){Objectsource=e.getSource();if(source==teaBtn){finalJFramef=newJFrame(导入教师对话框);6Containerc=f.getContentPane();finalJLabeljl1=newJLabel(姓名:);finalJLabeljl2=newJLabel(职称:);finalJTextFieldjtf1=newJTextField(15);Stringsemester[]={,教授,副教授,博士,硕士};finalJComboBoxjcbx=newJComboBox(semester);finalJButtonokBtn=newJButton(Ok);finalJButtoncancelBtn=newJButton(Cancel);okBtn.setPreferredSize(newjava.awt.Dimension(105,25));cancelBtn.setPreferredSize(newjava.awt.Dimension(105,25));okBtn.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){Objectsource=e.getSource();if(source==okBtn){tea_name=jtf1.getText();jcbx.setEditable(false);tea_zhicheng=(String)jcbx.getSelectedItem();if(tea_name.length()!=0&tea_zhicheng!=){try{tea_xuhao=teaBySelect()+1;insertTeaTable(tea_xuhao,tea_name,tea_zhicheng);JOptionPane.showMessageDialog(null,导入成功,信息已保存,Terrific,JOptionPane.PLAIN_MESSAGE);}catch(Exceptionf){}elseJOptionPane.showMessageDialog(null,信息不完整,将导致导入信息失败,Confirm,JOptionPane.INFORMATION_MESSAGE);}cancelBtn.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){Objectsource=e.getSource();if(source==cancelBtn){f.dispose();}3.3设置规则功能设置规则功能选择可多分配的教师职称与相应多分配的人数,在分配顺序中可以选择顺序分配或是随机分配,设置后将按照设置规则进行分配,该功能截图如图5。具体代码如下:7图5设置规则界面classsetListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){Objectsource=e.getSource();if(source==setBtn){finalJFramef=newJFrame(设置规则对话框);Containerc=f.getContentPane();JPaneljp1=newJPanel();JLabeljl1=newJLabel(