您的当前位置:首页正文

学生信息管理系统课程设计报告

2022-03-20 来源:个人技术集锦


课设名称: 学生信息管理系统 院 (系): 信息科学与工程学院 * 名: *** 学 号: 1406 年 级: 2014级 专业班级: 计算机科学与技术4班 指导教师: *** 时 间: 2016年11月

目录

第一部分 摘 要 ................................................. 2 第二部分 目的背景与意义 .......................... 错误!未定义书签。 第三部分 需求分析 ................................ 错误!未定义书签。 第四部分 系统设计 ................................ 错误!未定义书签。

结构设计 .................................... 错误!未定义书签。 功能结构图 .................................. 错误!未定义书签。 功能流程以及工作流描述 ...................... 错误!未定义书签。 第五部分 数据库的设计 ............................ 错误!未定义书签。

数据库设计 ................................... 错误!未定义书签。 数据表的设计 ................................. 错误!未定义书签。 第六部分 详细设计 ............................................... 7

学生管理系统主界面模块 ...................... 错误!未定义书签。 学生信息管理模块 ............................ 错误!未定义书签。 课程信息管理模块 ............................ 错误!未定义书签。 查询模块 .................................................. 11 图 数据库操作模块 .......................................... 11 第七部分 课程设计心得 .......................................... 11

第一部分 摘 要

该项目开发的软件为学校学生信息管理系统软件,是鉴于目前学校学生人数剧增,学生信息呈爆炸性增长的前提下,学校对学生信息管理的自动化与准确化的要求日益强烈的背景下构思出来的,该软件设计完成后可用于所有教育单位(包括学校,学院等等)的学生信息的管理。

目前社会上信息管理系统发展飞快,各个企事业单位都引入了信息管理软件来管理自己日益增长的各种信息,学生管理系统也是有了很大的发展,商业化的学生信息管理软件也不少,但本系统完全独立开发,力求使系统功能简洁明了,但功能齐全且易于操作。

学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。

本文介绍了学生信息管理系统的开发整个过程,阐述了系统分析、系统设计、数据库设计和系统实施的全过程。在开发方法上本系统利用了软件工程化的思想和方法,总体上采用结构化生命周期开发方法,具体模块实施采用了原型法和面向对象系统开发方法。并采用JAVA作为开发工具,mysql作为后台数据库。本系统具有学生管理、课程管理、成绩管理、信息查询等功能,分成四大模块,每个模块都相互联系,但不相互干扰,这符合了软件模块开发的思想。

本系统完成了学生信息的增加、修改、删除、查询和选课,课程信息的增加、修改、删除、查询,成绩的添加、修改、查询等功能。

【关键字】:

信息管理系统、模块设计、软件工程。

第二部分 目的背景与意义

学生信息管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要,所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差,人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着来越重要的作用。

作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。

第三部分 需求分析

学生信息管理系统的功能总结起来,共需要以下几个方面: 1. 学生信息管理

管理所有学生的基本信息,包括增加、修改、删除等,也可以根据各种条件查询出需要的信息。 2. 课程信息管理

管理所有课程的基本信息,包括增加、修改、删除等,也可以根据各种条件查询出需要的信息。 3. 选课与成绩管理

根据学号进行选课,登记课程的成绩,可以根据学号查询出来选课信息与成绩。

第四部分 系统设计

结构设计

根据对系统的需求分析,本系统将分为4个模块: 学生管理:

管理学生的基本信息,包括个人信息的添加、修改、删除,以及选课信息的添加。 课程管理:

管理课程的基本信息,包括课程信息的添加、修改和删除。 成绩管理:

管理学生的选课的成绩信息,包括成绩的登记与修改。 信息查询:

查询已经登记的信息,包括学生的基本信息、课程的基本信息与成绩信息。

功能结构图

系统的功能结构如图1所示。

增加 学生管理修改 删除 学生选课 学生管理系统课程管理 增加 修改 删除 功能流程以及工作流描述

1. 增加学生信息

成绩管理 增加 修改 按学号查询 按姓名查询 按专业查询 按性别查询 按学院查询 学生查询 信息查询 按课程名称查询 课程查询 按授课教师查询 查询所有成绩成绩查询 按学分绩点查询 按单科成绩查询 图1 学生管理系统功能结构图

系统操作人员打开学生信息添加界面,输入相关的信息(姓名、性别、民族、籍贯、出生日期、入学年份、专业和学院等),在数据库中添加相关数据。 2. 修改学生信息

根据学生的学号查询出该学生的相关信息,修改相关条目后保存在数据库中。 3. 删除学生信息

