学生信息管理系统实验报告原版文档.pdf
数据库原理及其应用教程 课程设计 学生信息管理系统 学生姓名 学 号 所在专业 所在班级 指导教师 提交时间 评阅情况 成 绩 数据库课程设计 1 目录 摘 要第一章 绪论11 研究背景.12 需求分析.1.2.1 功能需求.1.2.2 数据需求.第二章 总体设计21 软件结构设计.2.2 系统模块设计.第三章 数据库设计31 概念结构设计.3.2 逻辑结构设计.3.3 SQL 语句实现.第四章 系统模块详细设计.4.1 登录界面.4.2 相关功能界面.4.2.1 学生基本信息编辑界面.4.2.2 学生信息查询界面统计.4.2.3 个人成绩查询界面设计.4.2.4 班级成绩查询界面设计.第五章 课程设计总结.附录 摘 要 该课程设计是利用 NetBeans 和 SQL Server 等工具完成学生信息管理系统的开发,它主要包括学生基本信息管理、家庭信息管理、奖惩信息管理和成绩信息管理等模块,系统除了可以完成对相关信息的录入、修改及删除等操作之外,还数据库课程设计 2 能够对学生信息和成绩信息进行查询、统计,以便于管理人员一目了然地掌握学生基本情况。学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。作为计算机应用的一部分,使用计算机对学生信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生信息管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。第一章 绪论 1.1 研究背景 学生信息管理系统是学校管理的重要工具,是学校不可或缺的部分。随着在校大学生人数的不断增加,教务系统的数量也不断的上涨,。学校工作繁杂、资料众多,人工管理信息的难度也越来越大,显然是不能满足实际的需要,效率也是很低的。并且这种传统的方式存在着很多的弊端,如:保密性差、查询不便、效率低,很难维护和更新等。然而,本系统针对以上缺点能够极大地提高学生信息管理的效率,也是科学化、正规化的管理,与世界接轨的重要条件。所以如何自动高效地管理信息是这些年来许多人所研究的。1.2 需求分析 需求分析的任务是通过详细调查用户的各种需求,在此基础之上确定新系统的功能。新系统还必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。数据库课程设计 3 1.2.1 功能需求 经过对用户实际管理工作的调研以及其对信息的关注度,最终确定本系统主要需要完成以下功能:1学生基本信息管理功能:完成对学生基本资料信息进行管理。2学生家庭信息管理功能:完成对学生家庭信息进行管理。3学生奖惩信息管理功能:完成对学生每学期受到的奖励或惩罚信息进行管理。4学生成绩信息管理功能:完成对学生学习的课程以及其成绩进行管理。5信息查询统计:按姓名或学号对某个学生的基本信息进行查询;按学号或姓名、学期对某个学生在该学期所有成绩的查询;按班级、课程名对某个班级某门课程的查询;按班级、课程名和满足成绩条件对学生成绩进行筛选查询;按班级和课程名并且满足某个成绩条件的学生成绩进行统计,包括满足条件的学生人数,总分,平均分,最高分和最低分。1.2.2 数据需求 进行数据的需求分析时,不但要考虑到软件系统当前要实现的功能,更要注重软件的可维护性和扩展性,即考虑到以后可能增长的需求。根据用户的需求以及用户对信息的关注程度,得到系统对数据的需求描述如下:1记录学生的基本信息,包括学号、姓名、班级、性别、年龄、民族、政治面貌、电话、E-mail、QQ 号码等。2记录学生家庭的基本信息,包括家庭编号、家庭住址、邮编、联系电话、家长姓名等。3记录学生的奖惩情况,包括奖惩编号、奖惩原因、奖惩内容、奖惩学期等。4记录学生选修的课程情况,包括课程号、课程名称、课程学分、授课学时等。5记录学生的成绩信息,包括学号、课程号、学期和成绩等。数据库课程设计 4 6记录用户的信息,包括用户编号,用户名,密码和用户权限等。第二章 总体设计 2.1 软件结构设计 本系统是对学生信息、家庭信息、奖惩信息、课程信息和成绩信息进行管理,主要包括添加、修改和删除学生的基本信息、家庭信息、奖惩信息、课程信息和成绩信息,对基本信息、成绩信息进行查询和统计操作,从而实现学生管理的自动化与计算机化。为了方便操作,我们将系统主要划分为四个模块:1系统管理模块:实现用户的登录及整个系统主窗体的管理。2基本信息管理模块:实现学生基本信息、家庭信息、奖惩信息的添加、修改、删除等操作。3成绩信息管理模块:实现课程信息和成绩信息的添加、修改、删除等操作。4查询统计模块:实现学生个人信息的查询及满足条件的班级的学生成绩的查询统计。2.2 系统模块设计 根据需求分析的结果,系统总体结构图如图2-1 所示。数据库课程设计 5 图 2-1 系统类结构图 第三章 数据库设计 在信息系统中,后台数据存储的地位相当重要,数据库的设计是程序开发和设计的关键性工作。设计合理的数据库能提高数据存储的效率,降低程序开发的难度,减缩软件开发的周期。通过数据的需求分析得到的结果画出数据库 E-R 图,StuOneScoreQuery.java 个人成绩查询 学生信息管理系统 系统管理 学生信息管理 成绩管理 查询统计 StudentIMS.java 主窗体 DBClass.java 数据处理模块 UserLogin.java 用户登录 StudentEdit.java 学生基本信息编辑 FamilyEdit.java 家庭信息编辑 RPEdit.java 奖惩信息编辑 StudentQuery.java 学生信息查询 ClassScoreQuery.java 班级成绩查询 CourseEdit.java 课程信息编辑 ScoreEdit.java 成绩信息编辑 数据库课程设计 6 接着根据 E-R 图创建数据表及其数据对象,最后向数据库中添加数据。这便是我们需要完成的数据库概念结构设计和数据库逻辑结构设计。3.1 概念结构设计 所谓的概念结构设计,即是将需求分析得到的用户需求抽象为信息结构即概念模型的过程。通过概念结构设计最终得到数据库的 E-R 模型,其主要步骤如下:1确定系统中存在的有用实体 根据需求分析,在学生信息管理系统中,需要完成学生基本信息、家庭信息、奖惩信息和成绩信息的管理。我们可以很容易知道本系统中主要涉及学生、家庭、奖惩和课程等四个实体。2确定实体之间联系的类型 实体之间联系主要存在三种,分别是:一对一联系(1:1),一对多联系(1:N)和多对多联系(M:N)。根据需求分析,在学生信息管理系统中一个学生只能拥有一个家庭,一个家庭也只有一个孩子在班级中学习;一个学生可能有一条或多条奖惩信息;一个学生可以选修多门课程,一门课程也可以被多个不同的学生选修等。因此,以上各实体之间存在如下关系:学生:家庭 1:1 学生:奖惩 1:N 学生:课程 M:N 3将各个实体通过联系连接起来,形成简单的E-R 图。在确定了实体及其关系之后,我们就可以将其组合起来形成一个简单的E-R图,如下图所示:图 2-2 简单 E-R 图 接受 学生 家庭 奖惩 课程 拥有 选修 1 1 M N 1 N 数据库课程设计 7 4确定实体与联系的属性及码 学生实体 E-R 图如图 2-3 所示,包括学号、姓名、班级、性别、年龄、民族、政治面貌、电话、E-mail、QQ 号等属性。图 2-3 学生实体 E-R 图 家庭实体 E-R 图如图 2-4 所示,包括家庭编号、家庭住址、邮编、联系电话、家长姓名等。图 2-4 家庭实体 E-R 图 奖惩实体 E-R 图如图 2-5 所示,包括奖惩编号、奖惩原因、奖惩内容、奖惩学期等属性。图 2-5 奖惩实体 E-R 图 课程实体 E-R 图如图 2-6 所示,包括课程号、课程名称、课程学分、授课学姓名 性别 学生 学号 年龄 民族 政治面貌 班级 E-mail QQ 号 电话 奖惩 奖惩编号 奖惩原因 奖惩学期 奖惩内容 家庭 家庭编号 家庭住址 联系电话 家长姓名 邮编 数据库课程设计 8 时等属性。图 2-6 课程实体 E-R 图 作为例子,本章对所有的实体的属性都进行了简化,只有一些必要的属性,有兴趣的学员可以进行进一步丰富其描述。5把实体及联系的属性组合起来,形成完整E-R 图。在确定了实体及其联系的属性和码之后,我们就可以将其组合起来形成一个完整的 E-R 图(为了节省篇幅,在这里只画出了选修联系的属性,其它实体的属性参考图 2-3 至 2-6 各实体的属性即可),如图 2-7 所示:图 2-7 完整 E-R 图 3.2 逻辑结构设计 E-R 图表示的是数据库的概念模型,它独立于任何一种数据模型,独立于任何一种具体的数据库管理系统,因此,需要把上述的概念模型转换为具体的被数据库管理系统所支持的数据模型,这就是数据库的逻辑结构设计。首先,根据完整的 E-R 图,将其转换为相应的关系模式。其基本转换规则如下:1每个实体转换为一个关系模式,实体的属性为关系模式的属性,实体的码为关系模式的码。课程 课程号 课程名称 授课学时 课程学分 学生 家庭 奖惩 课程 拥有 接受 选修 1 1 M N 1 N 成绩 学期 数据库课程设计 9 学生(学号,姓名,班级,性别,年龄,民族,政治面貌,电话,E-mail,QQ 号)家庭(家庭编号,家庭住址,邮编,联系电话,家长姓名)奖惩(奖惩编号,奖惩原因,奖惩内容,奖惩学期)课程(课程号,课程名称,课程学分,授课学时)2一般情况下,1:1 和 1:N 的联系不需要单独转换为关系模式,只需要将 1对应的实体的码放入另一方即可。学生与家庭之间 1:1 的联系只需要将学生的码学号放入家庭即可描述,因此将上面的家庭关系模式修改为:家庭(家庭编号,学号,家庭住址,邮编,联系电话,家长姓名)同样,学生与奖惩之间的 1:N 的联系也只需要将学生的码学号放入奖惩即可描述,因此将上面的奖惩关系模式修改为:奖惩(奖惩编号,学号,奖惩原因,奖惩内容,奖惩学期)3一般情况下,M:N 的联系需要单独转换为一个关系模式,联系的属性作为关系模式的属性,联系两端实体的码的组合作为关系模式的码。因为只有当学生选修了课程之后才可能出现成绩,所以学生与课程之间 M:N的联系就必须单独转换为一个关系模式,其描述如下:选修(学号,课程号,学期,成绩)然后,将转换得到的关系模式根据所使用的数据库管理系统进行具体的描述,包括其类型、大小、约束等信息。学生信息管理系统使用的是SQL Server2000数据库。数据库中各个表的结构描述如表2-6 至 2-11 所示。表 2-6 学生信息表 StudentInfo 字段名 字段说明 数据类型 字段长度 必填字段 主(外)键 sno 学号 varchar 10 是 主键 sname 姓名 varchar 20 是 class 班级 varchar 30 否 sex 性别 char 2 否 age 年龄 smallint 2 否 数据库课程设计 10 nationality 民族 varchar 12 否 zzmm 政治面貌 char 4 否 stu_tel 电话 varchar 20 否 email 电子邮箱 varchar 30 否 qq QQ 号码 varchar 12 否 表 2-7 家庭信息表 FamilyInfo 字段名 字段说明 数据类型 字段长度 必填字段 主(外)键 sno 学号 varchar 10 是 主键,外键 homeaddress 家庭住址 varchar 50 否 postcode 邮编 char 6 否 family_tel 家庭电话 varchar 30 否 pname 家长姓名 varchar 20 否 表 2-8 奖惩信息表 RPInfo 字段名 字段说明 数据类型 字段长度 必填字段 主(外)键 rpno 奖惩编号 int 4 是 主键,自动增加 sno 学号 varchar 10 是 外键 rpreason 奖惩原因 varchar 50 否 rpcontent 奖惩内容 varchar 20 否 rpterm 奖惩学期 smallint 2 否 表 2-9 课程信息表 CourseInfo 字段名 字段说明 数据类型 字段长度 必填字段 主(外)键 cno 课程号 char 4 是 主键 数据库课程设计 11 cname 课程名 varchar 30 是 ccredit 课程学分 smallint 2 否 chours 授课学时 smallint 2 否 表 2-10 成绩信息表 ScoreInfo 字段名 字段说明 数据类型 字段长度 必填字段 主(外)键 sno 学号 varchar 10 是 外键 主键 cno 课程号 char 4 是 外键 sterm 学期 smallint 2 否 grade 成绩 float 8 否 表 2-11 用户登录信息表 UserInfo 字段名 字段说明 数据类型 字段长度 必填字段 主(外)键 userno 用户编号 char 4 是 主键 username 用户名 varchar 20 是 password 密码 varchar 20 否 usertype 用户类型 varchar 10 否 最后,在确定了各个数据表中字段的类型、大小及约束之后,即可在 SQL Server2000数据库管理系统中建立相关数据表结构及其相关的联系。到此为止,数据库的设计就完成了,下面我们就可以直接进入应用程序的设计。3.3 SQL 语句实现 数据表的创建:(1)学生信息表创建:CREATE TABLE StudentInfo(sno VARCHAR(10)PRIMARY KEY,sname VARCHAR(20)NOT NULL,class VARCHAR(30),sex CHAR(2),数据库课程设计 12 age SMALLINT,nationality VARCHAR(12),zzmm CHAR(4),stu_tel VARCHAR(20),email VARCHAR(30),qq VARCHAR(12)(2)家庭信息表创建:CREATE TABLE FamilyInfo(sno varchar(10)primary key,homeaddress varchar(50),postcode char(6),family_tel varchar(30),pname varchar(20),foreign key(sno)references StudentInfo(sno)数据库课程设计 13(3)奖惩信息表创建:CREATE TABLE RPInfo(rpno int identity(1,1)primary key,sno varchar(10)not null,rpreason varchar(50),rpcontent varchar(20),rpterm smallint,foreign key(sno)references StudentInfo(sno)(4)课程信息表创建:CREATE TABLE CourseInfo(cno char(4)primary key,cname varchar(30)not null,ccredit smallint,chours smallint)(5)成绩信息表创建:数据库课程设计 14 CREATE TABLE ScoreInfo(sno varchar(10),cno char(4),sterm smallint,grade float,primary key(sno,cno),foreign key(sno)references StudentInfo(sno),foreign key(cno)references CourseInfo(cno)(6)用户登录信息表创建:CREATE TABLE UserInfo(userno char(4)primary key,username varchar(20)not null,password varchar(20),usertype varchar(10)视图的创建:数据库课程设计 15(1)“stu_f”视图创建:create view stu_f as select StudentInfo.*,homeaddress,postcode,family_tel,pname from StudentInfo,FamilyInfo where StudentInfo.sno=FamilyInfo.sno (太长未完全复制过来)(2)“s_sc_c”视图创建:create view s_sc_c as select ScoreIo,cname,grade,ccredit,StudentInfo.sno,sterm from ScoreInfo,CourseInfo,StudentInfo where StudentInfo.sno=ScoreInfo.sno and CourseIo=ScoreIo (3)“stu_rp”视图创建:create view stu_rp 数据库课程设计 16 as select RPInfo.*,sname,class from StudentInfo,RPInfo where StudentInfo.sno=RPInfo.sno 第四章 系统模块详细设计 4.1 登陆界面。学生信息管理系统运行后先点“系统管理”中的“系统登录”即可看到此界面,输入用户名和密码,验证正确后就可查看“学生信息编辑”、“成绩管理”、“查询统计”权力。输入错误则会弹出提示!数据库课程设计 17 用户名、密码输入正确,登录成功!4.2 相关功能界面 登录成功后,可以对此系统进行学生信息管理、成绩管理、查询统计。4.2.1 学生基本信息编辑界面 可对学生基本信息进行“添加”、“修改”、“删除”、“保存”、“取消”操作。1、点输入相应内容点显示 点“确定”后学生基本信息表中即出现添加那一栏同学的内容:数据库课程设计 18 2、若 要“删 除”选 中 要 删 除 的 那 一 栏 点 击“”“确定”即可,不删除则点“取消”。删除成功显示:3、若要修改学生基本信息,只需选中要修改的那一栏,点击,修改需要修改的内容后点击即修改成功,不需要修改则点。4.2.2 学生信息查询界面设计 在该界面中,用户可以根据学号或姓名来查找某个学生的基本信息,家庭信息和奖惩信息。一个学生对应的基本信息和家庭信息只有一条记录,故可用文本的形式显示出来,而一个学生可以有多条奖惩信息,在这里我们用表格的形式显示出来,该界面如下图所示。数据库课程设计 19 若要查询某位学生的基本信息,只需输入该同学的姓名或学号点即可查询。若输入的姓名或学号不在范围内显示。4.2.3 个人成绩查询界面设计 在该界面中,用户可以根据学生的学号或姓名和学期来查找在该学期该学生所有课程的成绩。界面如下图所示。数据库课程设计 20 查询步骤参照上述“学生基本信息查询”,此处不再多加叙述。4.2.4 班级成绩查询界面设计 在该界面中,主要完成两个功能:一是用户可可以根据班级、课程名和选择成绩的分数条件来查找某个班级某门课程的成绩。二是完成统计功能,包括满足条件的总人数、总分、平均分、最高分、最低分等功能。完成后界面如下图所示。数据库课程设计 21 点击“退出”后,就可以安全退出学生信息管理系统了!第五章 课程设计总结 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.本次课程设计虽然很辛苦,实在是受益匪浅。本来这门课的知识学的就不够扎实,本次课程设计,在设计过程中碰到了很多问题,刚开始要设计的时候,还真不知道从哪里下手但最终在百度、同学和老师的帮助下都得到了解决,让我学会了好多书本上没有的东西,通过本次课程设计我也能将课本上的知识融会贯通,起到了很好的辅助学习的效果,但是我发现我学到的知识比整整一个学期学到的都多。理论和实践的相结合是学习最有效的方法。在设计的过程中发现了自己的不足之数据库课程设计 22 处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在这一学期的学习中,我终于体会到SQL Server 2008功能的功能丰富,表达能力强,使用灵活方便,应用面广。但是在其优势后面必然也隐藏着劣势,那就是对程序员的要求特别高。随着社会的发展,人类需要处理的数据越来越多,对数据管理的要求也越来越重要。软件的发展也从面向程序发展成为面向数据。数据库课程设计 23 附录(代码)由于篇幅有限,所以只附上主要功能的代码:一、以“学生基本信息编辑窗体”为例:1、在主界面中对菜单项“学生信息编辑窗体”中做事件处理,注意,先修改“学生基本信息编辑“菜单项的变量名为“stuEditMenuItem”。private void stuEditMenuItemActionPerformed(java.awt.event.ActionEvent evt)/TODO add your handling code here:处理菜单事件 StudentEdit stu=new StudentEdit();/创建学生基本信息编辑窗体对象 stu.setVisible(true);/设置窗体的可见性 stu.setconn();/该窗体打开后连接数据库 jDesktopPane1.add(stu);/将该窗体添加到桌面容器中 try stu.setSelected(true);/设置窗体可选 catch(PropertyVetoException ex)Logger.getLogger(StuIMSView.class.getName().log(Level.SEVERE,null,ex);这样,当我们单击主界面的“学生基本信息编辑“菜单项就可以弹出学生基本信息编辑界面。2完成打开界面后显示数据库中的数据 首先建立数据库的连接,在 StudentEdit.java 的源代码部分写入:public void setconn()conn=DBClass.DBCon();在 stuEditMenuItemActionPerformed 事件中写入连接数据库的代码:stu.setconn();/该窗体打开后连接数据库 其次在代码部分添加需要用的成员变量,代码如下:private Connection conn;private PreparedStatement pstmt;private ResultSet rst;Boolean flag=false;/用来判断是添加还是修改,false 为添加,true 为修改 编写查询并将结果显示在表格中的方法 outstu(),代码如下:public void outstu(String s)/查询并将结果显示在表格中 try int i=0;pstmt=conn.prepareStatement(s);rst=pstmt.executeQuery();while(ijTable1.getRowCount()/用循环清空表格中的内容,保证删数据库课程设计 24 除数据时刷新内容 i+;int j=0;while(rst.next()jTable1.setValueAt(rst.getString(1),j,0);jTable1.setValueAt(rst.getString(2),j,1);jTable1.setValueAt(rst.getString(3),j,2);jTable1.setValueAt(rst.getString(4),j,3);jTable1.setValueAt(rst.getInt(5),j,4);jTable1.setValueAt(rst.getString(6),j,5);jTable1.setValueAt(rst.getString(7),j,6);jTable1.setValueAt(rst.getString(8),j,7);jTable1.setValueAt(rst.getString(9),j,8);jTable1.setValueAt(rst.getString(10),j,9);j+;pstmt.close();catch(SQLException e)JOptionPane.showMessageDialog(null,JOptionPane.showMessageDialog(null,查 询 失 败!错 误误JOptionPane.ERROR_MESSAGE);添加窗体打开事件的处理代码:private void formComponentShown(java.awt.event.ComponentEvent evt)/TODO add your handling code here:窗体打开时,查询显示所有学生信息 this.flag=false;3处理表格上的鼠标事件 当我们选中表格中的某行数据时,可以在对应的文本框中显示该数据。private void jTable1MouseClicked(java.awt.event.MouseEvent evt)数据库课程设计 25 /TODO add your handling code here:处理表格上的鼠标事件 int i=jTable1.getSelectedRow();/获得鼠标点击的行 /将该行的信息显示在文本框中 jsno.setText(jTable1.getValueAt(i,0).toString();jsname.setText(jTable1.getValueAt(i,1).toString();jclass.setText(jTable1.getValueAt(i,2).toString();jsex.setText(jTable1.getValueAt(i,3).toString();jage.setText(jTable1.getValueAt(i,4).toString();jnationality.setText(jTable1.getValueAt(i,5).toString();jzzmm.setText(jTable1.getValueAt(i,6).toString();jstu_tel.setText(jTable1.getValueAt(i,7).toString();jemail.setText(jTable1.getValueAt(i,8).toString();jqq.setText(jTable1.getValueAt(i,9).toString();4完成学生信息界面中的添加功能 编写添加方法 addstu()。public void addstu()/将数据插入到数据库中 try into StudentInfo(sno,sname,class,sex,age,nationality,zzmm,stu_tel,email,qq)values(?,?,?,?,StudentInfo(sno,sname,class,sex,age,nationality,zzmm,stu_tel,email,qq)values(?,?,?,?,pstmt.setString(1,jsno.getText();pstmt.setString(2,jsname.getText();pstmt.setString(3,jclass.getText();pstmt.setString(4,jsex.getText();pstmt.setInt(5,Integer.parseInt(jage.getText().toString();pstmt.setString(6,jnationality.getText();pstmt.setString(7,jzzmm.getText();pstmt.setString(8,jstu_tel.getText();pstmt.setString(9,jemail.getText();pstmt.setString(10,jqq.getText();pstmt.execute();pstmt.close();数据库课程设计 26 JOptionPane.showMessageDialog(null,JOptionPane.showMessageDialog(null,添 加 成 功!提 示示JOptionPane.INFORMATION_MESSAGE);catch(SQLException ex)添加学生信息失败!添加学生信息失败!错误错误 添加按钮的事件处理,此时保存按钮可用,删除和修改按钮不可用。private void addButtonActionPerformed(java.awt.event.ActionEvent evt)/TODO add your handling code here:添加学生信息,清空所有文本框 jsno.setEditable(true);saveButton.setEnabled(true);/启用保存按钮 alterButton.setEnabled(false);/在添加信息时,不能使用修改和删除按钮 deleteButton.setEnabled(false);5完成保存按钮事件 private void saveButtonActionPerformed(java.awt.event.ActionEvent evt)/TODO add your handling code here:保存(添加/修改的)信息,将输入的信息插入到数据库中 if(flag)this.updatestu();else this.addstu();saveButton.setEnabled(false);/设置保存按钮不可以用 addButton.setEnabled(true);alterButton.setEnabled(true);deleteButton.setEnabled(true);this.flag=false;数据库课程设计 27 6完成学生信息界面中的修改功能 编写方法 updatestu():public void updatestu()/修改学生信息,不允许修改学号 try StudentInfo set sname=?,class=?,sex=?,age=?,nationality=?,zzmm=?,stu_tel=?,email=?,qq=?where where pstmt.setString(1,jsname.getText();pstmt.setString(2,jclass.getText();pstmt.setString(3,jsex.getText();pstmt.setInt(4,Integer.parseInt(jage.getText().toString();pstmt.setString(5,jnationality.getText();pstmt.setString(6,jzzmm.getText();pstmt.setString(7,jstu_tel.getText();pstmt.setString(8,jemail.getText();pstmt.setString(9,jqq.getText();pstmt.setString(10,jsno.getText();pstmt.execute();pstmt.close();JOptionPane.showMessageDialog(null,JOptionPane.showMessageDialog(null,修 改 成 功!提 示示JOptionPane.INFORMATION_MESSAGE);catch(SQLException ex)修改学生信息失败!修改学生信息失败!错误错误 修改按钮的事件处理:private void alterButtonActionPerformed(java.awt.event.ActionEvent evt)/TODO add your handling code here:准备修改当前记录 this.flag=true;saveButton.setEnabled(true);/启用保存按钮 addButton.setEnabled(false);/在修改信息时,不能使用添加和删除按钮 deleteButton.setEnabled(false);7完成学生信息界面中的删除功能 编写方法 deletestu()public void deletestu()/删除学生信息 try pstmt=from StudentInfo where 数据库课程设计 28 28 pstmt.setString(1,jsno.getText();pstmt.executeUpdate();JOptionPane.showMessageDialog(null,JOptionPane.showMessageDialog(null,删 除 成 功!提 示示JOptionPane.INFORMATION_MESSAGE);pstmt.close();catch(SQLException ex)删除学生信息失败!删除学生信息失败!错误错误 删除按钮的事件处理 private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt)/TODO add your handling code here:删除学生信息 if(JOptionPane.showConfirmDialog(null,if(JOptionPane.showConfirmDialog(null,你确定要删除该学生信息吗?你确定要删除该学生信息吗?你确定要删除该学生信息吗?提示示JOptionPane.OK_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE)=JOptionPane.OK_OPTION)this.deletestu();8取消按钮事件 private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt)/TODO add your handling code here:取消按钮,用户取消添加或者修改,将所有按钮恢复到初始状态 saveButton.setEnabled(false);addButton.setEnabled(true);alterButton.setEnabled(true);deleteButton.setEnabled(true);这样,学生基本信息的编辑窗体就实现了 二、“学生基本信息查询”界面查询按钮事件关键代码如下:private void queryButtonActionPerformed(java.awt.event.ActionEvent evt)/TODO add your handling code here:查询学生的信息 /清空表格中的内容,保证下一条数据的正确显示 数据库课程设计 29 try int i=0;while(ijTable1.getRowCount()/用循环清空表格中的内容,保证删除数据时刷新内容 i+;/pstmt1 连接完成学生基本信息和家庭信息的查询 ps