java学生成绩管理系统分析报告Word文件下载.docx
《java学生成绩管理系统分析报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《java学生成绩管理系统分析报告Word文件下载.docx(27页珍藏版)》请在冰豆网上搜索。
需求分析是软件系统生存期中定义阶段的最后一个步骤;
是作为整个软件开发范围的指南,是软件开发人员开发出正确的符合用户要求的软件的重点;
是为明确软件需求、安排项目规划与进度、组织软件开发与测试,撰写本文档。
该文档将最终交给软件具体开发人员进行具体的开发,其针对的对象是软件开发人员。
解决了实现该系统需求的程序模块设计问题。
包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。
在以下的概要设计报告中将对在本阶段中对系统所做的所有概要设计进行详细的说明。
详细设计中,程序设计员可参考此概要设计报告,在概要设计对学生信息管理系统所做的模块结构设计的基础上,对系统进行详细设计。
在以后的软件测试以及软件维护阶段也可参考此说明书,以便于了解在概要设计过程中所完成的各模块设计结构,或在修改时找出在本阶段设计的不足或错误。
此需求规格说明书是对用户需求分析的结果,明确系统应具有的功能及性能与界面方面的需求,使系统分析员及软件开发组成员能清楚地了解用户的需求,并在此基础上完成后续工作和开发工作。
学生信息管理系统将由两部分组成:
置于学生信息的前台程序,以及置于管理员的数据库服务器。
1.1功能需求分析
该学生成绩管理系统具备三方面的功能:
一方面是学生用户,学生通过输入学号和密码进下该系统后,可以进行一些基础查询(学生信息查询、班级信息查询、课程信息查询)、成绩管理(成绩查询、计算平均分)重新登陆系统;
一方面老师进入该系统则比学生多一些权限:
成绩输入、成绩查询。
具体功能:
1、选择[学生基本维护]菜单命令,即可进入[学生基本维护]功能窗体,在其中输入学生的相关信息,如果需要添加或修改学生信息,则单击相应的按纽,输入新信息后单击[添加]就可以
了。
需要删除一条信息,则只要选择这条信息再点击[删除]。
在搜索条件中输入相关的条件,
单击[查询]就可查找信息。
2、选择[学生信息查询]菜单命令,即可进入[学生信息查询]功能窗体,在其中的下拉列表中选择你要看的信息,则在下面的表格中显示你要的信息。
3、选择[成绩管理][添加成绩]菜单命令,即可进入[添加成绩]功能窗体,此功能权限只有管理员和教师。
4、选择[成绩管理][输入成绩]菜单命令,即可进入[输入成绩]功能窗体,
此功能权限只有管理员和教师。
5、选择[成绩管理][修改成绩]界面,此功能规管理员所有。
6、选择[成绩管理][查询成绩]界面此界面对学生也是可见的,它的权限规所有用户所有。
7、选择[登陆][重新登陆]则会返回登陆界面,为用户提供方便。
8、选择[退出]将退出整个系统。
1.2性能需求分析
时间特性要求:
在软件方面,响应时间有点慢,因为是用Eclipse做的,它占用内存比较大,更新处理时间比较快而且迅速。
安全性:
设立口令号和密码验证方式,防止非法用户登录进行操作。
也就是用户只有管理员、学生和教师才能进入这个系统,用户凭口令号和密码进入此系统,系统会自动判断用户是那种类型,分
-4-
别拥有不同的权限。
1.3数据库需求分析――数据流图
1.3.1数据结构
在系统中功能模块主要牵涉到的信息包括:
是学生信息(Student)、课程信息(Course)、成绩表
(SC).
学生信息:
包含学号(STNO)、姓名(SNAME)、年龄(SAGE)、性别(SSEX)、系别(SDEPT)课程信息:
包括课程编号(Cno)、课程名称(Cname)、先行课(Cpno)成绩表;
学号(STNO)、课程号(Cno)、成绩(Grade)
1.3.2数据流:
1)数据流名:
口令号
说明:
根据这个口令号定位到用户管理数据库,以便进行身份验证。
数据流来源:
登陆界面输入的口令号和密码。
数据流去向:
其中用户口令信息将存在于整个操作过程中,防止非法登陆。
数据流组成:
口令号(文本);
密码(文本)
2)数据流名:
寻找信息
根据用户在学生信息维护的时候所填写的信息。
学生信息维护界面学生输入包含学号、班级编号、名称等。
学号将存在整个操作,其它的存入数据库。
学号(文本);
姓名(文本)等
3)数据流名:
根据用户在成绩管理的时候所填写的信息。
成绩输入、修改、添加等界面用户输入包含课程编号、课程名称、成绩、教师。
学号、班级编号、课程编号将存在整个操作,其它的存入数据库。
数据流组成:
课程编号(文本)、课程名称(文本)、教师(文本)等。
4)数据流名:
返回信息
根据用户在学生信息维护的时候所填写的信息存入了数据库之后。
数据流来源:
由学生信息维护界面学生输入的包含学号、姓名、性别等存入数据库的。
数据流去向:
学生信息维护界面。
学号(文本)、姓名(文本)、班级名称(文本)、性别(文本)等。
5)数据流名:
根据用户在成绩管理的时候所填写的信息存入数据库后。
由成绩管理输入的包含班级名称、教师、课程名、成绩存入数据库的。
成绩管理的各子界面。
班级编号(文本);
班级名称(文本);
教师(文本)等;
二、概要结构设计
2.1系统功能结构设计
2.1.1模块的功能设计
根据需求分析阶段得到的功能需求,管理员、学生和教师用户通过输入口令号和密码进下该系统后,可以进行一些学生基础信息查询(学生信息查询、班级信息查询、课程信息查询)、学生信息维护、成绩管理(成绩查询、计算平均分)重新登陆系统、退出。
模块功能大概可以分为如下4个方面:
这几个模块学生基础维护、成绩管理、登陆、退出。
其中基础维护还要包括学生信息维护、班级信息维护、课程信息维护。
成绩管理包括成绩查询、添加成绩、成绩输入等。
综上所述,得到客户端功能模块图如下2.2所示。
登陆
用户登陆
查
系别
含
成
课程
学生
姓
系
先
课
7
询信
开课
选课
E-R图
2.2概要结构设计
增
删
加
除
询
信
管理员登
三、详细设计及实现
3.1用户登陆模块
3.1.1代码实现
packagestu_manager;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassLoginextendsJFrame{
privatestaticfinallongserialVersionUID=4949257312955311099L;
TextFieldf1;
TextFieldf2;
JButtonb1;
JButtonb2;
JButtonb3;
Stringpower;
//表示权限
Login(){
Containercp=getContentPane();
cp.setLayout(newGridLayout(4,1));
Labell1=newLabel("
用户名"
);
Labell2=newLabel("
密码"
Panelp1=newPanel();
Panelp2=newPanel();
Panelp3=newPanel();
f1=newTextField(10);
f2=newTextField(10);
f2.setEchoChar('
*'
b1=newJButton("
登录"
b2=newJButton("
重置"
b3=newJButton("
退出"
p1.add(l1);
p1.add(f1);
p2.add(l2);
p2.add(f2);
p3.add(b1);
p3.add(b2);
p3.add(b3);
cp.add(p1);
cp.add(p2);
cp.add(p3);
b1.addActionListener(newEnter());
b2.addActionListener(newReWrite());
b3.addActionListener(newClose());
}
publicstaticvoidmain(String[]args){
Loginlog=newLogin();
log.setTitle("
系统登录"
log.setBounds(200,200,300,300);
log.setBackground(Color.blue);
log.setVisible(true);
classEnterimplementsActionListener{
publicvoidactionPerformed(ActionEvente)
{
if((f1.getText()).equals("
tang"
)&
&
(f2.getText()).equals("
051141"
))
JOptionPane.showMessageDialog(null,"
登录成功!
用户权限是管理员"
power="
管理员"
;
XueShengframe1=newXueSheng();
用户权限是
"
frame1.setResizable(true);
elseif((f1.getText()).equals("
123456"
登录成功!
游客"
Findf2=newFind();
f2.setVisible(true);
elseJOptionPane.showMessageDialog(null,"
登录失败,请重新登录!
classReWriteimplementsActionListener{publicvoidactionPerformed(ActionEvente){
f1.setText("
f2.setText("
f1.requestFocus();
classCloseimplementsActionListener{publicvoidactionPerformed(ActionEvente)
JButtonbt=(JButton)e.getSource();
if(bt==b3)
System.exit(0);
3.2管理员界面
3.2.1代码实现:
importjavax.swing.JFrame;
publicclassXueShengextendsJFrameimplementsActionListener{
JButtoncx,zj,tc,sc;
XueSheng(){
setBounds(100,100,600,600);
JPanelpanel2=newJPanel();
setContentPane(panel2);
panel2.setLayout(null);
JLabellabel1=newJLabel("
欢迎进入学生信息管理界面"
label1.setFont(newFont("
BOLD"
Font.BOLD,28));
panel2.add(label1);
label1.setBounds(50,20,400,100);
cx=newJButton("
查询"
panel2.add(cx);
cx.setBounds(50,200,80,50);
zj=newJButton("
增加"
panel2.add(zj);
zj.setBounds(150,200,80,50);
sc=newJButton("
删除"
panel2.add(sc);
sc.setBounds(250,200,80,50);
tc=newJButton("
panel2.add(tc);
tc.setBounds(350,200,80,50);
cx.addActionListener(this);
zj.addActionListener(this);
sc.addActionListener(this);
tc.addActionListener(this);
setVisible(true);
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==cx){
Findf=newFind();
if(e.getSource()==zj){
AddFIf=newAddFI();
if(e.getSource()==sc){
Deletd=newDelet();
if(e.getSource()==tc){
shutDown();
privatevoidshutDown(){
this.dispose();
3.3用户界面
packagestu_manager;
import
importimportimportimport
public
JTextField
t1
StringSTNO,r1,r2,r3,r4,
r5,r6;
JButton
b1,b2;
XueSheng
xue;
java.awt.event.*;
java.sql.Connection;
java.sql.DriverManager;
java.sql.PreparedStatement;
java.sql.ResultSet;
java.sql.SQLException;
javax.swing.*;
classFindextendsJFrameimplementsActionListener{
Find(){
super("
查询学生信息"
);
Containerc1=
this.getContentPane();
setBackground(
newColor(215,215,215));
c1.setLayout(
newGridLayout(3,2));
JPanelpp=newJPanel();
请输入你的学号"
blue);
JLabellabel0=newJLabel(label0.setForeground(Color.pp.add(label0);
JPanelp1=newJPanel();
t1=newJTextField(10);
p1.add(newLabel("
));
p1.add(t1);
c1.add(p1);
JPanelp2=newJPanel();
b1=newJButton("
b2=newJButton("
b1.addActionListener(
this);
b2.addActionListener(
p2.add(b1);
p2.add(b2);
c1.add(p2);
this.setVisible(true);
this.setBounds(200,200,400,300);
(url,
Stringstr=
select
try{
if(e.getSource()==b1){
STNO=t1.getText();
Class.forName(
com.microsoft.sqlserver.jdbc.SQLServerDriver"
.newInstance();
Stringurl="
jdbc:
sqlserver:
//localhost:
1433;
DatabaseName=ss"
;
StringuserName="
sa"
//默认用户名
StringuserPwd="
Connectioncn=DriverManager.getConnection
userName,
userPwd);
Student.SNAME,Student.SAGE,Student.SSEX,Student.STNO,Course.Cname,SC.GradefromStudent,Course,SCwhereStudent.STNO=SC.STNOandSC.Cno=Course.CnoandStudent.STNO='
+STNO+"
'
PreparedStatementps=cn.prepareStatement(str);
ResultSetrs=ps.executeQuery();
System.out.println("
STNO="
+STNO);
if(rs.next()){
r1
=rs.getString(
STNO"
r2
SNAME"
r3
SAGE"
r4
SSEX"
r5
Cname"
r6
Grade"
}else
JOptionPane.
showMessageDialog
(null,
你输入的学
号有误"
cn.close();
}catch(SQLExceptiong){
Error"
+g.getErrorCode());
Merrage="
+g.getMessage());
}catch(Exceptionf){
f.printStackTrace();
Filef=newFile();
this.dispose();
if(e.getSource()==b2){
(null,"
数据转换错误"
classFile
extendsJFrameimplements
ActionListener{
t1.setText("
t1.repaint();
}catch(NumberFormatExceptionex){
JButtonb3;
File(){
Containerc2=
c2.setLayout(
newGridLayout(3,1));
tt1=newJTextField(r1);
t2
newJTextField(
r2);
t3=
r3);
t4=
r4);
t5=
r5);
t6=
r6);
tt1.setEditable(
false);
t2.setEditable(
t3.setEditable(
t4.setEditable(
t5.setEditable(
t6.setEditable(
JPanelpp1=
newJPanel();
JLabellabel2=
newJLabel("
学号为"
+STNO+"
学生的信息"
pp1.add(label2);
label2.setFont(
newFont("
Font.BOLD,28));
c2.add(pp1);
JPanelpp2=
newJPan