《J2SE程序设计》课程
“学生信息管理系统”的设计与实现
任
务
书
2016年10月
1
“学生信息管理系统”的设计与实现 (共26学时)
任务一:“学生信息管理系统”概要设计
一、任务内容
1、“学生信息管理系统”需求分析。
2、“学生信息管理系统”概要设计。
二、任务目标
1、知道概要设计的主要内容;
2、掌握概要设计的主要原则及方法;
3、能按软件工程规范进行应用系统需求分析;
4、能进行软件模块的正确划分;
5、提升学生自主学习和团队合作的意识;
6、帮助学生养成良好严谨的工作习惯。
三、任务环境
1、操作系统:Windows XP 或Windows7
2、开发环境:MyEclipse 8.5 ,Rational Rose 2003
3、数据库服务器:SQL Server2005或MySQL 5.0
四、任务实施
1、“学生信息管理系统”需求分析
“学生信息管理系统”需要实现的功能有:
(4)
2、“学生信息管理系统”概要设计
概要设计阶段主要是粗略描述整个软件的框架,并从业务的角度描述软件的模块、工作流程等。项目的成功取决于设计的好坏,而概要设计则是整个设计的
2
关键部分。概要设计的主要任务是将用户的需求划分为不同的功能,然后将这些功能细分成模块,并给模块一些规则约束,以达到各个模块之间可以相互交流的目的。概要设计关乎到系统的整体架构,因此想做好一个概要设计,不仅仅要熟悉用户的业务流程,还要具备相当丰富的设计经验。
概要设计是根据系统分析的需求和工作环境的情况对整个软件的总体结构进行大致的设计。概要设计要坚持以下几个原则。
(1)细分原则:软件系统都是由很多不同的模块组成,当设计一套软件时,要先将所有的功能分解。解决复杂问题的方法是将其分解成几个小问题,一个个来解决。
(2)提高代码重用性:在面向对象设计中,首先考虑的就是代码的重用,一个好的设计,将来在升级换代时不需要太大的改动,节省了人力物力。
(3)从上而下层层分析:概要设计要从整体出发,逐个剖析软件的功能,从上而下,先分析系统总的功能,然后一步步细分,直到最小的功能模块。
(4)一致性原则:概要设计要求所有功能模块在定义时使用统一的规范。
(5)提高独立性,减少耦合:各个模块与模块之间尽量减少关联,否则修改一个地方就会引起其他多处的变动,不符合面向对象的原则。一般情况下,对类封装后,只允许对类进行扩展,而不能修改,而封装的类必须具有单一职责,既理论情况下不允许两个类共同完成一个功能。
(6)模块的大小要尽量适中:不是结构算法越复杂的模块越好,模块的大小要根据实际工作目标和其他类的耦合紧密程度来决定。经验表明,一个模块的规模不应过大,模块的总行数应控制在10~100行的范围内,最好为30~60行,这样理解和阅读都较方便。过长的模块往往是分解不充分的表现,会增加阅读理解的难度;但小规模太多也会使模块之间联系变得复杂,增大系统在模块调用时传递信息所花费的开销。
由于概要设计是整个设计的重中之重,牵一发而动全身,所以要努力做一个好的概要设计,才能在今后软件开发过程中不再反复。现在软件行业流行模式化驱动设计,将一些市场上比较成功的模式拿来用在自己的设计中。
(1)请根据概要设计的原则来分析一下本项目的用户需求,并最终转化成用程序语言描述的模块。
3
(2)请根据“学生信息管理系统”模块划分情况,进行“学生信息管理系统”UML软件建模。
(3)完成“学生信息管理系统”主菜单结构设计。
管理员参考用例图如下:
4
五、评价
5
任务二:“学生信息管理系统”数据库设计
一、任务内容
1、“学生信息管理系统”数据库设计。
2、“学生信息管理系统”数据库模块的设计。
二、任务目标
1、了解数据库系统的基本概念、体系结构;
2、知道关系数据库的规范化理论;
3、掌握应用系统数据库设计方法;
4、能进行应用系统数据库结构设计;
5、帮助学生养成良好严谨、精益求精的工作作风。
三、任务环境
1、操作系统:Windows XP 或Windows7
2、开发环境:MyEclipse 8.5 ,Rational Rose 2003
3、数据库服务器:SQL Server2005或MySQL 5.0
四、任务实施
1、按如下要求,完成数据库的设计:
数据库名称:student
表名:user, stud
表user:存放登陆用户的用户名和密码
表stud:存放学生基本信息
学生表(stus)
请简要描述数据库创建及规范化过程:
6
2、按如下要求,完成数据库模块的设计:
将数据库的连接包装在一个database类中,以便其他模块能够轻松调用,避免每次重写数据库连接代码。
import java.sql.*;//引入包
public class database {
public static Connection cn; //定义一个连接对象
public static Statement st;//定义一个SQL语句对象
public static ResultSet rs;//定义一个数据集
public static boolean joinDB() {//用来判断是否连接成功
boolean joinFlag;
try {
joinFlag = true;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//通过调用java.lang中的Class类的forName方法来实现JDBC—ODBC桥接器
cn = DriverManager.getConnection("jdbc:odbc:student","sa","");创建一个连接对象 cn.setCatalog("student");//加载数据库
System.out.println("数据库连接成功");
st = cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
//返回一个可滚动的结果集,数据库变化时结果集跟着变化 ;不能用结果集更新数据库中的表
return joinFlag;
} catch (SQLException sqlEx) {
System.out.println(sqlEx.getMessage());
joinFlag = false;
return joinFlag;
} catch (ClassNotFoundException notfoundEX) {
System.out.println(notfoundEX.getMessage());
joinFlag = false;
return joinFlag;
}
}
public static boolean executeSQL(String sqlString) {
boolean executeFlag;
7
try {
st.execute(sqlString);
executeFlag = true;
} catch (Exception e) {
executeFlag = false;
System.out.println("sql exception:" + e.getMessage());
}
return executeFlag;
}
public static boolean query(String sqlString) {
try {
rs = null;
rs = st.executeQuery(sqlString);
} catch (Exception Ex) {
System.out.println("sql exception:" + Ex);
return false;
}
return true;
}
}
请简要描述数据库模块的创建过程及遇到的问题和解决方法:
8
五、评价
9
任务三:用户管理模块详细设计
一、任务内容
1、“用户登录识别”模块的设计与实现。
2、“用户信息管理”模块的设计与实现(密码修改、用户信息添加和删除功能等)。
二、任务目标
1、理解面向对象程序设计的基本概念;
2、知道J2SE应用程序GUI界面设计步骤;
3、能进行J2SE应用程序界面设计;
4、能根据实际需求,完成应用程序模块代码编写与调试;
5、提升应用系统开发过程中学生自主学习和团队合作的意识;
6、培养学生良好严谨的工作作风和软件开发可持续发展能力。
三、任务环境
1、操作系统:Windows XP 或Windows7
2、开发环境:MyEclipse 8.5 ,Rational Rose 2003
3、数据库服务器:SQL Server2005或MySQL 5.0
五、任务实施
1、“用户登录识别”模块的设计与实现。
代码封装在类Land里,所用到的信息保存在表user里
下表是他的基本属性
10
判断用户名和密码是否正确的成员方法参考代码:
private void Judge(String sqlString) {
if (database.joinDB()) { //如果数据库连接成功
if (database.query(sqlString)) //如果SQL语句执行成功
try{
if(database.rs.isBeforeFirst()) {//如果指向记录集的在第一条记录的前面System.out.println("密码正确");
jf.setVisible(false);//窗体不可见
database.cn.close();//关闭数据库连接
new Main();//主窗体
}
else {
System.out.println("错误");
new JOptionPane().showMessageDialog(null,"用户名或密码错误!","",JOptionPane.ERROR_MESSAGE);
}
}catch(Exception ex) {
System.out.println(ex.getMessage());
}
}
else{
System.out.println("连接数据库不成功!!!");
}
}
按钮“确定”的监听事件参考代码:
public void actionPerformed (ActionEvent e){
if(textname.getText().equals("")){
new JOptionPane().showMessageDialog(null,"用户名不能为空!"); }
else if(textmima.getText().equals("")){
new JOptionPane().showMessageDialog(null,"密码不能为空!"); }
else{
String sql="select * from user where user_id = '" + textname.getText() + "' and password = '" + textmima.getText()+ "'";
System.out.println(sql);
Judge(sql);//调用成员方法,判断是否用户名和密码正确
}}
在“用户登录识别”模块开发过程中,你遇到了哪些问题?是怎么解决的?
11
遇到的问题:
解决方法:
2、“用户信息管理”模块的设计与实现。
(1) 密码修改功能
用户名将自动从表user里检索出来,供用户选择
以下是它的基本属性
读取用户名参考代码如下:
database.joinDB();//连接数据库
String sql="select * from user";
try{
if(database.query(sql)){
while(database.rs.next()){//依次将用户名读出
12
String name=database.rs.getString("user_id");
tf.addItem(name);
}
}
}
catch(Exception e){}
确定“按钮”的监听事件参考代码如下:
b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String name="" + tf.getSelectedItem();
System.out.println(name);
String sql="select * from user where user_id='"+ name +"'";
System.out.println(sql);
try{
if(database.query(sql)){
database.rs.next();
String ps1=pas1.getText();
String password=database.rs.getString("Password");
if(ps1.equals(password)){
if(pas2.getText().equals(pas3.getText())){
String supdate="update user set password='"+ pas3.getText()+"' where user_id='"+ name +"'";database.executeSQL(supdate);
new JOptionPane().showMessageDialog(null,"密码更改成功!"); }
else{
new JOptionPane().showMessageDialog(null,"两次密码不同!"); }
}
else{
new JOptionPane().showMessageDialog(null,"旧密码不正确!"); }
}
}
catch(Exception el){
System.out.println(el);
}
}
});
(2)用户信息添加和删除功能
13
上半部分用来添加用户,下半部分用来删除用户
database.joinDB();
String sql="select * from user";
try{
if(database.query(sql)){
while(database.rs.next()){//记录集若有记录则通过循环将数据依次读出 String name=database.rs.getString("user_id");
cbUserName.addItem(name);
}
}
}
catch(Exception e){}
添加按钮事件参考代码如下:
butOk.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(txtname.getText().equals("")){//判断是否为空
new JOptionPane().showMessageDialog(null,"用户名不能为空!"); }
else if(pas1.getText().equals("")){
new JOptionPane().showMessageDialog(null,"密码不能为空!");
14
www.99jianzhu.com/包含内容:建筑图纸、PDF/word/ppt 流程,表格,案例,最新,免费下载,施工方案、工程书籍、建筑论文、合同表格、标准规范、CAD图纸等内容。