学生信息管理系统课程设计报告57057.docx
《学生信息管理系统课程设计报告57057.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统课程设计报告57057.docx(44页珍藏版)》请在冰豆网上搜索。
![学生信息管理系统课程设计报告57057.docx](https://file1.bdocx.com/fileroot1/2022-12/15/21122c6f-da06-4323-a195-b99fee385b00/21122c6f-da06-4323-a195-b99fee385b001.gif)
学生信息管理系统课程设计报告57057
课设名称:
学生信息管理系统
院(系):
信息科学与工程学院
姓名:
蒋登丽
学号:
201410411406
年级:
2014级
专业班级:
计算机科学与技术4班
指导教师:
黄荣兵
时间:
2016年11月
第一部分摘要3
第二部分目的背景与意义4
第三部分需求分析4
第四部分系统设计4
4.1结构设计4
4.2功能结构图5
4.3功能流程以及工作流描述6
第五部分数据库的设计6
5.1数据库设计6
5.2数据表的设计7
第六部分详细设计7
6.1学生管理系统主界面模块7
6.2学生信息管理模块8
6.3课程信息管理模块10
6.4查询模块11
图6.5数据库操作模块11
第七部分课程设计心得11
第八部分附录(部分代码)12
第一部分摘要
该项目开发的软件为学校学生信息管理系统软件,是鉴于目前学校学生人数剧增,学生信息呈爆炸性增长的前提下,学校对学生信息管理的自动化与准确化的要求日益强烈的背景下构思出来的,该软件设计完成后可用于所有教育单位(包括学校,学院等等)的学生信息的管理。
目前社会上信息管理系统发展飞快,各个企事业单位都引入了信息管理软件来管理自己日益增长的各种信息,学生管理系统也是有了很大的发展,商业化的学生信息管理软件也不少,但本系统完全独立开发,力求使系统功能简洁明了,但功能齐全且易于操作。
学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。
本文介绍了学生信息管理系统的开发整个过程,阐述了系统分析、系统设计、数据库设计和系统实施的全过程。
在开发方法上本系统利用了软件工程化的思想和方法,总体上采用结构化生命周期开发方法,具体模块实施采用了原型法和面向对象系统开发方法。
并采用JAVA作为开发工具,mysql作为后台数据库。
本系统具有学生管理、课程管理、成绩管理、信息查询等功能,分成四大模块,每个模块都相互联系,但不相互干扰,这符合了软件模块开发的思想。
本系统完成了学生信息的增加、修改、删除、查询和选课,课程信息的增加、修改、删除、查询,成绩的添加、修改、查询等功能。
【关键字】:
信息管理系统、模块设计、软件工程。
第二部分目的背景与意义
学生信息管理系统是一个教育单位不可缺少的部分。
一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要,所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:
效率低、保密性差,人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着来越重要的作用。
作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理所无法比拟的优点.例如:
检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。
第三部分需求分析
学生信息管理系统的功能总结起来,共需要以下几个方面:
1.学生信息管理
管理所有学生的基本信息,包括增加、修改、删除等,也可以根据各种条件查询出需要的信息。
2.课程信息管理
管理所有课程的基本信息,包括增加、修改、删除等,也可以根据各种条件查询出需要的信息。
3.选课与成绩管理
根据学号进行选课,登记课程的成绩,可以根据学号查询出来选课信息与成绩。
第四部分系统设计
4.1结构设计
根据对系统的需求分析,本系统将分为4个模块:
学生管理:
管理学生的基本信息,包括个人信息的添加、修改、删除,以及选课信息的添加。
课程管理:
管理课程的基本信息,包括课程信息的添加、修改和删除。
成绩管理:
管理学生的选课的成绩信息,包括成绩的登记与修改。
信息查询:
查询已经登记的信息,包括学生的基本信息、课程的基本信息与成绩信息。
4.2功能结构图
系统的功能结构如图1所示。
图1学生管理系统功能结构图
4.3功能流程以及工作流描述
1.增加学生信息
系统操作人员打开学生信息添加界面,输入相关的信息(姓名、性别、民族、籍贯、出生日期、入学年份、专业和学院等),在数据库中添加相关数据。
2.修改学生信息
根据学生的学号查询出该学生的相关信息,修改相关条目后保存在数据库中。
3.删除学生信息
根据学生的学号查询出该学生的相关信息,确定删除后,在数据库中删除该信息。
4.学生选课
选择学生学号与需要选择的课程,确定无误后保存,数据库中将自动添加新的选课记录。
5.增加课程信息
系统操作人员根据打开的课程增加界面,输入相关信息(课程名称、授课教师、课程学分、课程系数、上课地点等),在数据库中添加相关的数据。
6.修改课程信息
根据课程号查询出该课程的相关信息,修改条目后保存在数据库中。
7.删除课程信息
根据课程号查询出该课程的相关信息,确认删除后,在数据库中删除该信息。
8.登记成绩
根据学号,以及该学生所选择的课程,进行成绩登记,为选课的同学将无法登记。
9.修改成绩
对已经登记的成绩信息进行修改。
10.学生查询
可以根据学生学号、学生姓名、学生性别、学生所学专业、学生所属学院来对学生信息进行查询,所有符合查询条件的学生信息将都被显示出来。
11.课程查询
按照课程名称和授课教师的名称对课程详细信息进行查询,所有符合查询条件的课程信息都将会被显示出来。
12.成绩查询:
根据学生的学号来查询该学生所有课程的成绩。
第五部分数据库的设计
5.1数据库设计
此系统使用的是mysql数据库,由于此系统需要的数据量不是很大,所以选择比较简便的mysql数据库。
此系统的数据库名称是studentsys,创建语句如下:
5.2数据表的设计
数据库中包含三个表,即是学生信息表(student)、课程信息表(Course)和学生选课表(SC),设计要求如表1~3所示。
表1学生信息表(Student)
名称
字段名称
数据类型
主键
非空
学号
Snum
Varchar(20)
Yes
Yes
学生姓名
Sname
Varchar(10)
No
No
性别
Ssex
Varchar
(2)
No
No
民族
Sethnic
Varchar(4)
No
No
籍贯
Shome
Varchar(20)
No
No
入学年份
Syear
Varchar(10)
No
No
专业
Smajor
Varchar(10)
No
No
学院
Scollege
Varchar(10)
No
No
出生日期
Sbirth
Varchar(10)
No
No
学分绩点
Spoint
Varchar(10)
No
No
表2课程信息表(Course)
名称
字段名称
数据类型
主键
非空
课程编码
Cnum
Varchar(10)
Yes
Yes
课程名称
Cname
Varchar(20)
No
No
授课教师
Cteacher
Varchar(10)
No
No
上课地点
Cplace
Varchar(10)
No
No
课程学分
Cpoint
Smallint
No
No
课程系数
Cratio
Varchar(2,2)
No
No
表3学生选课表(SC)
名称
字段名称
数据类型
主键
非空
学号
Snum
Varchar(20)
Yes
Yes
课程编码
Cnum
Varchar(10)
Yes
Yes
成绩
Grade
Float(4,2)
No
No
第六部分详细设计
该系统由6个模块构成,包括学生管理系统主界面模块、学生信息管理模块、课程信息管理模块、成绩管理模块、信息查询模块和数据库操作模块,以下分别加以叙述:
6.1学生管理系统主界面模块
学生管理系统的主界面模块包括StuMS.java和StuMain.java两个文件。
StuMS是学生管理系统的主运行类,其中有整个程序的主方法main,该文件生成了StuMain类的一个实例,从而生成了学生管理系统的主界面,如图2所示。
StuMain类继承了JFrame类,实现了事件监听接口,它有一个不带参数的构造函数StuMain(),用来生成StuMain实例,StuMain类将所有的功能集中到面板中,面板上的按键是按网格排布,生成按钮,通过按钮的响应函数调用其他模块的函数来实现学生管理系统的各个功能,以下是主界面的运行程序:
图6.1.1主界面运行程序
6.2学生信息管理模块
学生信息管理模块主要由StuInfo.java、AddStuInfo.java、EditStuInfo.java、DelStuInfo.java、SelectCourse.java和StuInfoSearchSnum.java这六个文件组成,每个java文件只有一个类,完全实现模块化设计,StuInfo类是AddStuInfo、EditStuInfo、DelStuInfo的超类,因为这三个类生成的界面是相同的具有共同之处。
SelectCourse模块是选课模块,StuInfoSearchSnum是查询模块,用于AddStuInfo、EditStuInfo、DelStuInfo调用来查询学生信息以便增加、修改和删除学生信息。
学生信息管理模块的几个界面如下:
图6.2.1学生信息添加界面
图6.2.2学生信息修改界面
图6.2.3学生信息删除界面
图6.2.3学生选课界面
6.3课程信息管理模块
课程信息管理模块主要由CourseInfo.java、AddCourseInfo.java、EditCourseInfo.java、DelCourseInfo.java和StuInfoSearchSnum.java这六个文件组成,每个java文件只有一个类,完全实现模块化设计,CourseInfo类是AddCourseInfo、EditCourseInfo、DelCourseInfo的超类,因为这三个类生成的界面是相同的具有共同之处。
CourseInfoSearchSnum是查询模块,用于AddCourseInfo、EditCourseInfo、DelCourseInfo调用来查询课程以便增加、修改和删除课程。
课程信息管理模块的几个界面如下:
图6.3.1课程信息增加界面
图6.3.1课程信息修改界面
图6.3.1课程信息删除界面
6.4查询模块
查询模块分学生信息查询、课程信息查询和成绩查询:
界面如下:
图6.4查询模块
图6.5数据库操作模块
数据库操作模块包括连接数据库和数据库操作,连接数据库在类DataBase.java中,操作数据库类分别在几个不同的类里,学生信息操作在StuBean.java,选课操作在Csbean.java中,课程操作在CrsBean.java中,代码在附录里,这里就不重复了。
第七部分课程设计心得
在本系统的开发过程中,由于本人是初次开发软件,在知识、经验方面都存在着不足。
另外,在整个开发的过程中,时间也比较仓促。
因此,该系统必然会存在一些缺陷和不足。
因为对学生信息管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。
尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。
通过开发这个系统,我掌握了的项目基本开发过程,用到的知识巩固了我对JAVA的学习,但在这次设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。
第八部分附录(部分代码)
//////////////////////////////////Database.java//////////////////////
importjava.sql.*;
importjavax.naming.spi.DirStateFactory.Result;
/**
*连接数据库的类
*/
publicclassDatabase{
privateStatementstmt=null;
ResultSetrs=null;
privateConnectionconn=null;
Stringsql;
Stringstrurl="jdbc:
mysql:
//127.0.0.1:
3306/studentsys";
publicDatabase(){
}
/**
*打开数据库连接
*/
publicvoidOpenConn()throwsException{
try{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(strurl,"root","root");
conn.setAutoCommit(false);
}
catch(Exceptione){
System.err.println("OpenConn:
"+e.getMessage());
e.printStackTrace();
}
}
/**
*执行sql语句,返回结果集rs
*/
publicResultSetexecuteQuery(Stringsql){
stmt=null;
rs=null;
try{stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
}
catch(SQLExceptione){
System.err.println("executeQuery:
"+e.getMessage());
e.printStackTrace();
}
returnrs;
}
/**
*执行sql语句
*/
publicintexecuteUpdate(Stringsql){
stmt=null;
rs=null;
intk=0;
try{stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
k=stmt.executeUpdate(sql);
mit();
}
catch(SQLExceptione){
System.err.println("executeUpdate:
"+e.getMessage());
e.printStackTrace();
}
returnk;
}
publicvoidcloseStmt(){
try{
stmt.close();
}
catch(SQLExceptione){
System.err.println("closeStmt:
"+e.getMessage());
}
}
/**
*关闭数据库连接
*/
publicvoidcloseConn(){
try{
conn.close();
}
catch(SQLExceptionex){
System.err.println("aq.closeConn:
"+ex.getMessage());
}
}
/*
*转换编码
*/
publicstaticStringtoGBK(Stringstr){
try{
if(str==null)
str="";
else
str=newString(str.getBytes("ISO-8859-1"),"GBK");
}
catch(Exceptione){System.out.println(e);}
returnstr;
}
}
//////////////////////////////////StuBean.java//////////////////////////////
importjava.util.*;
importjava.sql.*;
importjavax.swing.*;
/**
*有关学生信息数据库操作的类
*/
publicclassStuBean{
Stringsql;
ResultSetrs=null;
StringsNum;
StringsName;
StringsSex;
StringsBirth;
StringsHome;
StringsEthnic;
StringsYear;
StringsMajor;
StringsCollege;
StringsCourse;
StringcolName;//列名
StringcolValue;//列值
StringcolValue2;//列值
intstuId;//学生的新学号
/**
*添加学生信息
*/
publicvoidstuAdd(StringSnum,Stringname,Stringsex,Stringbirth,Stringhome,Stringethnic,Stringyear,Stringmajor,Stringcollege){
DatabaseDB=newDatabase();
this.sNum=Snum;
this.sName=name;
this.sSex=sex;
this.sBirth=birth;
this.sHome=home;
this.sEthnic=ethnic;
this.sYear=year;
this.sMajor=major;
this.sCollege=college;
if(sName==null||sName.equals("")){
JOptionPane.showMessageDialog(null,"请输入学生姓名","错误",JOptionPane.ERROR_MESSAGE);
return;
}
else{
StringnumS="1";
sql="insertintostudent(snum,sname,ssex,sbirth,shome,sethnic,syear,smajor,scollege)values('"+sNum+"','"+sName+"','"+sSex+"','"+sBirth+"','"+sHome+"','"+sEthnic+"','"+sYear+"','"+sMajor+"','"+sCollege+"')";
try{
DB.OpenConn();
System.out.println("ksadhfasdf");
DB.executeUpdate(sql);
System.out.println("ksadhfasdf");
JOptionPane.showMessageDialog(null,"成功添加一条新的纪录!
");
}
catch(Exceptione){
System.out.println(e);
JOptionPane.showMessageDialog(null,"保存失败","错误",JOptionPane.ERROR_MESSAGE);
}
finally{
DB.closeStmt();
DB.closeConn();
}
}
}
/**
*修改学生信息
*/
publicvoidstuModify(Stringnum,Stringname,Stringsex,Stringbirth,Stringhome,Stringethnic,Stringyear,Stringmajor,Stringcollege){
DatabaseDB=newDatabase();
this.sNum=num;
this.sName=name;
this.sSex=sex;
this.sBirth=birth;
this.sHome=home;
this.sEthnic=ethnic;
this.sYear=year;
this.sMajor=major;
this.sCollege=college;
if(sName==null||sName.equals("")){
JOptionPane.showMessageDialog(null,"请输入学生姓名","错误",JOptionPane.ERROR_MESSAGE);
return;
}
else{
//sql="updatestudentsetsname='"+sName+"',ssex='"+sSex+"',sbirth='"+sBirth+"',shome='"+sHome+"',sethnic='"+sEthnic+"',syear='"+sYear+"',smajor='"+sMajor+"',scollege='"+sCollege+"'wheresnum="+Integer.parseInt(sNum)+"";
sql="updatestudentsetsname='"+sName+"',ssex='"+sSex+"',sbirth='"+sBirth+"',shome='"+sHome+"',sethnic='"+sEthnic+"',syear='"+sYear+"',s