根据学生的学号查询出该学生的相关信息,确定删除后,在数据库中删除该信息。 4. 学生选课

选择学生学号与需要选择的课程,确定无误后保存,数据库中将自动添加新的选课记录。 5. 增加课程信息

系统操作人员根据打开的课程增加界面,输入相关信息(课程名称、授课教师、课程学分、课程系数、上课地点等),在数据库中添加相关的数据。 6. 修改课程信息

根据课程号查询出该课程的相关信息,修改条目后保存在数据库中。 7. 删除课程信息

根据课程号查询出该课程的相关信息,确认删除后,在数据库中删除该信息。 8. 登记成绩

根据学号,以及该学生所选择的课程,进行成绩登记,为选课的同学将无法登记。 9. 修改成绩

对已经登记的成绩信息进行修改。 10. 学生查询

可以根据学生学号、学生姓名、学生性别、学生所学专业、学生所属学院来对学生信息进行查询,所有符合查询条件的学生信息将都被显示出来。 11. 课程查询

按照课程名称和授课教师的名称对课程详细信息进行查询,所有符合查询条件的课程信息都将会被显示出来。 12. 成绩查询:

根据学生的学号来查询该学生所有课程的成绩。

第五部分 数据库的设计

数据库设计

此系统使用的是mysql数据库,由于此系统需要的数据量不是很大,所以选择比较简便的mysql数据库。此系统的数据库名称是studentsys,创建语句如下:

数据表的设计

数据库中包含三个表,即是学生信息表(student)、课程信息表(Course)和学生选课表(SC),设计要求如表1~3所示。

表1 学生信息表(Student)

名称 学号 学生姓名 性别 民族 籍贯 入学年份 专业 学院 出生日期 学分绩点 字段名称 Snum Sname Ssex Sethnic Shome Syear Smajor Scollege Sbirth Spoint 数据类型 Varchar(20) Varchar(10) Varchar(2) Varchar(4) Varchar(20) Varchar(10) Varchar(10) Varchar(10) Varchar(10) Varchar(10) 表2 课程信息表(Course)

名称 课程编码 课程名称 字段名称 Cnum Cname 数据类型 Varchar(10) Varchar(20) 主键 Yes No 非空 Yes No 主键 Yes No No No No No No No No No 非空 Yes No No No No No No No No No 授课教师 上课地点 课程学分 课程系数 Cteacher Cplace Cpoint Cratio Varchar(10) Varchar(10) Smallint Varchar(2,2) 表3 学生选课表(SC)

No No No No No No No No 名称 学号 课程编码 成绩 字段名称 Snum Cnum Grade 数据类型 Varchar(20) Varchar(10) Float(4,2) 主键 Yes Yes No 非空 Yes Yes No 第六部分 详细设计

该系统由6个模块构成,包括学生管理系统主界面模块、学生信息管理模块、课程信息管理模块、成绩管理模块、信息查询模块和数据库操作模块,以下分别加以叙述:

学生管理系统主界面模块

学生管理系统的主界面模块包括和两个文件。StuMS是学生管理系统的主运行类,其中

有整个程序的主方法main,该文件生成了StuMain类的一个实例,从而生成了学生管理系统的主界面,如图2所示。StuMain类继承了JFrame类,实现了事件监听接口,它有一个不带参数的构造函数StuMain(),用来生成StuMain实例,StuMain类将所有的功能集中到面板中,面板上的按键是按网格排布,生成按钮,通过按钮的响应函数调用其他模块的函数来实现学生管理系统的各个功能,以下是主界面的运行程序:

图 主界面运行程序

学生信息管理模块

学生信息管理模块主要由、、、、和这六个文件组成,每个java文件只有一个类,完全实

现模块化设计,StuInfo类是AddStuInfo、EditStuInfo、DelStuInfo的超类,因为这三个类生成的界面是相同的具有共同之处。SelectCourse模块是选课模块,StuInfoSearchSnum是查询模块,用于AddStuInfo、EditStuInfo、DelStuInfo调用来查询学生信息以便增加、修改和删除学生信息。

学生信息管理模块的几个界面如下:

图 学生信息添加界面

图 学生信息修改界面

图 学生信息删除界面

图 学生选课界面

课程信息管理模块

课程信息管理模块主要由、、、和这六个文件组成,每个java文件只有一个类,完全实

现模块化设计,CourseInfo类是AddCourseInfo、EditCourseInfo、DelCourseInfo的超类,因为这三个类生成的界面是相同的具有共同之处。CourseInfoSearchSnum是查询模块,用于AddCourseInfo、EditCourseInfo、DelCourseInfo调用来查询课程以便增加、修改和删除课程。

