《软件工程导论学生学籍管理系统设计报告(共30页).doc》由会员分享,可在线阅读,更多相关《软件工程导论学生学籍管理系统设计报告(共30页).doc(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上课程设计报告课 程 名 称: 软件工程导论 课程设计名称: 学生学籍管理系统 系部名称: 中印计算机软件学院 学生姓名: * 班 级: 15软件工程3班学 号: * 成 绩: 指导教师: * 开课时间:2016-2017学年第1学期目录专心-专注-专业第一章 需求分析1.开发环境和软件(1) 操作系统:Windows xp (2) 数据库软件:SQL Server 2000 (3) Java开发工具:2.系统设计与功能分析 学生信息管理系统,可用于学校等机构的学生信息管理,查询,更新与维护,使用方便,易用性强,图形界面清晰明了。该软件用java语言编写,用SQLSer
2、ver2000数据库作为后台的数据库进行信息的存储,用SQL语句完成学生学籍信息的添加,查询,修改,删除的操作以及成绩的录入,修改,删除等。用ODBC驱动实现前台Java与后台SQL数据库的连接。Java语言跨平台性强,可以在windows,linux,ubuntu等系统下使用,方便简单,安全性好。SQLServer2000数据库高效安全,两者结合可相互利用各自的优势。该系统实现的大致功能:1 用户登陆界面。该界面可以选择使用者的身份,“管理员,教师,学生”。不同的身份有不同的操作界面和功能权限。ID号和密码输入正确即可登录。学生管理界面。提供了学生学籍信息的查询,修改登录密码等功能。2 教师
3、管理界面。提供了对学生学籍信息的查询,添加,修改,删除。修改密码等功能。3 管理员管理界面。拥有最高的权限。允许添加教师信息。4 登录的用户信息分别存储在SQL数据库的“管理员信息表”, “教师信息表”, “学生表”中,如果用户信息不存在则三张表中,将会无权利登录本管理系统。保证了本学生管理系统的安全性。第二章 系统概要设计1数据需求:1.1 数据字典实体属性教师教师ID,教师姓名,登录密码管理员管理员ID,登录密码学生学号,姓名,性别,班级号,籍贯,登录密码,学生成绩表格 01 实体属性表字段名 类型空值约束条件教师ID varchar(8)not null主键教师姓名varchar(8)n
4、ot null登录密码varchar(8)not null表格 02 教师信息表字段名 类型空值约束条件管理员ID varchar(10)not null主键登录密码varchar(10)not null表格 03 管理员信息表字段名 类型空值约束条件学号int not null主键姓名varchar(30)not null性别char(2)班级号varchar(30)not null外键籍贯char(10) 登录密码moneynot null学生成绩Char表格 04 学生表2. 数据流图2.1 第一层 学生名单 学生信息 成绩 统计表 成绩单2.2 第二层学生信息 成绩 班平均成绩 升留级
5、表 各科平均成绩2.3 第三层学生信息 合格单 新生信息 2.4 第四层 班级学生信息 统计成绩 各科2.5 第五层学生信息 升留级名单 学生记录3功能需求 (1)实现学生基本情况的录入,修改,删除等基本操作。(2)对学生基本信息提供灵活的查询方式。(3)完成一个班级的学期选课功能。(4)实现学生成绩的录入,修改,删除等基本操作。(5)能方便的对学生的个人学期成绩进行查询。(6)具有成绩统计,排名等功能。(7)具有留级,休学等特殊情况的处理功能。(8)能输出常用的各种报表。(9)具有数据备份和数据恢复功能。第三章 系统详细设计1概念结构设计1.1局部ER图图表 1 局部的ER图1.2 整体的E
6、R图 1.3 逻辑结构设计(1)ER图转换为关系模型由ER图可见:图中有三个实体:学生,课程,和专业;三个关系:学生选课关系,学生与专业之间的属于关系,专业的课程设置。由于每个实体必须构造表,所以可以先得到三个实体的信息表,实体的码就是关系的码,实体的属性即关系模型的属性:学生基本信息表: S (sno, sname, ssex, sbirth, spasw) 课程基本信息表: C (cno, cname, cperiord)专业基本信息表: P (pno, pname, pnum, psdept)对应的属性分别为:学号,姓名,性别,出生日期,登陆密码 课程编号,课程名,学期 专业编号,专业名
7、,专业人数,所在院系对于多对多的关系来说,与该联系相连的实体的码以及本身的属性均转换为关系的属性,各实体之间的码组成关系的码或者关系的码的一部分。 以上ER图的三个联系为多对多,所以转换为关系模式为:课程设置表:pc ( pno, psenior, cno) 与设置相连的实体有专业和课程,根据多对多的转换原则:专业的码pno,课程的码cno以及设置本身的属性共同构成该关系模式的码,所以该关系模式的码为全码。学生选课表:SC (sno, psenior, cno, grade)与选课相连的实体有学生和课程,同上由学生的码sno,课程的码cno以及选课本身的码psenior构成该关系模式的码,即(
8、sno,cno,psenior)。此外,选课表还有一个非主属性grade。学生与专业的属于表:SP(sno,pno)与属于关系相联的实体是学生和专业。同上由学生的码sno,专业的码pno构成该关系模式的码,由于此关系没有其他的码也就没有非主属性。(2)关系模式的优化:学生表 s (sno,sname,ssex,sbirth,spasw)该关系模式的码为sno,由于只有一个码,所以不存在非主属性对码的部分函数依赖,可以达到2NCF。另外,该关系模式的函数依赖为: sno - sname, sno - ssex, sno - ssex,sno - sbirth, sno - spasw,其间不存在
9、传递依赖,故学生表可达到3NCF.课程表 C ( cno ,cname , cperiod)该关系模式的码为cno, cname,设主码为cno,因为该关系模式中的码都是单一的,即不存在有两个或者两个以上的属性组成的码,所以不存在非主属性对码的部分函数依赖,可以达到2NCF。另外,该关系模式的函数依赖为:cno-cname, cno-cperiod, cname -cno ,cname - cperiod. 因为cno - cname,cname - cperiod cno - cperiod, 所以该关系模式中存在传递依赖,不能达到3NCF。故优化该表为:C1(cno,period),C2(
10、cname,cperiod).从而两表都达到了3NCF。专业表 P (pno,pname,pnum,pdept)该关系模式的码为pno,pname,其中设定pno为主码。同课程表,该表不存在有两个或者两个以上属性组成的码,即不存在非主属性对码的部分函数依赖,故可达到2NCF。另外,此关系模式的函数依赖为:pno-pname, pno- pnum, pno - pdept , pname - pno, pname-pnum, pname - pdept; 由于存在传递依赖:pno - pname, pname-pnum, pno - pnum., 所以未能达到3NCF。优化分解为:P1 (pno
11、,pnum,pdept), P2 (pname,pnum,pdept)明显,两表都达到了3NCF.课程设置表PC(pno,psenior,cno),该关系模式的码为:(pno,psenior,cno)为全码,所以可直接达到3NCF学生选课表 SC(sno,psenior,cno,grade)该关系模式的码为:(sno,psenior,cno),因为不存在非主性grade对码的部分函数依赖,所以可达到2NCF,由于不存在函数依赖(表中的函数依赖只有(sno,psenior,cno)- grade)故也达到了3NCF属于表 SP(sno,pno)该关系模式的码(sno,pno)也是全码,所以也达到
12、了3NCF用户表 U(uname,upasw)该表的码为uname,明显upasw对码uname是完全函数依赖的,从而达到2NCF。另外因为只有两个属性,所以不存在传递函数依赖,该表达到了3NCF3 物理结构设计(1)基本表学生表s列名主码候选码外码被参照表允许空数据类型约束条件sno是否否无否Char(10)sname否否否无是Char(20)ssex否否否无是Char(2)只可取男或女sbirth否否否无是Char(20)spasw否否否无是Char(10)课程表 c1列名主码候选码外码被参照表允许空数据类型约束条件cno是否否无否Char(10)cperiod否否否无是smallint课
13、程表c2列名主码候选码外码被参照表允许空数据类型约束条件cname是否否无否Char(20)cperiod否否否无是smallint专业表p1列名主码候选码外码被参照表允许空数据类型约束条件pno是否否无否Char(10)pnum否否否无是smallintPnum =0psdept否否否无是Char(20)专业表p2列名主码候选码外码被参照表允许空数据类型约束条件pname是否否无否Char(20)Pnum否否否无是smallintPnum =0psdept否否否无是Char(20)课程设置表 pc列名主码候选码外码被参照表允许空数据类型约束条件Pno是否否无否Char(10)psenior是
14、否否无否Char(10)Cno是否否无否Char(10)学生选课表sc列名主码候选码外码被参照表允许空数据类型约束条件Sno是否否无否Char(10)psenior是否否无否Char(10)Cno是否否无否Char(10)grade否否否无是smallintgrade=0学生与专业属于表sp列名主码候选码外码被参照表允许空数据类型约束条件Sno是否否无否Char(10)Pno是否否无否Char(10)管理人员密码表u列名主码候选码外码被参照表允许空数据类型约束条件uname是否否无否Char(20)upasw否否否无否Char(10)(2)视图,索引a.索引:本数据库中的表除了主键本身生成的主
15、索引外,没有定义其他的索引。在查询时即引用主索引即可。表s的主索引列为:sno表c1的主索引列为:cno表c2的主索引列为:cname表p1的主索引列为:pno表p2的主索引列为:pname表sc的主索引列为:(pno,psenior,cno)表sp的主索引列为:(sno,pno)表u的主索引列为:unameb视图:虽然关系数据模型分析的结果表示该数据库需要定义不同的用户视图,但考虑到数据库与前台开发程序的连接比较复杂,所以该数据库中没有单独定义用户视图,不同的用户视图被有选择性的的select语句的结果集取.2系统功能设计图 1 学籍管理系统界面(1)图 2 学籍管理系统界面(2)图 3 学
16、籍管理系统界面(3)图 4 学籍管理系统界面(4)图 5 学籍管理系统界面(5)第四章 系统测试方案1. 建立数据库模式、视图及索引以下将对数据库进行实现,实现的环境为 SQL SERVER2000。create database Expulsionon( name=Expulsion, filename=D:TestSQLExpulsionexpulsion.mdf, size=5, filegrowth=10%, maxsize=10 )log on( name=expulsion_log, filename=D:TestSQLExpulsionexpulsion_log.ldf, siz
17、e=5, filegrowth=10%, maxsize=10)gouse Expulsiongo(1). 建立管理员表create table tb_Admin( admin_ID int identity, admin_User varchar(10) not null, admin_Pass varchar(20) not null, admin_Perm int not null, constraint pk_Admin primary key (admin_ID)go (2). 登陆日志表create table tb_Log( log_ID int identity, log_Us
18、ID int, log_Time smalldatetime default getDate(), log_IP varchar(16), constraint pk_Log primary key (log_ID), constraint fk_Log_Admin foreign key (log_UsID) references tb_Admin(admin_ID),)go(3). 院系表create table tb_Department( depart_ID int, depart_Name varchar(40) not null, -院系名 depart_Dire varchar(
19、10), -系主任 depart_Note varchar(200), constraint pk_Depart primary key (Depart_ID),)go(4). 课程表create table tb_Course( course_ID int, course_Name varchar(20), course_PrNo int , -先行课号 course_credit int not null, course_Note varchar(200),-备注 constraint pk_Course primary key (course_ID), constraint fk_Cou
20、rse foreign key (course_PrNo) references tb_Course(course_ID)go(5). 专业表create table tb_Professional( prof_ID int, prof_DeID int,-院系编号 prof_Name varchar(40),-专业名 prof_Note varchar(200) constraint pk_Prof primary key (prof_ID), constraint fk_Prof_Depart foreign key (prof_DeID) references tb_Department
21、(depart_ID) on delete cascade on update cascade,)go(6). 班级表create table tb_Class( class_ID int, class_Year varchar(4) default Year(getDate(),-入学年份哪一级的 class_PrID int,-专业编号 class_Name varchar(40), class_Inst varchar(10),-指导员instructor class_Note varchar(200), constraint pk_Class primary key (class_ID
22、), constraint fk_Class_Prof foreign key (class_PrID) references tb_Professional(prof_ID) on delete cascade on update cascade, )go(7). 学生信息表create table tb_Information( info_No varchar(20), info_Name varchar(10), info_Sex char(2) check(info_Sex in(男,女), info_Birt varchar(10), info_NaFa varchar(8) def
23、ault 汉族, info_Bipl varchar(10) default 山东省,-籍贯 info_Addr varchar(50), info_Post char(6), -邮政编码 info_Tele varchar(20), info_ID char(18),-返回不带前导空格(LTrim)、后续空格(RTrim) 或前导与后续空格(Trim) 的字符串副本。 info_PoLa varchar(10) check( rtrim(info_PoLa) in (其他, 群众,共青团,中共党员), info_Phot varchar(100), info_Year varchar(10)
24、,-入学时间 info_Depa int, -院系 info_Prof int, -专业 info_Clas int, -班级 info_Note varchar(1000), constraint pk_Info primary key(info_No), constraint fk_Info_clas foreign key (info_Clas) references tb_Class (Class_ID) on delete cascade on update cascade,) go(8). 学生成绩表create table tb_Result( resu_ID int,-成绩编号
25、 resu_CoID int,-课程号 resu_Year varchar(4), -年份 resu_Term char(2) check(resu_Term in (上,下),-学期 resu_Scor int not null default 0, constraint pk_Resu primary key(resu_ID,resu_CoID), constraint fk_Resu_Cour foreign key (resu_CoID) references tb_Course(Course_ID) on delete cascade on update cascade,) Go2.
26、 装载数据use Expulsiongo插入用户表insert tb_Admin (admin_Pass,admin_Perm,admin_User) values (123,1,cache)-0普通用户,管理员go插入登录日志表insert tb_Log (log_UsID,log_IP) values (1,192.168.1.109)go插入系院表insert tb_Department (depart_ID,depart_Name,depart_Dire,depart_Note)values (1,信息工程学院,韩剑 ,青岛滨海学院)go插入课程表insert tb_Course (c
27、ourse_ID,course_Name,course_PrNo,course_credit,course_Note)values(1,数据库原理,1,2,一门重要的课程)go插入专业表insert tb_Professional (prof_ID,prof_DeID,prof_Name,prof_Note)values (1,1,软件工程,09软件工程)go插入班级表insert tb_Class (class_ID,class_Inst,class_Name,class_PrID,class_Year,class_Note)values (2,曹锋,09软件工程,1,09,)go插入学生信
28、息表insert tb_Information(info_No,info_Name,info_Sex,info_Birt,info_NaFa,info_Bipl,info_Addr,info_Post,info_Tele,info_Year,info_Depa,info_Prof,info_Clas)values(,曹锋,男,1988-12-6,汉族,山东省,潍坊市,2009-9-1,1,1,2)go插入成绩表insert tb_Result(resu_ID,resu_clas,resu_CoID,resu_Year,resu_Term,resu_Scor)values(1,2,1,2009,
29、下,90)go插入奖惩表insert tb_RewardPunishment (rePu_Type,rePu_Time,rePu_Note)values(奖励,2009-1-1,*)go插入联系表tb_Prof_Courinsert tb_Prof_Cour (course_ID,prof_ID) values(1,1)go插入联系表tb_Info_RePuinsert tb_Info_RePu (info_No,rePu_ID) values(,1)go插入联系表tb_Info_Resuinsert tb_Info_Resu (info_No,resu_ID,resu_CoID) value
30、s(,1,1)JAVA程序package ms;import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.TextArea;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.ImageIcon
31、;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;public class AdminGUIJDialog log=null;/管理员登陆主窗口JPanel jp1=null;/用于存放管理员登陆标签 和 jp5JPanel jp2=null;/用于存放查询 修改 增加 删除 按钮JPanel jp3=null;/用于存
32、放信息块 和jp5JPanel jp4=null;/用于存放 修改 插入 删除 按钮JPanel jp5=null;/用于存放请输入学号 文本框JLabel jadminLog=null; /管理员登陆标签JLabel jLabel=null; /请输入学号 标签TextField tf=null;/请输入学号 文本框JButton jb1=null;/查询 按钮JButton jb2=null;/修改 按钮JButton jb3=null;/增加 按钮JButton jb4=null;/删除按钮JButton jb5=null; /列出全部学生信息JButton jb6=null; /退出T
33、extArea ta=null;/信息文本框JLabel jl=null; /用于站位String id=null; /用于保存用户输入查询学号TextField jtf = new TextField9 ;JDialog jdialog=null;public AdminGUI(JFrame log)super();this.log = new JDialog(log,管理员登陆,true);jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();jp4=new JPanel();jp5=new JPanel();jadminLog=new JL
34、abel(new ImageIcon(image/admin.jpg);jLabel=new JLabel(请输入学号);tf=new TextField();jb1=new JButton(查询);jb2=new JButton(修改);jb3=new JButton(增加);jb4=new JButton(删除);jb5=new JButton(全部学生信息);jb6=new JButton(退出);ta=new TextArea(点击查询按钮将在此显示查询信息);jl=new JLabel();public void adminGo()BorderLayout bl=new Border
35、Layout();bl.setVgap(30);bl.setHgap(30);log.setLayout(bl);log.add(jp1,BorderLayout.NORTH);BorderLayout bl1=new BorderLayout();bl1.setVgap(20);jp1.setLayout(bl1);jp1.add(jadminLog,BorderLayout.CENTER);jp5.setLayout(new GridLayout(1,2,200,200);jp5.add(jLabel);jp5.add(tf);log.add(jp2,BorderLayout.WEST);
36、jp2.setLayout(new GridLayout(1,1,20,300);log.add(jp3,BorderLayout.CENTER);jp3.setLayout(new BorderLayout(10, 10);jp3.add(jp5,BorderLayout.NORTH);jp3.add(ta);jp5.setLayout(new GridLayout(1,5,10,10);jp5.add(jLabel);jp5.add(tf);log.add(jp4,BorderLayout.SOUTH);jp4.setLayout(new GridLayout(1,3,20,30);jp4
37、.add(jb5);jp4.add(jb1);jp4.add(jb2);jp4.add(jb3);jp4.add(jb4);jp4.add(jb6);log.addWindowListener(new WindowAdapter()Overridepublic void windowClosing(WindowEvent e)System.exit(0););jb1.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e)AdminGUI.this.id=AdminGUI.this.tf.getText();Select sel=new Select();sel.selectStudent(AdminGUI.this.id);if(sel.getStudent()!=null)Student student=sel.getStudent();AdminGUI.this.ta.setText(学号tt+姓名tt+性别tt+出生日期tt+民族tt+籍贯tt+专业tt+班级tt+联系电话tt+密码tt);AdminGUI.this.ta.append(n+student.getId()
限制150内