数据库课程设计学生信息管理系统.docx
《数据库课程设计学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计学生信息管理系统.docx(31页珍藏版)》请在冰豆网上搜索。
数据库课程设计学生信息管理系统
数据库原理与开发
课程设计报告
设计题目:
学生信息管理系统
学生姓名
张留春
学号
110506224
专业名称
信息管理与信息系统
日期
2013.1.1
学生信息管理系统
学生姓名:
张留春
一、课程设计说明
数据库是信息系统的核心内容,信息系统的设计、开发、维护都建立在后台完备的数据库系统的基础之上。
本课程设计拟通过给定题目,要求学生选择指定的系统,按照数据库设计的一般要求和流程,分析并设计出该系统的数据库结构(包括逻辑结构和物理结构)。
并最终将所设计的数据库使用SQL语句在SQLServer2000数据库管理系统中建立相应的数据库。
二、系统功能描述:
随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量成倍增长。
面对庞大的信息量,就需要有学生信息管理系统来提高学生管理工作的效率。
通过这样的系统可以做到规范管理、科学统计和快速查询,从而减少管理方面的工作量。
三、课程设计任务
需要完成的功能主要有:
Ø有关学籍等信息的输入,包括学生基本信息、所在班级、所学课程和成绩等
Ø学生信息的查询,包括学生基本信息、所在班级、所学课程和成绩等
Ø学生信息的修改
Ø班级管理信息的输入,包括班级设置、年级信息等
Ø班级管理信息的查询
Ø班级管理信息的修改
Ø学生基本课程信息的输入
Ø学生课程信息的修改
Ø学生课程的设置和修改
Ø学生成绩信息的输入
Ø学生成绩信息的修改
Ø学生成绩信息的查询
Ø学生成绩信息的统计
2系统结构分析
2.1需求分析
学生管理系统是适应时代发展的需要,提高管理的效率而开发设计的。
通过对信息的收集、存储、传递、统计、分析、综合查询、报表输出和信息共享,及时为管理者提供学生基础信息,违规记录,考试成绩信息的查询。
实现了学生信息管理的简单化和规划化,提高了学校日常的工作效率,从而提高学校日常管理的效率,满足管理者对信息的需求。
经过综合分析,确定了学生管理系统的主要包括以下功能:
(1)用户登陆功能
管理员登陆界面主要为管理员提供对系统使用者的操控,确保系统信息的安全性,可靠性,登陆后可以通用系统管理中的用户管理增加或修改用户帐户。
(2)学生信息管理功能
学生信息管理功能模块可以实现以下功能:
学生信息管理;
学生成绩录入;
(3)学生信息查询功能
学生成绩查询;
学生课程查询;
学生基础信息查询。
(4)关于对话框
显示有关该系统的信息。
2.2功能模块图
根据上述的功能,可以设计出系统的总体功能模块,如图2.1所示。
图2.1系统总体功能模块
“系统登陆”功能模块用于验证使用者的身分,其功能模块如图2.2所示。
图2.2系统登陆模块
“学生管理”功能模块用于学生信息管理,学生成绩录入,学生违规处理,成绩等级设置,其功能模块如图2.3所示。
图2.3学生管理模块
“查询管理”功能模块用于查询学生信息,学生成绩,违规信息,其功能模块如图2.4所示。
图2.4查询管理模块
“系统管理”功能模块用于修改或增加用户,退出系统,其功能模块如图2.5所示。
图
图2.5系统管理模块
3数据库设计
3.1概念结构设计
根据需求分析抽象出信息结构,可得该系统的E-R图。
(1)用户(tb_user)E-R图,主体为系统管理员,其包含两个属性,分别为用户名和密码。
如图3.1所示。
图3.1用户E-R图
(2)学生(tb_studentinfo)实体E-R图,主体为学生,其包含属性为学生姓名,学生编号,年龄,性别,地址,班级,联系电话。
如图3.2所示。
图3.2学生实体E-R图
(3)考试(tb_examkinds)实体E-R图,主体为考试,其包含属性学生编号,考试类别,考试科目,考试成绩,考试日期。
如图3.3所示。
图3.3考试实体E-R图
通过分析上述实体间的联系将分E-R图合并为学生管理系统的基本E-R图。
由于用户这一实体它是用来确定使用该系统权限的于其他实体间无内在联系,故在此不考虑。
同时每个实体的属性在上面的分E-R图中已经给出,在此不予给出
图3.5系统基本E-R图
3.2逻辑结构设计
根据上述的概念结构设计出逻辑结构,将E-R图转换为关系模型。
(1)数据库中数据表描述
本数据库包含以下4个表:
登录表tb_user,学生基础信息表tb_studentinfo,学生违规信息表tb_regbreakinfo,学生成绩信息表tb_examinfo_sub,成绩等级设置表tb_gradelevel,考试类型表tb_examkinds。
表3.1数据表描述表
编号
数据表名称
类型
内容
01
tb_user
辅助表
记录管理员帐号,密码
02
tb_studentinfo
主表
记录学生基础信息
03
tb_regbreakinfo
主表
记录学生违规信息
04
tb_examinfo_sub
主表
记录学生成绩信息
05
tb_gradelevel
主表
查询时设置查询范围
06
tb_examkinds
主表
记录考试的类型
本系统主要用于管理者的使用,即只有系统管理员用户。
系统管理员为xuwei,他可以管理所有信息。
前面是通过前台来实现系统安全性的,我们也可以对数据库进行身份验证,可以从系统中建一个登录名,使得本系统可以有多个管理员,从而实现对数据库的完善与管理,以此来及时更新系统中的学生信息管理。
(2)系统数据项表描述
表3.2tb_user表数据项信息表
编号
标识符
类型
长度
所属表名
同义名
1
username
varchar
20
tb_user
用户名
2
pwd
varchar
10
tb_user
密码
表3.3tb_studentinfo表数据项信息表
编号
标识符
类型
长度
所属表名
同义名
1
studentid
varchar
50
tb_studentinfo
学生编号
2
studentname
varchar
50
tb_studentinfo
学生姓名
3
phone
varchar
50
tb_studentinfo
联系电话
4
addr
varchar
50
tb_studentinfo
地址
5
age
float
8
tb_studentinfo
年龄
6
phone
varchar
50
tb_studentinfo
目录名
7
sex
varchar
50
tb_studentinfo
性别
表3.4tb_regbreakinfo表数据项信息表
编号
标识符
类型
长度
所属表名
同义名
1
studentid
varchar
50
tb_regbreakinfo
学生编号
2
breakcontent
varchar
100
tb_regbreakinfo
违规内容
3
handleresult
varchar
100
tb_regbreakinfo
处理结果
4
memo
varchar
100
tb_regbreakinfo
备注
5
breaktime
smalldatetime
4
tb_regbreakinfo
时间
表3.5tb_examinfo_sub表数据项信息表
编号
标识符
类型
长度
所属表名
同义名
1
studentid
varchar
50
tb_examinfo_sub
学生编号
2
code
varchar
50
tb_examinfo_sub
考试科目
3
grade
float
8
tb_examinfo_sub
成绩
4
kind
varchar
50
tb_examinfo_sub
考试类型
5
examdate
datetime
8
tb_examinfo_sub
考试时间
表3.6tb_gradelevel表数据项信息表
编号
标识符
类型
长度
所属表名
同义名
1
grade_level
varchar
50
tb_gradelevel
成绩等级
2
up_grade
float
8
tb_gradelevel
最高分数
3
low_grade
float
8
tb_gradelevel
最低分数
表3.7tb_examkinds表数据项信息表
编号
标识符
类型
长度
所属表名
同义名
1
kind
varchar
50
tb_examkinds
考试类型
4系统实现
4.1数据库的连接
在该系统中数据库的连接使用ODBC。
ODBC是一种可以执行SQL语句的API。
ODBC有VC++6.0编程语言编写的类及接口组成,使用它可以将VC程序连接到SQLSever等多种关系型数据库中。
程序员通过ODBC可以编写成具有平台无关性的数据库应用程序。
首先配置ODBC数据源。
打开Windows控制面板,找到管理工具—>数据源(ODBC),双击打开此选项,数据源配置界面如图4.1所示:
图4.1数据源配置界面
选择添加(D)...,弹出“创建新数据源”界面,下拉选择框到最末尾,选择SQLServer。
点击完成按钮,弹出“创建到SQLServer的新数据源”界面,填写相关的内容,其中,名称(M)可以任意指定一个自己方便记忆的数据源名称(必须),描述(D)用来描述此数据源,可以不用填写,而服务器(S)来源于:
SQLSever服务管理器。
点击下一步按钮,不需要做任何改动。
点击下一步按钮,选择更改默认的数据库为(D):
自己定义的数据库,此处选择之前创建的数据库wang(重要),点击完成按钮,完成新数据源的创建工作。
数据源源配置成功之后进行测试,测试结果如图4.2所示。
图4.2数据源测试结果
4.2数据库备份和恢复方案
(1)应用辅助工具进行备份和恢复
应用数据库辅助工具(如sqlbackuptools…)进行备份,选择所需要备份的数据库和目标地址即可进行数据备份,恢复数据库只需要指定备份文件和需要恢复的数据库即可进行数据恢复。
(2)分离数据库法
在企业管理器中右击需要备份的数据库,选择“所有任务”,“分离数据库”,执行分析操作,拷贝数据库MDF文件和LDF文件。
恢复方案:
在企业管理器的控制台树中选择“数据库”节点,右击,“所有任务”,“附加数据库”,找到待恢复数据库的MDF文件,确定。
4.3系统功能模块设置
本系统的用户界面用VC++6.0编写,主要由1个主界面和10个辅助对话框组成。
主界面集合系统主要基本功能按键,辅助对话框负责采集用户输入信息和做基本的信息处理。
:
(1)系统类文件功能描述
NO.
类名
类型
功能
01
CMystudentsysDlg
Frame
主窗口类,提供系统主要功能的调用接口
02
CMystudentsysApp
辅助类
封装系统主要数据和方法,为其它类提供信息处理功能
03
CRegbreak_finddig
Dialog
查询学生的违规信息
04
CUserdlg
Dialog
管理员信息修改对话框,修改管理员密码,删除管理员
05
CInput_regbreakdlg
Dialog
学生违规信息的录入
06
CInfoStudent
Dialog
学生基础信息的录入
07
CGrade_levelinfodig
Dialog
学生成绩等级的设置
08
CExaminfo_submarkdlg
Dialog
学生成绩的录入
09
CLogin
Dialog
管理员登陆对话框,提供登陆界面,检查登陆信息
表4.1类文件作用描述表
(2)系统数据流表描述
表4.3数据流表
编号
名称
来源
去向
组成
1
登陆信息
管理员
应用系统
用户名+密码
2
授权信息
应用系统
管理员
3
错误身份信息
应用系统
管理员
4
查询请求
管理员
应用系统
待查询对象识别符(如Cid,Ono)
5
查询结果
应用系统
管理员
被查询对象具体信息
6
管理请求
管理员
应用系统
识别符(Cid,Ono等)+管理类型
7
管理结果信息
应用系统
管理员
被管理对象处理结果
8
非法请求
应用系统
管理员
非法请求提示信息
5功能测试
5.1测试方案
由于系统规模较小,所以没有安排单独的白盒测试,而是相应地将这部分测试归并到系统编码过程中。
整个测试过程基于自顶向下测试的组装模块的方法,先对主模块进行基本测试,然后在按深度优先策略逐一将子模块组装到主模块上进行测试,最后再对系统进行全面的整体测试。
5.2测试过程
(1)登陆测试
双击可执行文件mystudentsys.exe打开应用系统,可见登陆界面如图5.1所示:
图5.1系统登陆界面
若输入用户名和密码错误,用户无法登陆如图5.2所示:
图5.2登陆错误提示信息
输入正确用户名和密码,用户正常登陆。
(2)学生管理功能测试
A:
学生信息管理:
选择“学生信息管理”,填写学生信息(或者单击添加按钮),单击“保存”按钮,即可将当前输入的学生信息保存到数据库中,如图5.3所示:
图5.3学生信息保存
B:
单击“第一条”,“上一条”,“下一条”,“末一条”按钮,可分别查看数据中以录入的学生信息,如图5.4所示:
图5.4查看学生信息
C:
选中学生信息页面,单击删除按钮,及可删除相应的学生信息,如图5.5所示:
图5.5删除学生信息
D:
学生成绩录入:
“学生管理”,“学生成绩录入”,单击“保存”按钮,即可保存输入的成绩信息。
如图5.6所示:
图5.6学生成绩录入
A:
学生成绩查询:
“查询管理”,“学生成绩查询”,输入学生编号,单击查询按钮即可显示查询学生的信息。
如图5.10所示:
图5.10学生成绩查询
C:
学生基础信息查询:
“查询管理”,“学生违规查询”,输入学生编号,单击“查询”按钮,即可查看所查询学生的信息。
如图5.12所示:
图5.12学生基本信息查询
(4)系统管理功能测试
A:
用户管理:
“系统管理”,“用户管理”,出现用户管理界面,如图5.13所示。
在该界面可以为系统添加管理员,删除管理员,修改管理员,增加系统的管理人数以及修改变更。
图5.13用户管理
B:
退出系统:
如图5.14所示:
图5.14退出系统
(5)关于作者信息,显示作者的信息.如图5.15所示:
图5.15关于作者
程序代码
CREATEDATABASExuwei
GO
CREATETABLEtb_examinfo_sub(
studentidvarchar(50)NOTNULL,
codevarchar(50)NOTNULL,
gradefloatNOTNULL,
kindvarchar(50)NOTNULL,
examdatedatetimeNOTNULL
);
GO
CREATETABLEtb_regbreakinfo(
studentidvarchar(50)NOTNULL,
breakcontentvarchar(100)NOTNULL,
[handleresult][varchar](100)NOTNULL,
memovarchar(100),
breaktimesmalldatetimeNOTNULL
);
GO
CREATETABLEtb_studentinfo(
studentidvarchar(50)NOTNULL,
studentnamevarchar(50)NOTNULL,
sexvarchar(50)NOTNULL,
agefloatNOTNULL,
addrvarchar(60),
phonevarchar(50),
classvarchar(50)NOTNULL
);
GO
CREATETABLEtb_user(
usernamevarchar(20)NOTNULL,
pwdvarchar(10)
);
GO
CREATETABLEtb_gradelevel(
grade_levelvarchar(50)NOTNULL,
up_gradefloatNOTNULL,
low_gradefloatNOTNULL
);
GO
CREATETABLEtb_examkinds(
kindvarchar(50)NOTNULL
);
GO
//程序名称:
mystudentsys.cpp
//程序功能:
取得应用程序与数据库系统的连接
try
{
CStringstrConnect;
strConnect.Format("DSN=mystudentsys;");
if(m_DB.Open(NULL,false,false,"ODBC;DSN=xuwei;UID=Sa;PWD=123;")==0)
{
AfxMessageBox("UnabletoConnecttotheSpecifiedDataSource");
returnFALSE;
}
}
catch(CDBException*pE)
{
pE->ReportError();
pE->Delete();
returnFALSE;
}
//基于对话框的MFC程序,运行完了App函数之后便运行initial函数
CLogindlg;
if(dlg.DoModal()!
=IDOK)//在登录对话框显示后若用户按取消按钮则执行if语句销毁登录对话框
{
OnOK();//执行本函数的ONOK函数,销毁登录对话框
}
//返回true显示出MystudentsysDlg对话框
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
//程序名称:
Login.cpp
//程序功能:
系统登陆
voidCLogin:
:
OnOK()
{
//TODO:
Addextravalidationhere
UpdateData(TRUE);
if(m_Name.IsEmpty()||m_PassWord.IsEmpty())
{
MessageBox("用户名或密码不能为空");
return;
}
m_Num++;
CStringsql;
sql.Format("select*fromtb_userwhereusername='%s'andpwd='%s'",
m_Name,m_PassWord);
m_LoginSet=newCLoginSet(&((CMystudentsysApp*)AfxGetApp())->m_DB);
if(!
m_LoginSet->Open(AFX_DB_USE_DEFAULT_TYPE,sql))
{
AfxMessageBox("tb_studentinfo表打开失败!
");
}
if(m_LoginSet->GetRecordCount()!
=0)
{
CDialog:
:
OnOK();//核对密码成功,销毁登录对话框
}
else
{
if(m_Num==3)
{
MessageBox("密码3次不正确");
CDialog:
:
OnCancel();
}
else
{
MessageBox("用户名或密码不正确");
m_Name="";
m_PassWord="";
UpdateData(FALSE);
}
}
if(m_LoginSet->IsOpen())
{
m_LoginSet->Close();
deletem_LoginSet;
}
}
//程序名称:
Studentinfo_finddlg.cpp
//程序功能:
学生基本信息录入
BOOLCStudentinfo_finddlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//TODO:
Addextrainitializationhere
m_List.InsertColumn(0,"学生姓名");
m_List.InsertColumn(1,"性别");
m_List.InsertColumn(2,"年龄");
m_List.InsertColumn(3,"住址");
m_List.InsertColumn(4,"电话");
m_List.InsertColumn(5,"班级");
RECTrect;
m_List.GetWindowRect(&rect);
intwid=rect.right-rect.left;
m_List.SetColumnWidth(0,wid/6);
m_List.SetColumnWidth(1,wid/6);
m_List.SetColumnWidth(2,wid/6);
m_List.SetColumnWidth(3,wid/6);
m_List.SetColumnWidth(4,wid/6);
m_List.SetColumnWidth(5,wid/6);
m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT);
returnTRUE;
}
voidCStudentinfo_finddlg:
:
OnClose()
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
CDialog:
:
OnClose();
}
voidCStudentinfo_finddlg:
:
Onfindstudentinfo()
{
//TODO:
Addyourcontro