课程信息管理模块的几个界面如下:

图 课程信息增加界面

图 课程信息修改界面

图 课程信息删除界面

查询模块

查询模块分学生信息查询、课程信息查询和成绩查询: 界面如下:

图 查询模块

图 数据库操作模块

数据库操作模块包括连接数据库和数据库操作,连接数据库在类中,操作数据库类分别在几个不同的类里,学生信息操作在,选课操作在中,课程操作在中,代码在附录里,这里就不重复了。

第七部分 课程设计心得

在本系统的开发过程中,由于本人是初次开发软件,在知识、经验方面都存在着不足。另外,在整个开发的过程中,时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。因为对学生信息管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。

尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。通过开发这个系统,我掌握了的项目基本开发过程,用到的知识巩固了我对JAVA的学习,但在这次设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。

第八部分 附录(部分代码)

;

import * 连接数据库的类 */

public class Database {

private Statement stmt=null; ResultSet rs=null;

private Connection conn=null; String sql;

String strurl=\"jdbc:\"; public Database(){ } /**

* 打开数据库连接 */

public void OpenConn()throws Exception{ } /**

* 执行sql语句,返回结果集rs */

public ResultSet executeQuery(String sql){ } /**

stmt = null; rs=null; try{ }

catch(SQLException e){ }

return rs;

\"executeQuery:\"+()); ();

stmt=,;

try{ }

catch(Exception e){ }

\"OpenConn:\"+()); (); (\"\");

conn=(strurl,\"root\ (false);

rs=(sql);

* 执行sql语句 */

public int executeUpdate(String sql){

stmt=null;

rs=null; int k=0;

}

try{ }

catch(SQLException e){ }

return k;

\"executeUpdate:\"+()); ();

stmt=,;

k=(sql); ();

public void closeStmt(){ } /**

* 关闭数据库连接 */

try{ }

catch(SQLException e){ }

\"closeStmt:\"+()); ();

}

public void closeConn(){ } /*

*转换编码 */

public static String toGBK(String str){ }

try { }

catch (Exception e) {

return str;

if(str==null)

str = \"\";

try{ }

catch(SQLException ex){ }

\":\"+()); ();

else

str=new String(\"ISO-8859-1\"),\"GBK\");

;

import .*; import .*; /**

* 有关学生信息数据库操作的类 */

public class StuBean {

String sql;

ResultSet rs = null; String sNum; String sName; String sSex; String sBirth; String sHome; String sEthnic; String sYear; String sMajor; String sCollege; String sCourse;

String colName; from course where ='\"+sCourse+\"'\";

String sql3 = null; try{

();

rSet = (sql1); if()){

row = ();

}

if(row == 0){ } else{

(); ();

LinCNUM = null;

}

while()){ }

LinCNUM = (\"cnum\");

String sql2 = \"select from sc where

='\"+LinCNUM+\"' order by desc\"; rrSet = (sql2); if()){

row = ();

}

if(row == 0){ snnStrings = null;

} else{ i = 0;

snnStrings = new String[row]; sn = new String[row][9]; \"\"+row); (); (); while()){ snnStrings[i] = (\"snum\");

sql3

=

\"select

*

snum='\"+snnStrings[i]+\"'\"; rs = (sql3);

while()){

sn[j][0] = (\"snum\");

from

student

where

}

}

}

}

sn[j][1] = (\"sname\"); sn[j][2] = (\"ssex\"); sn[j][3] = (\"sethnic\"); sn[j][4] = (\"shome\"); sn[j][5] = (\"syear\"); sn[j][6] = (\"smajor\"); sn[j][7] = (\"scollege\"); sn[j][8] = (\"sbirth\"); j++;

} i++;

catch(Exception e){ }

finally { }

return sn (); (); ();

public String[][] stuSearchBypoint(){

String sCourse = \"编译原理\"; ResultSet rSet,rrSet;

String LinCNUM = null;

Database DB = new Database(); String[][] sn = null; String[] snnStrings = null; int row = 0; int i = 0; int j = 0;

String

sql1

=

\"select

course.*

from

course

='\"+sCourse+\"'\"; String sql3 = null; try{ ();

rSet = (sql1); if()){

row = ();

}

if(row == 0){ LinCNUM = null;

} else{

(); (); while()){ LinCNUM = (\"cnum\");

}

}

String sql2 = \"select

from sc where

where

='\"+LinCNUM+\"' order by desc\"; rrSet = (sql2); if()){ row = ();

}

