【勤拂拭软件,软件开发,毕业设计,程序作业,论文写作指导:q-[1215714557] 加好友请注明:勤拂拭)】
之前帮助一个军校学生做的一个评优评奖管理系统,该系统主要用于学校学生评优评先使用。
系统采用java开发,数据库是mysql。
下面简单讲诉一下该系统的设计:
一. 系统设计
1.1 系统目标设计
在对现有系统和现状认真调查分析的基础上,明确了学员信息管理工作本身存在的问题和建立管理信息系统的初步要求,进一步研究确定新系统的目标如下:
1、管理员能够实现对学员信息的添加、修改、删除、查询等操作,对干教用户的添加、修改、删除等操作。
2、干教能够在一定的权限内对所有学员成绩的查询,平时量化成绩查询,所有干教的信息的查询等,对自己信息进行更新,登陆密码的修改。
3、学员可以在自己的权限内对自己成绩的查询,已经课程、个人信息的查询所获荣誉查询,平时量化分数查询,登陆密码的修改等相关操作。
4、按照管理信息系统的原理和方法,采用成熟的信息技术和手段,支持学员管理的全过程,提高教务工作效率。
5、针对现代计算机广泛应用的情况以及数据的封闭性公安海警学院学员评优评奖管理系统基于Windows系统研制、设计和开发。
6、考虑经费等原因,系统使用一台PC机和现有的软件以节省资金,降低成本。
1.2 系统功能分析
本系统适用于公安xx学院以及其他同类军事院校,其功能主要分为五大类:
1. 用户管理:用于对用户的添加,赋予不同权限及对用户的修改及查询。
2. 课程管理:用于对个个课程的开放和修改。
3. 成绩管理:用于对成绩的查询。
4. 学员信息管理:添加、删除、修改学员信息。
5. 学员平时量化成绩管理:管理学员平时量化成绩,包括体能,作风,日常表现
6. 教师信息管理:对授课教师、课程等信息的添加、修改等。
7. 评优评先决策: 根据学员成绩自动完成评优评先的初步决策
二、系统实现
2.1 登陆端
登陆界面主要代码:
1 package wyf.cgq; 2 import java.awt.*; 3 public class Login extends JFrame implements ActionListener 4 { 5 private String host; 6 //声明Connection引用、Statement对象引用与结果集引用 7 private Connection conn; 8 private Statement stmt; 9 private ResultSet rs; 10 private Image image=new ImageIcon("res/logo2.jpg").getImage(); 11 //JPanel panel = new BackgroundPanel(image); 12 private JPanel jp=new BackgroundPanel(image);//创建用来存放空间的容器 13 private JLabel jl3=new JLabel("");//正在登陆提示标签 14 //创建主机地址、端口号、用户名和密码输入框 15 private JTextField hostport=new JTextField(); 16 private JTextField hostaddress=new JTextField(); 17 private JTextField jtf=new JTextField(); 18 private JPasswordField jpwf=new JPasswordField(); 19 private JRadioButton radioButton = new JRadioButton("普通学员",true); 20 private JRadioButton radioButton_1 = new JRadioButton("管理人员"); 21 private JRadioButton[] jrbArray=//创建单选按钮数组 22 { 23 radioButton, 24 radioButton_1 25 }; 26 //创建组 27 private ButtonGroup bg=new ButtonGroup(); 28 //创建操作按钮 29 private JButton jb1=new JButton("登 陆"); 30 private JButton jb2=new JButton("重 置"); 31 private final JPanel panel_1 = new JPanel(); 32 private final JPanel panel_2 = new JPanel(); 33 //构造器 34 public Login() 35 { 36 radioButton_1.setBackground(Color.CYAN); 37 radioButton_1.setSize(100, 15); 38 radioButton_1.setLocation(170, 190); 39 radioButton.setSize(100, 15); 40 radioButton.setLocation(60, 190); 41 radioButton.setBackground(Color.MAGENTA); 42 this.addListener(); 43 initialFrame();//初始化界面 44 } 45 public void addListener(){ 46 this.jb1.addActionListener(this);//为登陆按钮注册监听器 47 this.jb2.addActionListener(this);//为重置按钮注册监听器 48 this.jtf.addActionListener(this);//为用户名文本框注册监听器 49 this.jpwf.addActionListener(this);//为用户名密码框注册监听器 50 jp.add(hostaddress); 51 this.hostaddress.addActionListener(this);//为主机地址文本框注册监听器 52 jp.add(hostport); 53 this.hostport.addActionListener(this);//为端口号文本框注册监听器 54 } 55 public void initialFrame() 56 { 57 //设为空布局 58 jp.setLayout(null); 59 this.jtf.setBounds(170,100,130,25); 60 this.jp.add(jtf); 61 this.jpwf.setBounds(170,150,130,25); 62 this.jpwf.setEchoChar(‘*‘); 63 this.jp.add(jpwf); 64 this.bg.add(jrbArray[0]); 65 this.bg.add(jrbArray[1]); 66 this.jrbArray[0].setBounds(40,180,100,25); 67 this.jp.add(jrbArray[0]); 68 this.jrbArray[1].setBounds(145,180,100,25); 69 this.jp.add(jrbArray[1]); 70 this.jb1.setBounds(40,280,100,30); 71 this.jp.add(jb1); 72 this.jb2.setBounds(184,280,100,30); 73 this.jp.add(jb2); 74 this.jl3.setBounds(40,245,150,25); 75 this.jp.add(jl3); 76 getContentPane().add(jp); 77 this.hostport.setBounds(0,0,0,0); 78 this.hostport.setText("3306"); 79 this.hostaddress.setBounds(0,0,0,0); 80 //将填写姓名的文本框设为默认焦点 81 this.hostaddress.requestFocus(true); 82 this.hostaddress.setText("127.0.0.1"); 83 panel_2.setBackground(SystemColor.menu); 84 panel_2.setBounds(40, 100, 100, 25); 85 86 jp.add(panel_2); 87 panel_2.setLayout(null); 88 89 JLabel lblNewLabel = new JLabel("\u767B\u9646\u540D"); 90 lblNewLabel.setBounds(0, 0, 100, 25); 91 panel_2.add(lblNewLabel); 92 lblNewLabel.setForeground(Color.RED); 93 lblNewLabel.setFont(new Font("华文楷体", Font.PLAIN, 24)); 94 lblNewLabel.setBackground(Color.WHITE); 95 panel_1.setBounds(40, 150, 100, 25); 96 97 jp.add(panel_1); 98 panel_1.setLayout(null); 99 100 JLabel label = new JLabel("\u5BC6 \u7801"); 101 label.setBounds(0, 0, 100, 25); 102 panel_1.add(label); 103 label.setForeground(Color.RED); 104 label.setFont(new Font("华文楷体", Font.PLAIN, 24)); 105 label.setBackground(SystemColor.menu); 106 107 JPanel panel = new JPanel(); 108 panel.setBackground(SystemColor.activeCaption); 109 panel.setBounds(10, 10, 451, 54); 110 jp.add(panel); 111 panel.setLayout(null); 112 113 JLabel label_1 = new JLabel("\u516C\u5B89\u6D77\u8B66\u5B66\u9662\u5B66\u5458\u8BC4\u4F18\u8BC4\u5956\u7BA1\u7406\u7CFB\u7EDF"); 114 label_1.setBounds(0, 0, 451, 54); 115 panel.add(label_1); 116 label_1.setForeground(SystemColor.desktop); 117 label_1.setFont(new Font("华文楷体", Font.PLAIN, 28)); 118 label_1.setBackground(Color.WHITE); 119 //设置窗口的标题、大小、位置以及可见性 120 this.setTitle("登陆"); 121 Image image=new ImageIcon("ico.gif").getImage(); 122 this.setIconImage(image); 123 this.setResizable(false); 124 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 125 int centerX=screenSize.width/2; 126 int centerY=screenSize.height/2; 127 int w=300;//本窗体宽度 128 int h=320;//本窗体高度 129 this.setBounds(centerX-w/2,centerY-h/2-100,477,400);//设置窗体出现在屏幕中央 130 this.setVisible(true); 131 } 132 //实现ActionListener接口中的方法 133 public void actionPerformed(ActionEvent e) 134 { 135 if(e.getSource()==this.jb1) 136 {//按下登陆按钮 137 this.jl3.setText("正 在 验 证 , 请 稍 候. . . . .");//设置提示信息 138 //获取用户输入的主机地址、端口号、用户名与密码 139 String hostadd=this.hostaddress.getText().trim(); 140 if(hostadd.equals("")){ 141 JOptionPane.showMessageDialog(this,"请输入主机地址","错误", 142 JOptionPane.ERROR_MESSAGE); 143 jl3.setText("");return; 144 } 145 String port=this.hostport.getText(); 146 if(port.equals("")){ 147 JOptionPane.showMessageDialog(this,"请输入端口号","错误", 148 JOptionPane.ERROR_MESSAGE); 149 jl3.setText("");return; 150 } 151 this.host=hostadd+":"+port; 152 String name=this.jtf.getText().trim(); 153 if(name.equals("")){ 154 JOptionPane.showMessageDialog(this,"请输入用户名","错误", 155 JOptionPane.ERROR_MESSAGE); 156 jl3.setText("");return; 157 } 158 String pwd=this.jpwf.getText().trim(); 159 if(pwd.equals("")){ 160 JOptionPane.showMessageDialog(this,"请输入密码","错误", 161 JOptionPane.ERROR_MESSAGE); 162 jl3.setText("");return; 163 } 164 int type=this.jrbArray[0].isSelected()?0:1;//获取登陆类型 165 try{ //初始化连接 166 this.initialConnection(); 167 if(type==0){//普通学员登陆 168 //创建sql语句并查询 169 String sql="select * from user_stu where "+ 170 "stu_id=‘"+name+"‘ and pwd=‘"+pwd+"‘"; 171 rs=stmt.executeQuery(sql); 172 if(rs.next()){ 173 new StuClient(name,host);//创建学员客户短窗口 174 this.dispose();//关闭登陆窗口并释放资源 175 } 176 else{//弹出错误提示窗口 177 JOptionPane.showMessageDialog(this,"用户名或密码错误","错误", 178 JOptionPane.ERROR_MESSAGE); 179 jl3.setText(""); 180 } 181 this.closeConn();//关闭连接,语句及结果集 182 } 183 else{//教师登陆 184 //创建sql语句并查询 185 String sql="select coll_id from user_teacher where "+ 186 "uid=‘"+name+"‘ and pwd=‘"+pwd+"‘"; 187 rs=stmt.executeQuery(sql); 188 if(rs.next()){ 189 String coll_id=rs.getString(1); 190 new TeacherClient(coll_id,host);//创建教师客户端窗口 191 this.dispose();//关闭登陆窗口并释放资源 192 } 193 else{//弹出错误提示窗口 194 JOptionPane.showMessageDialog(this,"用户名或密码错误","错误", 195 JOptionPane.ERROR_MESSAGE); 196 jl3.setText(""); 197 } 198 this.closeConn(); //关闭连接,语句及结果集 199 } 200 } 201 catch(SQLException ea){ea.printStackTrace();} 202 } 203 else if(e.getSource()==this.jb2){//按下重置按钮,清空输入信息 204 this.jtf.setText(""); 205 this.jpwf.setText(""); 206 } 207 else if(e.getSource()==jtf){//当输入用户名并回车时 208 this.jpwf.requestFocus(true); 209 } 210 else if(e.getSource()==jpwf){//当输入密码并回车时 211 this.jb1.requestFocus(true); 212 } 213 else if(e.getSource()==this.hostaddress){//当输入主机地址并回车时 214 this.hostport.requestFocus(true); 215 } 216 else if(e.getSource()==this.hostport){//当输入端口号并回车时 217 this.jtf.requestFocus(true); 218 } 219 } 220 //自定义的初始化数据库连接的方法 221 public void initialConnection() 222 { 223 try 224 {//加载驱动,创建Connection及Statement 225 Class.forName("org.gjt.mm.mysql.Driver"); 226 conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/pypx?useUnicode=true&characterEncoding=utf8", "root","root"); 227 stmt=conn.createStatement(); 228 } 229 catch(SQLException e) 230 { 231 JOptionPane.showMessageDialog(this,"连接失败,请检查主机地址是否正确","错误",JOptionPane.ERROR_MESSAGE); 232 e.printStackTrace(); 233 } 234 catch(ClassNotFoundException e) 235 { 236 e.printStackTrace(); 237 } 238 } 239 //初始化的关闭数据库连接的方法 240 public void closeConn() 241 { 242 try 243 { 244 if(rs!=null) 245 { 246 rs.close(); 247 } 248 if(stmt!=null) 249 { 250 stmt.close(); 251 } 252 if(conn!=null) 253 { 254 conn.close(); 255 } 256 } 257 catch(SQLException e) 258 { 259 e.printStackTrace(); 260 } 261 } 262 public static void main(String args[]) 263 { 264 //创建登陆窗体对象 265 Login login=new Login(); 266 } 267 }
2.2 学员端
学员端主界面主要是方便学员查看自己的成绩,学员可以通过这个界面查看自己平时成绩,量化分数,获得荣誉等信息。界面如下:
主要实现代码展示
package wyf.cgq; import java.util.*; public class StuClient extends JFrame { private String host; //声明标志学员学号的变量 private String stu_id; //创建树的各个节点 private DefaultMutableTreeNode dmtnRoot=new DefaultMutableTreeNode(new MyNode("操作选项","0")); private DefaultMutableTreeNode dmtn1=new DefaultMutableTreeNode(new MyNode("系统选项","1")); private DefaultMutableTreeNode dmtn2=new DefaultMutableTreeNode(new MyNode("个人基本信息","2")); private DefaultMutableTreeNode dmtn3=new DefaultMutableTreeNode(new MyNode("学员选课","3")); private DefaultMutableTreeNode dmtn4=new DefaultMutableTreeNode(new MyNode("成绩查询","4")); private DefaultMutableTreeNode dmtn5=new DefaultMutableTreeNode(new MyNode("平时量化","5")); private DefaultMutableTreeNode dmtn6=new DefaultMutableTreeNode(new MyNode("体能考核","6")); private DefaultMutableTreeNode dmtn7=new DefaultMutableTreeNode(new MyNode("获得荣誉","7")); private DefaultMutableTreeNode dmtn8=new DefaultMutableTreeNode(new MyNode("评选先进办法","8")); // private DefaultMutableTreeNode dmtn11=new DefaultMutableTreeNode(new MyNode("退出","11")); private DefaultMutableTreeNode dmtn13=new DefaultMutableTreeNode(new MyNode("密码修改","13")); // private DefaultMutableTreeNode dmtn31=new DefaultMutableTreeNode(new MyNode("选课","31")); private DefaultMutableTreeNode dmtn32=new DefaultMutableTreeNode(new MyNode("课表显示","32")); // private DefaultMutableTreeNode dmtn41=new DefaultMutableTreeNode(new MyNode("已修课程成绩","41")); private DefaultMutableTreeNode dmtn42=new DefaultMutableTreeNode(new MyNode("不及格课程成绩","42")); //评选先进子节点 private DefaultMutableTreeNode dmtn81=new DefaultMutableTreeNode(new MyNode("优秀毕业生评选办法","81")); private DefaultMutableTreeNode dmtn82=new DefaultMutableTreeNode(new MyNode("优秀学员评选办法","82")); private DefaultMutableTreeNode dmtn83=new DefaultMutableTreeNode(new MyNode("嘉奖评选办法","83")); //创建根节点 private DefaultTreeModel dtm=new DefaultTreeModel(dmtnRoot); //创建树状列表控件 private JTree jtree=new JTree(dtm); private JScrollPane jspz=new JScrollPane(jtree); //创建存放个功能模块面板 private Image image=new ImageIcon("res/bg.jpg").getImage(); //JPanel panel = new BackgroundPanel(image); private JPanel jpy=new BackgroundPanel(image); private JSplitPane jsp1=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jspz,jpy); //声明卡片布局的引用 private CardLayout cl; //生命欢迎页面 private Welcome welcome; //声明个功能模块的引用 //选课模块的引用 private ChoseCourse chosecourse; //课表显示模块的引用 private CourseTable coursetable; //学员成绩查询页面 private StuGrade stugrade; //不及格成绩查询页面 private StuFailGrade stufailgrade; //基本信息查询页面 private StuInfo stuinfo; //密码更改页面 private ChangePwd changepwd; //优等生说明界面 private Yxbys yxbys; //优秀学员 private Yxxy yxxy; //嘉奖 private Jj jj; //构造器 public StuClient(String stu_id,String host) { this.host=host; this.stu_id=stu_id; //初始化树状列表控件 this.initialTree(); //初始化个功能模块面板 this.initialPane(); //初始化主功能面板,其他面板都一卡 //片布局的形式存在与该面板 this.initialJpy(); //为控件注册监听器 this.addListener(); //初始化窗体 this.initialFrame(); } //主面板的初始化方法 public void initialJpy() {//将各功能模块以卡片布局的形式存入主面板 jpy.setLayout(new CardLayout()); cl=(CardLayout)jpy.getLayout(); jpy.add(welcome,"welcome"); welcome.setBackground(Color.red); jpy.add(welcome,"welcome"); jpy.add(chosecourse,"chosecourse"); jpy.add(coursetable,"coursetable"); jpy.add(stugrade,"stugrade"); jpy.add(stufailgrade,"stufailgrade"); jpy.add(stuinfo,"stuinfo"); jpy.add(changepwd,"changepwd"); jpy.add(yxbys,"yxbys"); jpy.add(yxxy,"yxxy"); jpy.add(jj,"jj"); } //初始化各功能模块的方法 public void initialPane() { welcome=new Welcome("学员成绩管理系统"); chosecourse=new ChoseCourse(stu_id,host); coursetable=new CourseTable(stu_id,host); stugrade=new StuGrade(stu_id,host); stufailgrade=new StuFailGrade(stu_id,host); stuinfo=new StuInfo(stu_id,host); changepwd=new ChangePwd(stu_id,host); yxbys=new Yxbys(); yxxy=new Yxxy(); jj=new Jj(); } //初始化树状列表控件的方法 public void initialTree() { dmtnRoot.add(dmtn1); dmtnRoot.add(dmtn2); dmtnRoot.add(dmtn3); dmtnRoot.add(dmtn4); dmtnRoot.add(dmtn5); dmtnRoot.add(dmtn6); dmtnRoot.add(dmtn7); dmtnRoot.add(dmtn8); dmtn1.add(dmtn11); dmtn1.add(dmtn13); dmtn3.add(dmtn31); dmtn3.add(dmtn32); dmtn4.add(dmtn41); dmtn4.add(dmtn42); dmtn8.add(dmtn81); dmtn8.add(dmtn82); dmtn8.add(dmtn83); jtree.setToggleClickCount(1); } //为树状列表控件注册鼠标事件监听器的方法 public void addListener() { jtree.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { DefaultMutableTreeNode dmtntemp=(DefaultMutableTreeNode)jtree.getLastSelectedPathComponent(); MyNode mynode=(MyNode)dmtntemp.getUserObject(); String id=mynode.getId(); //根据id值显示不同的卡片 if(id.equals("0")) { cl.show(jpy,"welcome"); } else if(id.equals("11")) { int i=JOptionPane.showConfirmDialog(jpy,"您确认要退出出系统吗?","询问",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if(i==0) { System.exit(0); } } else if(id.equals("13")) { cl.show(jpy,"changepwd"); changepwd.setFocus(); } else if(id.equals("2")) { cl.show(jpy,"stuinfo"); } else if(id.equals("31")) { cl.show(jpy,"chosecourse"); } else if(id.equals("32")) { //在显示之后立即更新数据 cl.show(jpy,"coursetable"); coursetable.initialData(); coursetable.updataview(); } else if(id.equals("41")) { cl.show(jpy,"stugrade"); } else if(id.equals("42")) { cl.show(jpy,"stufailgrade"); }else if(id.equals("81")) { cl.show(jpy,"yxbys"); }else if(id.equals("82")){ cl.show(jpy,"yxxy"); }else if(id.equals("83")){ cl.show(jpy,"jj"); } } } ); } //初始化窗体的方法 public void initialFrame() { this.add(jsp1); jsp1.setDividerLocation(200); jsp1.setDividerSize(4); //设置窗体的标题、大小及其可见性 this.setTitle("学员自主查询客户端"); Image image=new ImageIcon("ico.gif").getImage(); this.setIconImage(image); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int centerX=screenSize.width/2; int centerY=screenSize.height/2; int w=900;//本窗体宽度 int h=650;//本窗体高度 this.setBounds(centerX-w/2,centerY-h/2-30,w,h);//设置窗体出现在屏幕中央 this.setVisible(true); //窗体全屏 this.setExtendedState(JFrame.MAXIMIZED_BOTH); } //自定义的初始化树节点的数据对象的类 class MyNode { private String values; private String id; public MyNode(String values,String id) { this.values=values; this.id=id; } public String toString() { return this.values; } public String getId() { return this.id; } } }
2.3 干部端
(注:本系统为工作室成品,有全套资料,需要可联系)
勤拂拭软件出品,必属精品
软件开发,毕业设计,程序作业,请访问勤拂拭毕业设计:
我的qq(1215714557 加好友请注明:勤拂拭)
qq群(439261058 加群请注明:勤拂拭)