托管培训中心信息管理系统课设报告.docx
- 文档编号:6281285
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:14
- 大小:287.68KB
托管培训中心信息管理系统课设报告.docx
《托管培训中心信息管理系统课设报告.docx》由会员分享,可在线阅读,更多相关《托管培训中心信息管理系统课设报告.docx(14页珍藏版)》请在冰豆网上搜索。
托管培训中心信息管理系统课设报告
一.实验题目:
托管培训中心信息管理系统
二.实验目的
《数据库与信息管理课程设计》是软件工程专业集中实践性环节之一,是计算机学科基础的一门重要的实践教学课程,是学习完《数据库概论》课程后进行的一次全面的综合练习。
其目的在于加深对数据库基础理论和基本知识的理解,掌握使用数据库进行软件设计的基本方法,提高运用数据库解决实际问题的能力,最终实现对于给定的应用要求,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。
三.实验要求
1.处理学生报名
根据学生报名的科目查询科目信息,如果该科目已经满员,则提醒学员,如果该科目没有满员,则让用户选择相应的教师,并报名登记,交纳学费。
2.维护科目
开设不同的科目,同一门课程根据教师的知名度,向学生收取不同的费用。
3.安排教室及上课日程
根据教师及学生信息确定某个科目的上课地点及时间,并形成学生的课表。
4.管理帐目
收取学费并入帐,催交费用等。
四.需求分析
托管培训中心信息管理系统,有两类用户:
一是培训中心的管理者,可添加、删除、修改、查询学生信息、课程信息、账目信息等,是托管中心信息管理系统的最高权力者。
添加、删除、修改时,若遇到类型不匹配或破坏了数据库完整性,应弹出相应的提示对话框,查询时,应尽量使信息一目了然;
另一个用户则是学生用户,学生可查询课程信息、教师信息、个人课表和个人账目信息,可选课并自助交费。
选课时,让学生选择课程和教师,若该课程人数已满,则提示报名人数已满,若该生已经选择该课程,也提示您已经选择了该课程,力争使软件的操作性友好。
为了便于管理,管理员编号为以“00”开头的四位数字,教师编号为以“01”开头的四位数字,学生编号为以“02”开头的四位数字,这样在登陆时,系统就可以通过判断编号类型,调用不用的界面。
当有学生注册或添加教师或课程时,系统将自动生成学生号、教师号、课程号,为了防止删除时产生编号的缺失,系统在分配编号时,将分配给新数据当前未使用的最小编号,填补之前删除的数据的空白,这样就能保证编号的连续性。
数据字典:
1.管理员表
表名:
Manager
字段名
类型
备注
Mno
Varchar
管理员编号
Mname
Varchar
管理员姓名
Mpassword
Varchar
登陆密码
2.学生表
表名:
Student
字段名
类型
备注
Sno
Varchar
学生编号
Sname
Varchar
学生姓名
Spassword
Varchar
登陆密码
3.教师表
表名:
Teacher
字段名
类型
备注
Tno
Varchar
教师编号
Tname
Varchar
教师姓名
Tlevel
Varchar
教师等级
Tcharacter
Varchar
教师特点
4.课程表
表名:
Course
字段名
类型
备注
Cno
Varchar
课程号
Cname
Varchar
课程名
Tno
Varchar
教师号
Cneed_Student
Int
招生人数
Class_Time
Varchar
学时
Ccycle
Varchar
课程周期
Caddr
Varchar
上课地点
Camount
int
学费
5.账目表
表名:
SC_Amount
字段名
类型
备注
Cno
Varchar
课程号
Sno
Varchar
学生号
My_Amount
Int
交费金额
SC_Amount_Time
Date
交费时间
五.实验设计
1.概要结构设计
2.逻辑结构设计
管理员表:
Manager(Mno,Mname,Mpassword)3NF
学生表:
Student(Sno,Sname,Spassword)3NF
教师表:
Teacher(Tno,Tname,Tlevel,Tcharacter)3NF
课程表:
Course(Cno,Cname,Tno,Cneed_Stu,Cclass_time,Ccycle,Caddr,Camount)3NF
Tno是参照Teacher表的外码
账目表:
SC_Amount(Cno,Sno,My_Amount,SC_Amount_Time)3NF
Cno是参照Course表的外码
Sno是参照Student表的外码
3.物理结构设计
管理员表:
CREATETABLEManager
(MnoVarchar(5)primarykey,
MnameVarchar(20)notnull,
MpasswordVarchar(20)notnull
);
学生表:
CREATETABLEStudent
(SnoVarchar(5)primarykey,
SnameVarchar(20)notnull,
SpasswordVarchar(20)notnull
);
教师表:
CREATETABLETeacher
(TnoVarchar(5)primarykeynotnull,
TnameVarchar(20)notnull,
TlevelVarchar(10),
TcharacterVarchar(100)
);
课程表:
CREATETABLECourse
(CnoVarchar(5)PRIMARYKEYnotnull,
CnameVarchar(20)notnull,
TnoVarchar(5),
Cneed_Stuint,
Cclass_timeVarchar(10),
CcycleVarchar(10),
CaddrVarchar(20),
Camountint,
FOREIGNKEY(Tno)REFERENCESTeacher(Tno)
ONDELETECASCADE
);
账目表:
CREATETABLESC_Amount
(CnoVarchar(5),
SnoVarchar(5),
FOREIGNKEY(Cno)REFERENCESCourse(Cno)
ONDELETECASCADE,
FOREIGNKEY(Sno)REFERENCESStudent(Sno)
ONDELETECASCADE,
PRIMARYKEY(Cno,Sno),
MyAmountint,
SCamount_timeDATE
);
六.软件设计与实现
1.登陆与注册界面
登陆界面仿照QQ登陆界面,设计简单,一目了然,要求用户输入用户名和密码,界面下方有两个按钮,分别是“登陆”和“注册”。
输入用户名和密码后,点击“登陆”按钮时,判断用户名是否存在,若不存在,则弹出提示对话框;若存在,则判断密码是否相符;若相符,进入相应的界面;若不相符,弹出对话框提示密码错误。
点击“注册”按钮时,弹出注册界面,要求输入姓名和密码,并要求确认密码;当有未输入项时,弹出对话框提示输入;若两次输入的密码不一致,弹出对话框提示重新输入;提交成功后,弹出对话框告知学生号。
学生注册时,系统将自动生成学生号,为了防止删除时产生编号的缺失,不便于管理,系统在分配编号时,将分配给新数据当前未使用的最小编号,如:
原有0201,0202,0203,0204四个学生,管理员将0203号学生信息删除后,再有新学生来注册时,系统分配给他的学生号就是0203号,而不是0205号,这样能填补之前删除的编号缺失,保证编号的连续性。
分配学生号的代码如下:
ResultSetrsno;
Stringb[];
rsno=sql.executeQuery("SELECTSnoFROMStudentGROUPBYSno");
rsno.last();
n=rsno.getRow();
rsno.beforeFirst();
intk=0;
b=newString[n];
while(rsno.next())
{
b[k]=rsno.getString
(1);
k++;
}
intsno=0,i;
for(i=0;i { if(Integer.parseInt(b[i])! =200+i+1) { sno=200+i+1; break; } } if(i==n) sno=200+n+1; 登陆和注册界面如下: 2.管理员界面 登陆到管理员界面后,窗口标题为“欢迎你,管理员某某”。 管理员界面是一个选项卡窗格,分“添加”“删除”“查询”“更新”四个选项卡,每个选项卡上有不同的图片背景和对应功能的按钮,点击按钮时会弹出不同的功能窗口,完成各种管理活动,主界面如下: 添加时,要求输入该实体的主码作为索引,弹出一个只有一行空白区表格的窗口,输入要添加的信息后,点击“确定”按钮,即可提交,领取相应的编号,若失败,弹出对话框提示添加失败; 删除时,要求输入该实体的主码作为索引,点击“确定”按钮,在下方显示要删除的信息,再点击“删除”按钮,即可删除;若该实体不存在,则弹出对话框提示; 查询时,弹出带有表格的窗体,显示要查询的相应信息; 更新时,要求输入该实体的主码作为索引,点击“确定”按钮,在下方显示要修改的信息,再点击“修改”按钮,即可修改;修改成功弹出对话框提示,修改失败弹出对话框提示;若该实体不存在,弹出对话框提示; 由于添加、删除、修改窗体皆是通过表格组件实现的,所以界面在此处不一一举例,尽给出添加课程和查询欠费学生信息的界面: 3.学生界面 当软件检测到用户名为学生编号时,则自动进入学生登陆界面,窗口标题为“欢迎你,某某同学”。 当该生有未交费或费用已到期的情况时,将弹出对话框提示,该功能是通过存储过程实现的: createorreplaceprocedureWarning(PCnoinVarchar2, PSnoinVarchar2, timeoutnumber) as PMyAmountint; PSCamount_TimeDate; BEGIN SelectMyAmount,SCamount_Time intoPMyAmount,PSCamount_Time FromSC_Amount WhereCno=PCnoandSno=PSno; ifPSCamount_TimeISnullthen time: =30; else select trunc(sysdate)-trunc(PSCamount_Time) intotime fromdual; endif; commit; end; 该存储过程传入两个参数,课程号和学生号,返回一个参数,距上次交费的课程开始日期的天数,如果这个天数大于28(一般托管中心都是四周为一个月的课程),则提示“请及时交费”,存储过程调用代码如下: CallableStatementproc=null; for(inti=0;i { proc=con.prepareCall("{callWarning(? ? ? )}"); proc.setString(1,b[i]); proc.setString(2,sno); proc.registerOutParameter(3,Types.INTEGER); proc.execute(); intok=proc.getInt(3); if(ok>28) { rs=sql.executeQuery("SELECTCnameFROMCourseWhereCno='"+b[i]+"'");rs.next(); JOptionPane.showMessageDialog(button1,"请及时交费: "+rs.getString (1)+"课(课程号为"+b[i]+")","交费通知",JOptionPane.WARNING_MESSAGE); } } 学生登陆界面有两个菜单,分别是“查询”和“管理”,管理则有一个菜单项,“注销课程”,窗口中间有两个按钮,分别为“选择课程”和“自助交费”,点击“选择课程”,将弹出选课界面,学生主界面如下图: 选课界面: 在制作这个界面时,我真是下了不少的功夫,因为它要与数据库动态连接,前面的JCheckBox是通过查询得到的,而后面的JComboBox是根据前面的JCheckBox的值查询课程表得到的,所以过程有些复杂,一方面想要代码简单,另一方面又要考虑数据库在同一时刻有允许的最大连接数目,而通过实践发现同时对两个ResultSet进行操作就会出错,所以最终只能将查询到的科目存在数组中,再供它用。 我所采用的是盒式布局,科目是可以添加的,所以在查询科目个数之前无法确定盒子的个数,好在java能够用变量定义数组,于是我创建了一个盒子数组,终于实现如图效果。 可随之而来又产生了一个问题,随着科目的增加,窗体大小不够显示所有组件了,所以我又想到可以将这些盒子添加到一个滚动面板里,最后终于得到我想要的效果了。 还有一个小插曲,就是由于我添加了背景图片,没加入滚动面板时,图片能够显示,加入滚动面板后,图片就怎么都不显示了,即使我将滚动面板pane设为透明: pane.setOpaque(false); 图片依然无法正确显示,后来通过上网查找解决方法,了解到要想让滚动面板透明,光设置面板透明是不够的,同时还要要设 pane.getViewport().setOpaque(false); 滚动条也要设置成透明: pane.getVerticalScrollBar().setOpaque(false); 最终得到理想的效果。 部分代码如下: JCheckBoxchbox[]; JComboBoxcbox[]; //查询Cname并将科目名存入JCheckBox类型的chbox数组的代码略 //通过JCheckBox类型的chbox数组中的Cname值获得相应的教师信息,并存入JComboBox类型的cbox数组中,代码如下: ResultSetrs2; Stringstr[]; for(j=0;j { rs2=sql.executeQuery("SELECTTnoFROMCourseWHERECname='"+chbox[j].getText()+"'ORDERBYTno"); rs2.last(); m=rs2.getRow(); rs2.beforeFirst(); str=newString[m]; while(rs2.next()) { str[i]=rs2.getString (1); i++; } for(intk=0;k { rs2=sql.executeQuery("SELECTTnameFROMTeacherWHERETno='"+str[k]+"'"); rs2.next(); str[k]=rs2.getString (1); } cbox[j]=newJComboBox(str); m=0; i=0; } 七.实验总结 通过做课程设计,我学会了许多平时学不到的知识,并且动手能力的到了大大的提升。 在本次课程设计中我了解到,要开发一个好的项目一定要先做好规划,按照软件的开发过程,详细地写好每一个必要的文档。 软件文档的最主要目标是传达一个系统的技术要素和使用方法,第二个目标是提供软件开发过程中的需求,决策,行为,角色和责任的书面记录。 在课程设计之初,我先是构思题目的E-R图,尽量使各个实体之间的关系清晰明了,减少数据冗余,构造满足第三范式的关系。 光是构思就用了三天的时间,虽然如此,当构思清晰后再动手,思路也清晰很多,编起代码来也得心应手。 通过这次课程设计,加深了我对数据库基础理论和基本知识的理解,掌握使用数据库进行软件设计的基本方法,提高运用数据库解决实际问题的能力,虽然我的程序还有很多不足,但最终实现了给定的应用要求,构造出了相对合理的数据库模式,使之能够有效地存储数据,满足了信息要求和处理要求。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 托管 培训中心 信息管理 系统 报告