if(row == 0){ snnStrings = null; } else{ i = 0;

snnStrings = new String[row]; sn = new String[row][9]; \"\"+row); (); (); while()){ snnStrings[i] = (\"snum\");

sql3

=

\"select

*

from

snum='\"+snnStrings[i]+\"'\"; rs = (sql3); while()){ sn[j][0] = (\"snum\"); sn[j][1] = (\"sname\"); sn[j][2] = (\"ssex\"); sn[j][3] = (\"sethnic\"); sn[j][4] = (\"shome\");

sn[j][5] = (\"syear\");

student

where

}

}

}

sn[j][6] = (\"smajor\"); sn[j][7] = (\"scollege\"); sn[j][8] = (\"sbirth\"); j++;

} i++;

}

catch(Exception e){ }

finally { }

return sn;

(); (); ();

/**

* 获得新的学号 */

/*public int getStuId(){

Database DB = new Database();

sql = \"select max(snum) from student\"; try{

();

rs = (sql);

}

if()){ } else

stuId = 1; stuId = (1) + 1;

catch(Exception e){ }

finally { }

return stuId;

(); ();

}*/

/**

* 获得student表中的所有学号snum */

public String[] getAllId(){

String[] s = null; int row = 0; int i = 0;

Database DB = new Database(); sql = \"select snum from student\"; try{

();

rs = (sql);

} ;

}

}

if()){ }

if(row == 0){ } else{ }

s = new String[row]; (); (); while()){ }

s[i] = (1); i++; s = null; row = ();

catch(Exception e){ }

finally { }

return s;

(); (); ();

import .*; import .*; /**

* 学生管理系统主界面 */

public class StuMain extends JFrame implements ActionListener{

dd(bgLabel, new Integer);

(0,0,600,400);

((JPanel)getContentPane()).setOpaque(false); try {

(600,400); (300,300); (false);

(new GridBagLayout()); ;

Container mPanel = ();

GridBagConstraints c = new GridBagConstraints(); = new Insets(10,0,0,10); = 0; = 0; = 10; = ; = ; (J1,c); = 0; = 1; = 1;

= ; = ; (J2,c); = 0; = 2; = 1; = ; = ; (J3,c); = 0; = 4; = 1; = ; = ; (J4,c); = 1; = 0; = 1; = ; = ;

(buttonAddS,c); = 2; = 0; = 1; = ; = ;

(buttonEditS,c);

= 3; = 0; = 1; = ; = ;

(buttonDeleteS,c); = 4; = 0; = 1; = ; = ;

(buttonChooseS,c); = 1; = 1; = 1; = ; = ;

(buttonAddC,c); = 2; = 1; = 1; = ; = ;

(buttonEditC,c); = 3; = 1; = 1;

= ; = ;

(buttonDeleteC,c); = 1; = 2; = 1; = ; = ;

(buttonAddG,c); = 2; = 2; = 1; = ; = ;

(buttonEditG,c); = 1; = 3; = 1; = ; = ; (J5,c); = 2; = 3; = 1; = ; = ;

(buttonSearchStuBySnum,c);

= 3; = 3; = 1; = ; = ;

(buttonSearchStuBySname,c); = 4; = 3; = 1; = ; = ;

(buttonSearchStuBySsex,c); = 5; = 3; = 1; = ; = ;

(buttonSearchStuBySmajor,c); = 6; = 3; = 1; = ; = ;

(buttonSearchStuByScollege,c); = 1; = 4; = 1;

= ; = ; (J6,c); = 2; = 4; = 1; = ; = ;

(buttonSearchStuByCname,c); = 3; = 4; = 1; = ; = ;

(buttonSearchStuByCteacher,c); = 1; = 5; = 1; = ; = ; (J7,c); = 2; = 5; = 1; = ; = ;

(buttonSearchMutGrd,c);

= 3; = 5; = 1; = ; = ;

(buttonSearchGrdBypoint,c); = 4; = 5; = 1; = ; = ;

(buttonSearchGrdBySimple,c); = 6; = 6; = 1; = ; = ;

(buttonExit,c); ;

/**

* 学生管理系统运行主类 */

public class StuMS {

boolean packFrame = false; /**

* 构造函数 */

public StuMS() { StuMain frame = new StuMain(); if (packFrame) { ();

} else { (); }

etScreenSize();

Dimension frameSize = (); if > { = ; }

if > { = ; }

( - / 2, - / 2); (true);

}

public static void main(String[] args) { //设置运行风格 try {

());

}

catch(Exception e) { ();

}

new StuMS();

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容