Web系统开发课程设计报告


       Web系统开发课程设计报告   课 题: 学生信息管理系统 专 业: 数字媒体技术 班 级: 1708班 组 长:张(2010843) 组 员:张(200844) 樊(2017) 康(200840) 邓 (200809)    2020年6月10日     目 录 一、系统描述 2 1、需要实现的功能 3 2、设计目的 3 二、分析与设计 3 1、功能模块划分 3 2、数据库结构描述 4 3、系统详细设计文档 6 4、各个模块的实现方法描述 9 5、测试数据及期望结果 11 三、系统测试 16 四、心得体会和总结 23 五、代码 24 一、系统描述 1、需求实现的功能 1.1、录入学生基本信息的功能 学生基本信息主要包括:学号、姓名、年龄、出生地、专业、班级总学分,在插入时,如果数据库已经存在该学号,则不能再插入该学号。 1.2、修改学生基本信息的功能 在管理员模式下,只要在表格中选中某个学生,就可以对该学生信息进行修改。 1.3、查询学生基本信息的功能 可使用 “姓名”对已存有的学生资料进行查询。 1.4、删除学生基本信息的功能 在管理员模式下,只要选择表格中的某个学生,就可以删除该学生。 1.5、用户登陆 用不同的登录权限可以进入不同的后台界面,从而实现权限操作。 1.6、用户登陆信息设置 可以修改用户登陆密码 2、设计目的 学生信息管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差、人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理无法比拟的优点。例如:检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。 本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。通过一个简化的学生信息管理系统,使学生信息管理工作系统化、规范化、自动化,从而达到提高学生信息管理效率的目的。 二、分析与设计 1、功能模块划分 学生信息管理系统 浏览学生信息 查询学生信息 添加学生信息 修改学生信息 删除学生信息 普通学生(用户)模块 班委(管理员)模块 浏览学生信息 查询学生信息 学生管理 登陆管理 修改登陆密码 显示登陆用户 图1 功能模块划分图 2、数据库结构描述 2.1、数据库E-R模型 登录用户管理 账号 密码 职位 图2 登录用户管理E-R图 学 生 总学分 出生地 年龄 专业 性别 姓名 学号 班级 图3 实体学生E-R图 2.2、数据库关系模型——二维表 表1 学生表(student) 字段 数据类型 说明 stuId nvarchar(30) 学号 stuName nvarchar(30) 姓名 stuSex nvarchar(30) 性别 stuAge int 年龄 stuJg nvarchar(30) 籍贯 stuZy nvarchar(30) 专业 classId nvarchar(30) 班号 stuSourse numeric(5,2) 总学分 图4 录入数据后的学生表 表2 登陆权限表(login) 字段 数据类型 说明 userId nvarchar(30) 用户名(账号),即登陆Id password nvarchar(30) 登陆密码 position nvarchar(30) 职位,如班委,普通学生 图5 录入数据后的登陆权限表 3、系统详细设计文档 3.1、系统执行流程图 进度条(闪屏) 用户登陆 登陆验证 false true 班委(管理员)界面 普通学生界面 查询 添加 修改 删除 查询 显示 班委(管理员 ) 普通学生(用户) 退出 退出系统 结束 结束 退出系统 true false false true 修改用户登陆密码 显示登陆用户信息 图6 系统执行流程图 3.2、类的划分 表3 学生信息查询类 类名 类的成员属性与方法 说明 StuQuery.java JPanel jp1 定义一个面板 JLabel jp1_jl1 定义两个标签 JTextField jp1_jtf1 定义一个文本输入框 JButton jp1_jb1,jp1_jb2,jp1_jb3 定义三个按钮 JTable jtb 定义一个表 JScrollPane jsp 定义一个滚动面板,用于存放表 TableModel tm 自定义一个表模型,用于更新表数据 public StuQuery(Frame Main,String title ,boolean model) 构造方法,通过传递三个参数,实现对话 super(Main,title,model) 调用父类的构造方法,实现模式对话 public void actionPerformed(ActionEvent arg0) 事件响应方法 表4 修改学生信息类 类名 类的成员属性与方法 说明 UpdateStu.java JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7,jl8 定义八个标签,用于设置数据库表的字段名 JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7,jtf8 定义八个文本框,用于接收表的各字段值 JButton jb1,jb2,jb3 定义三个按钮,用于事件响应 public void addView() 这是修改学生界面的函数封装 public AddStu(Frame Main,String title,boolean model) 构造方法,通过传递三个参数,实现对话 super(Main,title,model) 调用父类的构造方法,实现模式对话 public UpdateStu(Frame Main,String title,TableModel tm,int rowNo,boolean model) 因为要修改信息,那么必须要获得所选中的那一行的所有信息,把它们添加到文本框作为默认值,因此构造方法还应添加一个参数即传递一个模型tm,并传递所选中的行号row public void actionPerformed(ActionEvent e) 事件响应方法 表5 修改管理人员信息类 类名 类的成员属性与方法 说明 UpdateLogin.java JLabel jl1,jl2,jl3 定义三个标签,即用户名,密码,职位 JTextField jtf1,jtf2,jtf3 定义三个文本框,对应三个标签的值 JButton jb1,jb2,jb3 定义三个按钮,用于事件响应 JTable jtb 定义一个表格,用于显示登陆用户信息 PurViewModel pvm 自定义登陆用户信息的数据更新模型 public void upView() 这是修改账户信息权限的界面函数的封装 public UpdateLogin(Frame Main,String title,PurViewModel pvm,int rowNo,boolean model) 因为要修改信息,那么必须要获得所选中的那一行的所有信息,把它们添加到文本框作为默认值,因此构造方法还应添加一个参数即传递一个模型tm,并传递所选中的行号row super(Main,title,model) 调用父类的构造方法,实现模式对话 public void actionPerformed(ActionEvent e) 事件响应方法 表6表模式-更新数据 类名 类的成员属性与方法 说明 TableModel.java Vector rowData,row,column 定义表格所需要的集合(表,行,列) ResultSet rs 定义一个记录集,用于接收从数据库返回来的记录集 SqlConn conn 定义一个用于连接数据库的对象,SqlConn是连接数据库的类 public TableModel(String sql) 构造方法,并传一个SQL语句,实现查询操作 public String getColumnName(int column) 这是一个重写的方法,用于设置表的列名 public int getColumnCount() 得到数据模型记录集的列数 public int getRowCount() 得到数据模型记录集的行数 public Object getValueAt(int arg0, int arg1) 得到数据模型记录集某行某列的值 4、各个模块的实现方法描述 说明:此处只包含了个人完成的模块的实现方法描述 4.1、学生信息查询 学生信息查询窗口,采用了基于管理窗口,即主界面的对话框实现,实现方法如下: 1)定义查询所需要的面板和组件。 2)调用父类的构造方法,实现模式对话。 3)进行学生信息查询。 4.2、修改管理人员信息 修改管理人员信息的界面,通过模式对话,即继承JDialog对话框来实现的,实现方法如下: 1)定义修改学生信息的相关组件。 2)加载数据库,获得选中的那一行的所有信息。 3)把组件添加到窗体。 4)调用父类的构造方法,实现模式对话。 5)调用修改用户权限信息的界面的方法。 6)修改管理人员信息。 7)调用数据库连接,并设置操纵更新的sql语句。 4.3、修改学生信息 修改学生信息的界面,通过模式对话,即继承JDialog对话框来实现,实现方法如下: 1)定义修改学生信息的相关组件。 2)加载数据库,获得选中的那一行的所有信息。 3)把组件添加到窗体。 4)调用父类的构造方法,实现模式对话。 5)调用修改学生信息的界面的方法。 6)修改学生信息。 7)完成相应功能。 4.4、更新数据 这是一个表模型,用于数据更新,实现方法如下: 1)定义表格所需要的集合。 2)定义一个记录集,用于接收从数据库返回来的记录集。 3)定义一个用于连接数据库的对象。 4)设置表格的列名。 5)创建表的记录集。 6)调用数据库连接。 7)设置表的列名,并得到表的列数和行数。 8)得到某行某列的值。 5、测试数据及期望结果 5.1、学生信息查询数据测试及期望结果 数据测试及期望结果如下图: 图7为学生登录后的最初界面; 图8为学生查看所有信息界面; 图9为全部学生的信息记录(此处同时运用到了TableModel类); 图10则是实现了此处的查询功能,测试数据为: 姓名:肖立本 期望结果将显示以下数据: 学号:904325 姓名:肖立本 性别:男 年龄:23 出生地:安徽 专业:信息管理 班级:9040303 总学分:542.5 图7 学生信息管理系统 图8 学生信息管理系统-显示记录 图9 学生信息管理系统-显示所有信息 图10 学生信息管理系统-学生信息查询 5.2、修改管理人员数据测试及期望结果 数据测试及期望结果如下图: 图11将显示出所有管理人员信息。此处测试的数据为: 账号1:admin 密码1:admin 职位1:班委 账号2:user 密码2:user 职位2:普通学生 图12是弹出的修改密码窗口。此处可将密码admin修改为其它值。 图11 显示所有管理人员信息 图12 修改管理人员信息窗口 5.3、修改学生信息数据测试及期望结果 数据测试及期望结果如下图: 图13为全部学生的信息记录(此处同时运用到了TableModel类); 图14是弹出的修改学生信息窗口: 测试数据:姓名:杨明辉 期望结果:可修改姓名、性别、年龄、出生地、专业、班级和总学分。 图13 学生信息管理系统-显示所有信息 图14 修改学生信息窗口 三、系统测试 1、系统启动界面 图15 系统启动界面 2、用户登录界面 图16 用户登录界面 3、班委(管理员)界面,即具有完全权限的用户后台界面 图17 管理员界面 4、班委(管理员)界面子菜单项显示 图18 管理员界面子菜单-系统界面 图19 管理员界面子菜单-学生管理界面 图20 管理员界面子菜单-系统设置界面 5、学生信息查询界面 图21 学生信息查询 6、学生信息查询结果显示 图22 学生信息查询显示 7、添加学生信息界面 在没有输入学号或者姓名,以及某一项时,会弹出一个对话框进行提示,如没有输入学号时: 图23 添加学生信息 8、修改学生信息界面(学号是主键,灰色显示,即不可更改) 图24 修改学生信息 9、显示所有学生信息 图25 显示所有信息 10、当没有选中一行的时候,不能修改和删除,并弹出提示警告框 图26 修改和删除警告框图 11、删除文件时的确认对话框(点击确认时会删除,点击取消,则返回主界面) 图27 删除学生确认对话框 12、显示所有登陆用户信息 图28 显示登录用户信息示意图 13、修改用户登陆密码,选中某个用户进行修改 图29 修改用户登录密码界面示意图 14、关闭用户记录,即不显示所有用户信息 图30 关闭用户记录示意图 15、关闭学生记录 图31 关闭学生记录示意图 16、退出系统确认对话框 只有确认时才会退出系统,否则返加主界面 图32 退出系统 17、普通学生登陆后的界面(即不能对学生信息进行添加,修改和删除以及用户 密码修改,对应的这几项灰色显示,不可点击) 图33 学生登录界面(1) 图34 学生登录界面(2) 四、心得体会和总结 张星宇:这次课程设计使我对web系统开发有了进一步认识,同时加深了课堂上所学到的知识。在课程设计这一段时间,使我收获了很多在课上无法学习到的知识,尤其是需求分析和eclipse熟练的使用。因为这一部分知识的不熟练,在程序设计过程中遇到了不少困难,通过小组大家一起改写、调试,将这些困难都解决了。 张鑫瑀:通过这次课程设计发现这其中需要的很多知识我们没有接触过,上网查找资料的时候发现我们以往所学到的仅仅是皮毛,还有很多需要我们掌握的东西我们根本不知道同时也发现有些已经学过的东西我们没有理解到位,不能灵活运用于大脑,不能很好的用来解决问题,这需要自己不断的大量的实践,通过不断的理解,不断地发现问题,思考问题,进而解决问题。 樊杨森:掌握使用前台程序设计技术VC++和Sql Server 结合设计C/S结构的管理信息系统。综合练习了Sql Server的使用和数据库得管理技术。综合熟悉并练习了SQL语言在编程中的使用。认识系统,取得系统需求分析,更重要的是在编程 方面提高了实现目标代码得能力及调试代码得能力。 康思成: 通过本次课程设计,我觉得不管做什么,始终都要相信自己。不要畏惧,不要怕遇到困难,什么都要去尝试,有些你开始认为很难的事在你尝试之后你可能会发现原来它并没有你你想象的那么难。进一步深入理解数据库设计的整个过程,该学生信息管理系统的需求分析、数据库概念结构设计有关内容等。同时提高了我的编程能力。 邓琦:在这个过程中我将深刻理解所学知识,同时也可以学到不少很实用的东西。如果没有自信,没有目标,没有信心就很难把事情做好,当其他人都在迷茫的时候,自己定要坚信目标。 从学习这个专业,到以后从事这方面的工作都需要不断地去学习去实践,这次实践可以给我们最个警钟, 我们面临毕业,面临择业,需要这些实践经验,在困难面前要勇于尝试,这是这次课程设计给我的最大感想! 五、代码 1、功能:这是学生信息查询窗口,采用基于管理窗口,即主界面的对话框实现 package com.View; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import com.Tools.MyFont; public class StuQuery extends JDialog implements ActionListener{ //定义查询所需要的面板和组件 JPanel jp1; JLabel jp1_jl1; JTextField jp1_jtf1; JButton jp1_jb1,jp1_jb2,jp1_jb3; JTable jtb; JScrollPane jsp; TableModel tm; public StuQuery(Frame Main,String title ,boolean model) { //调用父类的构造方法,实现模式对话 super(Main,title,model); jp1=new JPanel(); jp1_jl1=new JLabel(“请输入姓名:“); jp1_jl1.setFont(MyFont.f1); jp1_jtf1=new JTextField(15); jp1_jb1=new JButton(“查 询->“); jp1_jb1.setFont(MyFont.f1); jp1_jb1.addActionListener(this); jp1_jb2=new JButton(“清 除“); jp1_jb2.setFont(MyFont.f1); jp1_jb2.addActionListener(this); jp1_jb3=new JButton(“显示所有记录“); jp1_jb3.setFont(MyFont.f1); jp1_jb3.addActionListener(this); jp1.add(jp1_jl1); jp1.add(jp1_jtf1); jp1.add(jp1_jb1); jp1.add(jp1_jb2); jp1.add(jp1_jb3); jtb=new JTable(); jsp=new JScrollPane(jtb); this.add(jp1,“North“); this.add(jsp,“Center“); this.setSize(600,400); this.setVisible(true); } @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub //如果点击了查询按钮 if(arg0.getSource()==jp1_jb1) { //获取文本框的值 String stuName=jp1_jtf1.getText().trim();//其中trim()是去掉文本框前面可能有的空格,但不能去掉字符串中的空格 String sql=“select * from student where stuName='“+stuName+“'“; //调用模型 tm=new TableModel(sql); jtb.setModel(tm); } else if(arg0.getSource()==jp1_jb2) { jp1_jtf1.setText(““); } else if(arg0.getSource()==jp1_jb3) { tm=new TableModel(null); jtb.setModel(tm); } } } 2、功能:这是一个表模型,用于更新数据 package com.View; import com.SqlConnection.*;//引入数据库连接的包 import java.sql.*; import java.util.*; import javax.swing.table.AbstractTableModel; import com.SqlConnection.SqlConn; public class TableModel extends AbstractTableModel { //定义表格所需要的集合 Vector rowData,row,column; //定义一个记录集,用于接收从数据库返回来的记录集 ResultSet rs; //定义一个用于连接数据库的对象 SqlConn conn; public TableModel(String sql) { if(sql==null) { sql=“select * from student“; } //设置表格的列名 column=new Vector(); column.add(“学号“); column.add(“姓名“); column.add(“性别“); column.add(“年龄“); column.add(“出生地“); column.add(“专业“); column.add(“班级“); column.add(“总学分“); //创建表的记录集 rowData=new Vector(); //调用数据库连接 conn=new SqlConn(); rs=conn.sqlQuery(sql); try { while(rs.next()) { row=new Vector(); row.add(rs.getString(1)); row.add(rs.getString(2)); row.add(rs.getString(3)); row.add(rs.getString(4)); row.add(rs.getString(5)); row.add(rs.getString(6)); row.add(rs.getString(7)); row.add(rs.getString(8)); rowData.add(row); } } catch (Exception e) { e.printStackTrace(); // TODO: handle exception } } @Override //设置表的列名 public String getColumnName(int column) { // TODO Auto-generated method stub return (String)this.column.get(column); } @Override //得到的列数 public int getColumnCount() { // TODO Auto-generated method stub return this.column.size(); } //得到的行数 @Override public int getRowCount() { // TODO Auto-generated method stub return this.rowData.size(); } @Override //得到某行某列的值 public Object getValueAt(int arg0, int arg1) { // TODO Auto-generated method stub return ((Vector)this.rowData.get(arg0)).get(arg1); } } 3、 功能:这是修改管理人员信息的界面,通过模式对话(即继承JDialog对话框)来实现 package com.View; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import com.SqlConnection.SqlConn; import com.Tools.MyFont; public class UpdateLogin extends JDialog implements ActionListener { //定义修改学生信息的相关组件 JLabel jl1,jl2,jl3; JTextField jtf1,jtf2,jtf3; JButton jb1,jb2,jb3; //这是修改账户信息权限的界面函数的封装 public void upView() { //加载数据库,获得选中的那一行的所有信息 jl1=new JLabel(“账 号:“); //因为账号是主键,设置文本框不可编辑的同时,一般也设置标签灰色显示,以区别其他标签 jl1.setEnabled(false); jl1.setBounds(20, 20, 60, 25); jl1.setFont(MyFont.f1); jl2=new JLabel(“密 码:“); jl2.setFont(MyFont.f1); jl2.setBounds(250, 20, 60, 25); jl3=new JLabel(“职 位:“); jl3.setEnabled(false); jl3.setFont(MyFont.f1); jl3.setBounds(20, 60, 60, 25); jtf1=new JTextField(20); //由于账号是主键,因此不能修改,即设置障碍曙jtf1不可编辑 jtf1.setEnabled(false); jtf1.setBounds(70, 20, 130, 25); jtf2=new JTextField(20); jtf2.setBounds(300, 20, 130, 25); jtf3=new JTextField(20); jtf3.setEnabled(false); jtf3.setBounds(70, 60, 130, 25); jb1=new JButton(“修 改“); jb1.setFont(MyFont.f1); jb1.setBounds(100, 100, 80, 25); jb1.addActionListener(this); jb2=new JButton(“取 消“); jb2.setFont(MyFont.f1); jb2.setBounds(280, 100, 80, 25); jb2.addActionListener(this); jb3=new JButton(“清 除“); jb3.setFont(MyFont.f1); jb3.setBounds(190,100,80,25); jb3.addActionListener(this); this.setLayout(null); //把组件添加到窗体 this.add(jl1); this.add(jtf1); this.add(jl2); this.add(jtf2); this.add(jl3); this.add(jtf3); this.add(jb1); this.add(jb2); this.add(jb3); } //因为要修改信息,那么必须要获得所选中的那一行的所有信息,把它们添加到文本框作为默认值,因此构造方法还应添加一个参数即传递一个模型tm,并传递所选中的行号row public UpdateLogin(Frame Main,String title,PurViewModel pvm,int rowNo,boolean model) { //调用父类的构造方法,实现模式对话 super(Main,title,model); //调用修改用户权限信息的界面的方法 this.upView(); //先从表模型中获取所选中的那一行数据 String userId=(String)pvm.getValueAt(rowNo, 0); System.out.println(“userId=“+userId); String password=(String)pvm.getValueAt(rowNo, 1); String position=(String)pvm.getValueAt(rowNo, 2); //设置广本框的值 jtf1.setText(userId); jtf2.setText(password); jtf3.setText(position); //设置窗体的属性 this.setSize(465,170); this.setVisible(true); this.setResizable(false); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub //当点击了修改按钮 if(e.getSource()==jb1) { //获取文本框的信息 String userId=jtf1.getText().trim(); String password=jtf2.getText().trim(); String position=jtf3.getText().trim(); //调用数据库连接 //设置操纵更新的sql语句 String sql=“update login set password='“+password+“',position='“+position+“'where userId='“+userId+“'“; SqlConn sqlconn=new SqlConn(); sqlconn.sqlUpdate(sql); //关闭交资源 sqlconn.closeSqlConn(); //关闭与数据库连接的资源后,再关闭对话框,否则数据不能自动在表中更新显示出来 this.dispose(); } //如果点击了取消按钮,则关闭模式对话框 else if(e.getSource()==jb2) { this.dispose(); } //如果点击了清除按钮,则清除所有的广本框的内容,除了学号 else if(e.getSource()==jb3) { //由于账号是主键,则不能清空! jtf2.setText(““); } } } 4、功能:这是修改学生信息的界面,通过模式对话(即继承JDialog对话框)来实现 package com.View; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import com.SqlConnection.SqlConn; import com.Tools.MyFont; public class UpdateStu extends JDialog implements ActionListener { //定义修改学生信息的相关组件 JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7,jl8; JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7,jtf8; JButton jb1,jb2,jb3; int stuAge=0; Double stuSourse=0.0; //这是修改学生信息的界面函数的封装 public void upView() { //加载数据库,获得选中的那一行的所有信息 jl1=new JLabel(“学 号:“); //因为学号是主键,设置文本框不可编辑的同时,一般也设置标签灰色显示,以区别其他标签 jl1.setEnabled(false); jl1.setBounds(20, 20, 60, 25); jl1.setFont(MyFont.f1); jl2=new JLabel(“姓 名:“); jl2.setFont(MyFont.f1); jl2.setBounds(250, 20, 60, 25); jl3=new JLabel(“性 别:“); jl3.setFont(MyFont.f1); jl3.setBounds(20, 60, 60, 25); jl4=new JLabel(“年 龄:“); jl4.setFont(MyFont.f1); jl4.setBounds(250, 60, 60, 25); jl5=new JLabel(“出生地:“); jl5.setFont(MyFont.f1); jl5.setBounds(14, 100, 60, 25); jl6=new JLabel(“专 业:“); jl6.setFont(MyFont.f1); jl6.setBounds(20, 140, 60, 25); jl7=new JLabel(“班 级:“); jl7.setFont(MyFont.f1); jl7.setBounds(20, 180, 60, 25); jl8=new JLabel(“总学分:“); jl8.setFont(MyFont.f1); jl8.setBounds(240, 180, 60, 25); jtf1=new JTextField(20); //由于学号是主键,因此不能修改,即设置障碍曙jtf1不可编辑 jtf1.setEnabled(false); jtf1.setBounds(70, 20, 130, 25); jtf1.setBorder(BorderFactory.createLoweredBevelBorder()); jtf2=new JTextField(20); jtf2.setBounds(300, 20, 130, 25); jtf2.setBorder(BorderFactory.createLoweredBevelBorder()); jtf3=new JTextField(10); jtf3.setBounds(70, 60, 60, 25); jtf3.setBorder(BorderFactory.createLoweredBevelBorder()); jtf4=new JTextField(10); jtf4.setBounds(300, 60, 60, 25); jtf4.setBorder(BorderFactory.createLoweredBevelBorder()); jtf5=new JTextField(30); jtf5.setBounds(70, 100, 360, 25); jtf5.setBorder(BorderFactory.createLoweredBevelBorder()); jtf6=new JTextField(20); jtf6.setBounds(70, 140, 290, 25); jtf6.setBorder(BorderFactory.createLoweredBevelBorder()); jtf7=new JTextField(20); jtf7.setBounds(70, 180, 130, 25); jtf7.setBorder(BorderFactory.createLoweredBevelBorder()); jtf8=new JTextField(20); jtf8.setBounds(300, 180, 130, 25); jtf8.setBorder(BorderFactory.createLoweredBevelBorder()); jb1=new JButton(“修 改“); jb1.setFont(MyFont.f1); jb1.setBounds(100, 220, 80, 25); jb1.addActionListener(this); jb2=new JButton(“取 消“); jb2.setFont(MyFont.f1); jb2.setBounds(280, 220, 80, 25); jb2.addActionListener(this); jb3=new JButton(“清 除“); jb3.setFont(MyFont.f1); jb3.setBounds(190,220,80,25); jb3.addActionListener(this); this.setLayout(null); //把组件添加到窗体 this.add(jl1); this.add(jtf1); this.add(jl2); this.add(jtf2); this.add(jl3); this.add(jtf3); this.add(jl4); this.add(jtf4); this.add(jl5); this.add(jtf5); this.add(jl6); this.add(jtf6); this.add(jl7); this.add(jtf7); this.add(jl8); this.add(jtf8); this.add(jb1); this.add(jb2); this.add(jb3); } //因为要修改信息,那么必须要获得所选中的那一行的所有信息,把它们添加到文本框作为默认值,因此构造方法还应添加一个参数即传递一个模型tm,并传递所选中的行号row public UpdateStu(Frame Main,String title,TableModel tm,int rowNo,boolean model) { //调用父类的构造方法,实现模式对话 super(Main,title,model); //调用修改学生信息的界面的方法 this.upView(); //先从表模型中获取所选中的那一行数据 String stuId=(String)tm.getValueAt(rowNo, 0); System.out.println(“sutId=“+stuId); String stuName=(String)tm.getValueAt(rowNo, 1); String stuSex=(String)tm.getValueAt(rowNo, 2); String stuAge=(String)tm.getValueAt(rowNo, 3); String stuJg=(String)tm.getValueAt(rowNo, 4); String stuZy=(String)tm.getValueAt(rowNo, 5); String classId=(String)tm.getValueAt(rowNo, 6); String stuSourse=(String)tm.getValueAt(rowNo, 7); //设置文本框的默认值 jtf1.setText(stuId); jtf2.setText(stuName); jtf3.setText(stuSex); jtf4.setText(stuAge); jtf5.setText(stuJg); jtf6.setText(stuZy); jtf7.setText(classId); jtf8.setText(stuSourse); //设置窗体的属性 this.setSize(465,300); this.getContentPane().setBackground(Color.LIGHT_GRAY); this.setVisible(true); this.setResizable(false); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub //当点击了修改按钮 if(e.getSource()==jb1) { //获取文本框的信息 String stuId=jtf1.getText().trim(); String stuName=jtf2.getText().trim(); if(stuName.equals(““)) { JOptionPane.showMessageDialog(this, “请输入姓名!“); return;//返回到输入界面,如果没有return语句,则会回到主界面 } String stuSex=jtf3.getText().trim(); if(stuSex.equals(““)) { JOptionPane.showMessageDialog(this, “请输入性别!“); return;//返回到输入界面,如果没有return语句,则会回到主界面 } ////对于年龄,则需要进行两个判断,一个是不能为空,另一个必须是int型,下面用异常来判断输入的学生年龄是否是整型数 //******************************************// try { stuAge=Integer.parseInt(jtf4.getText().trim());//把从文本框取得的字符串转换成整型,如果抛异常,则输入的不是整形数 if(stuAge<1) { JOptionPane.showMessageDialog(this, “年龄必须大于或等于1!“); return; } } catch (Exception e2) { //提示输入的不是整数 JOptionPane.showMessageDialog(this, “请输入一个整数的年龄!“); //如果抛异常,则返回到添加窗口,后面终止执行******************************// return; // TODO: handle exception } //*******************************************************************// String stuJg=jtf5.getText().trim(); if(stuJg.equals(““)) { JOptionPane.showMessageDialog(this, “请输入出生地!“); return;//返回到输入界面,如果没有return语句,则会回到主界面 } String stuZy=jtf6.getText().trim(); if(stuZy.equals(““)) 本文档由香当网(https://www.xiangdang.net)用户上传

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 3 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    Web系统开发课程设计报告

    录入学生基本信息的功能学生基本信息主要包括:学号、姓名、年龄、出生地、专业、班级总学分,在插入时,如果数据库已经存在该学号,则不能再插入该学号。1.2、修改学生基本信息的功能

    4周前    325    0

    软件系统开发合同

    根据《中华人民共和国合同法》及相关法律、法规的规定,甲、乙双方本着自愿、公平、合法、诚信的原则, 就甲方委托乙方对长春市民政救助平台、医疗救助系统、信息核对系统软件进行升级改造的相关事宜,签订本...

    9个月前    1736    0
    软件   开发   合同  

    日期和时间课程设计报告

    日期和时间课程设计报告 1. 功能 1.1课程设计题目功能:定义了日期类、时间类和日期时间综合类,重载了+、-、++、--、=、>=、<=、==、!=等运算符,可以设置时间、日期,比较时间和日...

    1年前    505    0

    单片机课程设计报告

    1 方案设计与论证1.1 硬件总体设计设计并制作一个基于单片机的数字电压表的电路其结构框图如图 1-1 所示: 图1-1 硬件结构框图(1)单片机最小系统电路部分 (2)数码管显示部分(3) ...

    10个月前    566    0
    报告  

    异地销售管理系统开发项目可行性报告

    技术开发项目可行性研究报告     项目名称: 异地销售管理系统开发 项目申报单位(盖章): 技 术 中 心    二〇一一 年 九 月      一、项目摘要 实现对厂外库...

    8年前    10691    0

    物流系统课程设计报告书

     XX大学 物流系统课程设计报告书 学院名称 : 经济与学院 学生姓名 : 专业名称 : 物流管理 班级 : 物流班 时间 ...

    1年前    678    0

    多媒体课程设计小组小结报告

    计算机多媒体基础小结报告 姓名:徐缘(12122261)吴登明(12122262)徐亮(12122264)周天扬(12122265)  课程设计分工: 小结报告正文: 本次的大作业是...

    7年前    10374    0

    Visual FoxPro 课程设计实验报告

     中国最大的商务办公文档下载基地: http://www.word98.com/ ╔---------------------------------------------...

    7年前    11080    0

    实验报告-电力电子课程设计

    掌握晶闸管仿真模型模块各参数的含义。理解晶闸管的特性。

    5个月前    271    0

    《化工原理课程设计》报告换热器的设计

     《化工原理课程设计》报告 换热器的设计 目录 概述 1...

    1年前    580    0

    Web站点的 Win服务器安全解决方案

    Web站点的 Win服务器安全解决方案   用NT(2000)建立的Web站点在所有的网站中占了很大一部分比例,但NT的安全问题也一直比较突出,使得一些每个基于NT的网站都有一种如履薄冰的感...

    1年前    444    0

    夹具课程设计说明书课程设计

     课程设计说明书 课 程 名 称 机械制造装配设计 设 计 课 程 钻床夹具设计 ...

    1年前    488    0

    《调速系统课程设计》课程设计教学指导方案

     调速系统 课程设计 教学指导方案 双闭环直流电机调速系统设计 设计题目: 电气信息学院...

    1年前    536    0

    首饰珠宝专业网上商店系统开发方案

    首饰珠宝专业网上商店系统开发方案 一.系统概述   专业网上商店系统是开发的一套集网站管理、会员管理、预付款帐户管理、广告管理、商品管理、库存管理、销售分析及在线购物为一体的专业...

    10年前    7381    0

    IT企业系统开发部项目考核管理办法

     系统开发部项目考核管理办法 第一条 目的 为规范公司的项目开发管理,鼓励项目人员为公司的项目和产品作出更大贡献,特制定本管理办法。 第二条 适用范围 本办法适用于系统开发部的项...

    7年前    15879    0
    考核   个人   工作   实施   计划  

    企业人事管理系统开发研究

    王宇:企业人事管理系统开发 1管理信息系统概述 1.1管理信息系统简介 管理信息系统(Management Information System, MIS)是一门综合了管理、信息、行为、...

    7年前    9398    0

    井巷工程课程设计

    年产90万吨矿井的第一水平运输大巷,一股眼务年限在20年以上,采用 600mm轨距双轨运输的大巷,其净宽在3m以上,又穿过中等稳定的岩层,故选用钢筋砂浆锚秆与喷射混凝土支护,半圆拱形断面。

    1年前    458    0
    课程   设计   方案   工程   井巷  

    2019课程设计总结

    2019课程设计总结  课程设计总结(一):  为期10天的课程设计将要结束了。在这两周的学习中,我学到了很多,也找到了自己身上的不足。感受良多,获益匪浅。  这10天中,我们小组分工合作、齐...

    4个月前    330    0

    矿山电工课程设计

    目录 绪论 第一章 原始资料 第二章 采区负荷计算 第三章 确定采区供电系统 第四章 进出线截面的选择 第五章 短路电流计算 第六章 高、低压开关选择及校验 第七...

    1年前    388    0

    C课程设计题目及要求

    课程设计题目 选题一: 学生信息管理系统设计 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。(测试数据不少5个人,可以用本班同学的具体数据为背景) 软件由下...

    3年前    2680    0