JAVA学生成绩管理系统课程设计报告.docx
- 文档编号:25475626
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:44
- 大小:379.28KB
JAVA学生成绩管理系统课程设计报告.docx
《JAVA学生成绩管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《JAVA学生成绩管理系统课程设计报告.docx(44页珍藏版)》请在冰豆网上搜索。
JAVA学生成绩管理系统课程设计报告
湖南工业大学
课程设计
资料袋
计算机与通信学院学院(系、部)2016-2017学年第1学期
课程名称数据结构指导教师文志诚职称讲师
学生姓名孙浩专业班级软件工程1501班学号
题目
成绩起止日期2016年12月18日~2016年12月23日
目录清单
序号
材料名称
资料数量
备注
1
课程设计任务书
1
2
课程设计说明书
1
3
源程序(电子文档)
1
4
5
6
湖南工业大学
课程设计任务书
2016-2017学年第1学期
计算机与通信学院(系、部)软件工程专业1501班级
课程名称:
数据结构
设计题目:
完成期限:
自2016年12月18日至2016年12月26日共1周
内
容
及
任
务
一、设计的任务及主要技术参数
使用java设计一个能够符合课程设计要求的系统
二、设计任务
三、设计工作量
进
度
安
排
起止日期
工作内容
12.18
需求分析
12.19
概要设计
12.20-12.22
详细设计
12.23
调试分析、测试结果
主
要
参
考
资
料
指导教师(签字):
年月日
系(教研室)主任(签字):
年月日
数据结构程序设计(java语言)课程设计
设计说明书
学生成绩管理系统
起止日期:
2016年12月18日至2016年12月23日
学生姓名
孙浩
班级
软件工程1501班
学号
成绩
指导教师(签字)
计算机与通信学院
2016年12月23日
1需求分析
1.1系统的具体任务
该系统的具体任务就是设计一个学生成绩的数据库管理系统,由计算机来代替人工执行一系列诸如增加新学生成绩信息、删除学生成绩信息、学生资料、查询、修改等的处理操作,以方便管理人员的管理信息工作。
本设计以客户为中心,界面要美观大方,操作尽量简单明了,且要有良好的容错性,在用户出现误操作时能及时给出警告并修改。
在现有的技术和资金的情况下完全可以设计出这套功能完善的应用软件。
1.2系统开发目的
建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。
实现学生成绩信息管理工作流程的系统化、规范化和自动化。
1.3系统环境需求
编程语言:
JAVA
Java+Eclipse+SQLserver数据库
开发工具:
EclipseSDK(英文版)
SQL2000(中文版)
运行环境:
Windowsxp或windows2000
2概要设计
2.1总体功能需求
系统登录
包括管理员、教师和学生三种类型的登录。
1.录入学生信息
(初始化)
在系统中不存在任何对象时,实现该功能。
具体功能为:
1:
检测文件系统/数据库中是否存在相关文件/表;
2:
若不存在相关文件/表,则要求用户录入学生信息,并序列化或通过JDBC存储到文件/表;
3:
若已存在相关文件/表,则反序列化或通过JDBC读取到程序中。
注意:
学生纪录不允许重复,判断的关键字为学号
2.添加学生记录
往已有的学生纪录添加新的学生纪录。
具体功能为:
1:
要求用户从键盘输入一个或多个学生信息;
2:
输入完成后序列化或JDBC存储到文件/表。
注意:
学生纪录不允许重复,判断的关键字为学号
3.删除学生记录
在已有的学生纪录中删除一个或多个学生纪录。
具体功能为:
1:
要求用户输入欲删除的学生的学号;
2:
删除学生记录;
3:
更新到文件/表。
4.修改学生记录
在已有的学生记录中修改某学生的相关信息。
具体功能为:
1:
要求用户输入欲修改的学生的学号;
2:
判断该学生是否存在于记录中;
3:
若学生记录存在,提供修改学生信息功能。
5.查看学生记录
查看单个学生记录。
具体功能为:
1:
输入学生学号;
2:
若该学生存在,打印该学生相关信息。
查看多个学生记录。
具体功能为:
1:
打印出所有学生的记录;
2:
能分别按学号、姓名、性别、年龄和分数进行排序。
6.退出系统
退出系统。
2.2初始化
流程描述:
1:
初始化系统执行对对象进行序列化
2:
反序列化获得对象
业务规则说明:
1:
进入系统第一步必须序列化。
2:
获得反序列化的对象,如果文件不存在兴建一个,单必须是需要的对象类型。
2.3添加学生
流程描述:
1:
要求用户从键盘输入一个或多个学生信息;
2:
输入完成后序列化到文件/表。
3:
学生纪录不允许重复,判断的关键字为学号
规则说明:
1:
从菜单选择添加学生,获得容器对象。
2:
进入添加页面提示添加属性。
3:
性别限制男女。
4:
科目成绩可变性。
课程可自动调节
5:
学号作为唯一标示符:
不能出现重复学号。
必须是数字组成。
6:
添加完成后把容器对象序列化到文件
2.4删除学生记录
业务流程描述:
1:
要求用户输入欲删除的学生的学号;
2:
删除学生记录;
3:
更新到文件/表。
业务规则说明:
1:
传递一个容器对象。
2:
给定一个学生学号删除一个学生信息
2:
遍历容器是否有输入学号的学生信息。
如果存在,提示是否删除。
如果没有重新输入。
3:
如果删除成功返回一个容器对象,序列化到文件。
2.5修改学生记录
业务流程描述:
1:
要求用户输入欲修改的学生的学号;
2:
判断该学生是否存在于记录中;
3:
若学生记录存在,提供修改学生信息功能。
业务规则说明:
1:
传递一个容器对象给修改方法。
2:
给定一个欲修改学生的学号
3:
遍历容器是否有输入学号的学生信息。
如果存在学生对象,继续下一步。
如果没有重新输入。
4:
通过判断知道存在学生对象后遍历获得学生对象。
5:
提示要修改的类容
提示旧的信息添加新的信息
6:
修改后获得容器对象,序列化到文件
2.6查看学生记录
业务流程描述:
1:
输入学生学号;
2:
若该学生存在,打印该学生相关信息。
查看多个学生记录。
具体功能为:
1:
打印出所有学生的记录;
2:
能分别按学号、姓名、性别、年龄和分数进行排序。
业务规则说明:
1:
输入选项获得查看方式,获得容器对象。
2:
全部查看显示获得全部学生信息
3:
查看特定学生。
输入学生学号;
判断学生是否存在
如果存在显示单个学生,如果不存在提示不存在,重新输入。
2.7退出系统
提示是否退出
3系统分析
3.1系统开发流程
HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”的英文缩写。
根据系统的模块层次结构可得到系统HIPO图,本软件的HIPO图如图4.1所示。
图4.1系统HIPO图
模块是数据说明、可执行语句等程序对象的集合。
是可以单独被命名的而且可通过名字来访问,例如,过程、函数、子程序、宏等等都可作为模块。
模块化就是将程序划分成若干个模块,每个模块完成一个子功能,把这些模块集合起来组成一个整体,可以完成指定的功能满足问题的要求。
模块化设计不仅降低了系统的复杂性,使得系统容易修改,而且推动了系统各个部分的并行开发,从而提高了软件的生产效率。
以下为成绩管理的IPO表,如图4.2所示:
图4.2成绩管理IPO表
3.2系统模块设计
系统用例图
用例图主要用来图示化系统的主事件流程,它主要用来描述需求,即希望系统具备的完成一定功能的动作,通俗地理解用例就是软件的功能模块,是设计系统分析阶段的起点,设计人员根据需求来创建和解释用例图,用来描述软件应具备哪些功能模块以及这些模块之间的调用关系。
3.2系统总体用例图
本系统包括三类角色:
教师、管理员和学生。
教师可以进行分报表,记录分数和更新分数的操作,管理员可以查看分数和进行成绩的总报表,学生可以查看个人成绩。
同时系统还可以加载分数和保存分数。
其系统总体用例图如图2.1所示:
图3.1系统总体用例图
3.3学生信息用例图
学生信息管理模块包括三类角色,可分别根据自己的权限对个人信息进行增加、删除和修改等操作。
其用例图如图3.2所示:
图3.2学生信息用例图
3.4管理员信息用例图
管理员信息管理模块包括两种角色,根据不同的权限可以添加管理员、查看管理员、删除管理员,还包括登录,管理员信息用例图如图3.3所示:
图3.3管理员信息用例图
3.3系统结构
3.3.1系统模块结构图
模块分析
用户管理模块
添加用户,删除用户:
publicvoidmanagementUser(Stringsa){
interFram=newJInternalFrame(sa,true,true,true,true);
interFram.setBounds(0,0,frm1.width,frm1.height);
interFram.validate();
interFram.setVisible(true);
jkjkjk=new管理用户();
interFram.add(jkjkjk);
add(interFram,BorderLayout.CENTER);
图6.1用户管理流程图
增加学生信息模块
对学生信息进行增加:
:
publicvoidaddC(Stringsa){
interFram=newJInternalFrame(sa,true,true,true,true);
interFram.setBounds(0,0,frm1.width,frm1.height);
interFram.validate();
interFram.setVisible(true);
jkjkjk1=new信息();
interFram.add(jkjkjk1);
add(interFram,BorderLayout.CENTER);
}
stu学生extendsJPanel{
privatestaticfinallongserialVersionUID=-2377035L;
JTabletable;
JScrollPanescroll;
Stringrili[][]=newString[100][3];
Stringstr1,str2,str3;
Objectname[]={"学号","学科","成绩"};
Connectioncon;
intlyl,lwc;
Statementsql;
ResultSetrs;
图6.2学生信息增加流程图
修改学生信息模块
对学生的成绩及信息进行修改:
:
Stringrili[][]=newString[100][4];
JButtonf=JButton("修改信息");
学生信息视图表(){
try{
con=DriverManager.getConnection("jdbc:
odbc:
qyl","","");
sql=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs=sql.executeQuery("select*from已修改视图WHERESNO="+"'"+qyl+"'");
inti=0;
while(rs.next()){
rili[i][0]=rs.getString
(1);
rili[i][1]=rs.getString
(2);
rili[i][2]=rs.getString(3);
rili[i][3]=rs.getString(4);
i++;
}
}
Stringoldvalue=table.getValueAt(table.getSelectedRow(),
table.getSelectedColumn()).toString();
introw=table.getSelectedRow();
intcolumn=table.getSelectedColumn();
if(column==0){
System.out.println(oldvalue);
System.out.println(row+"\t"+column);
System.out.println(rili[row][column+2]);
intn=JOptionPane.showConfirmDialog(jk,"您选择删除"
+rili[row][1]+"("+rili[row][2]+"\b)"+"成绩\n是否继续?
","提示对话框",
JOptionPane.YES_NO_OPTION);
if(n==JOptionPane.YES_OPTION){
System.out.println(rili[row][1]);
Stringdel="DELETEFROMSCWHERECNO="+"'"+rili[row][1]+"'";
图6.3修改学生成绩流程图
综合查询模块
class查询extendsJPanel{
privatestaticfinallongserialVersionUID=-4737165668992172494L;
JTabletable;
JScrollPanescroll;
Stringrili[][]=newString[100][5];
Objectname[]={"学号","姓名","性别","年龄","系别"};
intlht,lyl,lwc;
Connectioncon;
Stringoldvalue=null;
Statementsql;
Stringstr1,str2,str3,str4,str5;
ResultSetrs;
存储过程及触发器:
●触发器:
删除S表中的数据以后SC表中的相应的数据也被删除
CREATETRIGGERdelS_SCONS
FORDELETE
ASdeclare@SNO_DELchar(12)
select@SNO_DEL=SNOfromdeleted
deletefromSC
whereSNO=@SNO_DEL
●触发器:
更新S表中的SNO后SC表中的也相应改变
CREATETRIGGERUptateS_SCONS
FORUPDATE
ASIFUPDATE(SNO)
BEGIN
DECLARE@SNO_NEWCHAR(12),@SNO_OLDCHAR(12)
SEL
ECT@SNO_NEW=SNOFROMINSERTED
SELECT@SNO_OLD=SNOFROMDELETED
UPDATESCSETSNO=@SNO_NEWWHERESNO=@SNO_OLD
END
●触发器:
删除C表中的信息后SC表中的相应信息也会被删除掉
CREATETRIGGERdelC_SCONC
FORDELETE
ASdeclare@CNO_DELchar
(2)
select@CNO_DEL=CNOfromdeleted
deletefromSC
whereCNO=@CNO_DEL
●触发器:
更新C表中的信息后SC表中的相应信息也会随着改变
CREATETRIGGERUptateC_SCONC
FORUPDATE
ASIFUPDATE(CNO)
BEGIN
DECLARE@SNO_NEWCHAR(12),@SNO_OLDCHAR(12)
SELECT@SNO_NEW=CNOFROMINSERTED
SELECT@SNO_OLD=CNOFROMDELETED
UPDATESCSETCNO=@SNO_NEWWHERECNO=@SNO_OLD
END
●触发器:
删除T表中的教师信息后TC表中的相应信息也会别删掉
CREATETRIGGERdelT_TCONT
FORDELETE
ASdeclare@SNO_DELchar(12)
select@SNO_DEL=TNOfromdeleted
3.3.2系统流程图
系统程序流程图
管理员登录模块
管理员登录的流程是:
如果管理员存在,则直接输入账号密码,系统判断账号密码是否正确,如果输入不正确,重新输入,直到输入正确之后才可以进入系统;当管理员不存在时,作者选择注册,根据个人详细情况输入个人信息,系统将会判断输入的信息是否正确,直到输入的信息正确之后才注册成功,然后输入注册的账号密码登录系统,系统仍会判断账号密码是否正确,直到输入正确的账号密码才会进入系统。
其流程图如图5.1所示:
图5.1管理员登录流程图
成绩管理模块
成绩管理的流程是:
管理员输入账号密码之后,系统判断输入账号密码是否正确,不正确,重新输入直到正确才可以进入后台管理系统,选择成绩管理,选择要进行审核的成绩,进行编辑修改,之后再进一步审核,确定成绩是否录用,如果是存储成绩,则会显示在系统前台的首页。
其流程图如图4.2所示:
图5.2成绩管理流程图
5.2系统过程设计
过程设计的任务不是具体地编写程序,而是要设计出程序的“蓝图”,程序员根据这个蓝图写出实际的代码。
因此,过程设计的结果基本上决定了最终的程序代码的质量。
在软件的生命周期中,实际上对于长期使用的软件系统而言,人读程序的时间可能比写程序的时间还要长得多。
因此,衡量程序的质量不仅要看它的逻辑是否正确,性能是否满足要求,更主要的是要看它是否容易阅读和理解。
过程设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。
结构程序设计技术是实现上述目标的关键技术,因此是过程设计的逻辑基础。
N-S图是一种符合结构化程序设计原则的图形描述工具,又称之为盒图。
它有以下特点:
1)功能域明确,可以从盒图上一眼就看出来。
2)不可能任意转移控制。
3)很容易确定局部和全程数据的作用域。
4)很容易表明嵌套关系,也可以表示模块的层次结构。
系统前台的N-S图,如图5.3所示:
图5.3系统前台N-S图
PAD是问题分析图(ProblemAnalysisDiagram)的英文缩写,它用二维树形结构的图来表示程序的控制流,是一种用结构化程序设计思想表现程序逻辑结构的图形工具,将这种图翻译成程序代码比较容易。
PAD图的主要优点如下:
(1)使用表示结构化控制的PAD符号所设计出来的程序必然是结构化程序。
(2)PAD图描述的程序结构十分清晰。
图中最左面的竖线是程序的主线,即第一层结构。
随着程序层次增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线,PAD图中竖线的总条数就是程序的层次数。
(3)用PAD图表现程序逻辑易读、易懂、易记。
PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左到右顺序执行,遍历所有结点。
(4)有利于提高软件的可靠性和软件生产率。
容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可以省去人工编码的工作,有利于提高软件的可靠性和软件生产率。
(5)既可用于表示程序逻辑,也可用于描述数据结构。
(6)PAD图的符号支持自顶向下、逐步求精方法的使用。
开始设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计,系统前台的PAD图,如图5.4所示:
图5.4系统前台PAD图
3.4数据库设计
数据库表设计
逻辑结构设计的任务是把概念结构设计阶段设计好的E-R图转换成与选用的DBMS产品所支持的数据模型相符合的逻辑结构。
E-R图所需解决的问题是如何确定实体和实体间的关系,如何确定这些关系模式的属性和码。
数据库中两实体间1:
n联系转换为一个与n端对应的关系模式合并的关系模式的方法是将联系的属性与1端的码加入n端作为属性,主码为n端实体的主码。
以下为本系统中部分表的简单介绍。
1、管理员基本信息表包含管理员编号、管理员姓名、管理员密码,设计时注意AdminID设为主键,如表3.1所示:
表4.1管理员基本信息表
字段名
数据类型
说明
AdminID
Int
管理员编号
Name
Varchar(10)
管理员姓名
Password
Varchar(10)
管理员密码
2、学生基本信息表包含的信息是学生编号、学生姓名、学生性别、学生年龄、家庭住址、联系电话等信息,设计时注意ID字段设为主键,设为Int类型,如表3.2所示:
表4.2学生基本信息表
字段名
数据类型
说明
ID
Int
学生编号
Name
Varchar(10)
学生姓名
Sex
Char(10)
性别
Age
Int
年龄
Address
Varchar(50)
家庭住址
Phone
Char(15)
联系电话
3、教师基本信息表包含教师编号、教师姓名、教师年龄、家庭住址、联系电话、所教科目等信息,设计时注意ID字段设为主键,设为Int类型,如表4.3所示:
表4.3教师基本信息表
字段名
数据类型
说明
ID
Int
教师编号
OName
Varchar(10)
教师姓名
Age
Int
年龄
Address
Varchar(50)
家庭住址
Phone
Char(15)
联系电话
Object
Varchar(15)
所教科目
4、成绩基本信息表包括学生编号、科目类型、任课教师、所得分数,ID设为主键,如表4.4所示:
表4.4成绩基本信息信息表
字段名
数据类型
说明
ID
Int
学生编号
OType
Varchar(10)
科目类型
OName
Varchar(10)
任课教师
Grade
int
所得分数
3.1
4系统测试
首先进入NETBEANS,打开工程person.dsw,然后进入源程序,接着选择Build下的Executeperson.exe即可,也可以不打开工程,直接双击person文件夹下的debug或release子文件夹下的p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 学生 成绩管理系统 课程设计 报告