管理信息系统课程设计Word格式文档下载.docx
《管理信息系统课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《管理信息系统课程设计Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
数据库设计(提出具体的工作思路与指导思想)
此类系统的核心是系统中所有的信息都存储在数据库中,一个良好的数据库开发过程一般是先系统分析,再逻辑设计,然后物理实现。
系统分析中分析数据库用户需求,并画出E-R图直观地表示出数据库系统的需求。
逻辑设计中根据系统分析设计的一个关系模型。
物理设计为逻辑设计中的数据模型选取一个最合理的应用环境的物理结构,通常选取一个常用数据库软件,用数据库软件创建与逻辑设计中数据模型对应的数据库。
本项目确定创建一个学生管理数据库xsgl.dbc,并在该数据库中加入学生表xs.dbf、班级表bj.dbf、必修成绩(kc.dbf)、选修成绩(xxcj.dbf)这5个表。
先打开管理目文件xsgl.pjx,再在项目管理器窗口中新建一个xsgl.dbc数据库,然后再在该数据库下创建上述各个数据表。
通过这个试验可以学以下几点:
①进一步深入理解数据库设计的整个过程,对学生选课系统的需求分析、数据库概念结构设计有关内容等。
②掌握使用前台程序设计技术VC和SQLServer结合设计C/S结构的管理信息系统。
③综合练习了SQLServer的使用和数据库得管理技术。
④综合熟悉并练习了SQL语言在编程中的使用。
⑤综合训练编程能力。
但是由于时间的有限,很多内容都没有涉及到,如果时间允许,效果应该会更理想。
实验三
根据需求分析画出E-R图
图4-1整体E-R图
图4-2学生E-R实体图
图4-3教师E-R实体图
图4-4管理员E-R实体图
图4-5课程E-R实体图
数据库逻辑设计
数据库逻辑设计就是将E—R图转换为关系模型的过程,即将所有实体和关系转换成一系列的关系模式。
转换过程中常见规则有:
(1)一个实体型转换为一个关系模式;
(2)一个一对一的联系可转换成一个独立的关系模式,也可与任意一端对应的关系模式合并;
(3)一个一对多的联系可以转换成一个独立的关系模式,也可与多的那一端对应的关系模式合并;
(4)一个多对多的关系转换成一个关系模式。
根据以上四条规则,下面将E—R图转换成关系模型。
对于“学生”、“课程”和它们之间的“选课考试”关系就可以规则(4)转换成三个关系模式。
学生(学号,姓名,性别,系别,出生年月,家庭地址,入学时间,政治面貌,备注,密码)
课程(课程号,课程名,学分,备注)
成绩(学号,课程号,日期,教师编号,分数)
依次类推,剩下的关系转换成下面两个关系模式:
教师(教师编号,姓名,性别,出生年月,院系名称,职称,学历,政治面貌,备注,密码)
管理员(用户名,密码,备注)
利用SQLServer2000建立“学生选课”数据库,其基本表清单及表结构描述如下:
表2-1学生表结构
字段名
数据类型
字段宽度
说明
学号
字符型
8
主索引
姓名
性别
2
生日
日期型
班级
5
普通索引
党员否
逻辑型
1
入学成绩
整型
4
照片
通用性
备注
备注型
表2-2班级表结构
班级编号
班级名称
10
表2-3课程表结构
课程编号
3
课程名称
学分
数值型
小数位数1
表2-4必修成绩表结构
高等数学
哲学
外语
计算机
平均数
表2-5选修成绩表结构
课程
成绩
在数据库中建立上述表后,根据表中说明字段为表建立索引。
接下来在数据库设计器中建立各表之间的永久关系,如表2-6所示。
2-6各表间关系
表名
学生表
班级表
课程表
必修成绩表
学习成绩表
1:
N
1:
N:
N:
需要说明的是,在班级表bj与学生表xs之间通过“班级编号”建立一对多关系,因学生表中“班级编号”字段,但因在学生表的“班级”字段与班级目录表中的“班级编号”包含相同的信息,所以可以通过在班级表中“班级编号”建立的主索引与学生表中“班级”建立的普通索引建立永久一对多关系。
用同样方式建立关系的还有课程表与选修课程表。
几个主要功能模块的算法程序:
1)在课程对话框中实现课程修改
voidCCourseDlg:
:
OnCourseEdit()
{
//得到CList当前所选的行号
introw=m_list.GetSelectionMark();
CStrings,strSQL;
//将当前行的第一列的值赋给s
s=m_list.GetItemText(row,0);
if(s=="
"
)//如果s为空,则表示没有选中行
{
MessageBox("
请选择一行!
);
}
else//如果有选中一行
//定义查询条件,相当于where
strSQL.Format("
course_id=%s"
s);
//打开记录集
m_courseSet.Open();
//设置查询条件
m_courseSet.m_strFilter=strSQL;
//执行查询
m_courseSet.Requery();
//游标指定到该行所在的记录上,执行修改
m_courseSet.Edit();
//设置点击修改按钮后其他按钮的状态
m_bConfirm.EnableWindow(true);
m_bAdd.EnableWindow(false);
m_bEdit.EnableWindow(false);
m_bDel.EnableWindow(false);
m_strName.EnableWindow(true);
m_strNo.EnableWindow(true);
m_strHour.EnableWindow(true);
m_strCredit.EnableWindow(true);
}
2)在课程对话框中实现课程添加
voidCCourseDlg:
OnCourseAdd()
{
//设置输入框为可编辑状态并清空输入框中的值
m_strNo.EnableWindow(true);
m_strNo.SetWindowText("
m_strName.EnableWindow(true);
m_strName.SetWindowText("
m_strHour.EnableWindow(true);
m_strHour.SetWindowText("
m_strCredit.EnableWindow(true);
m_strCredit.SetWindowText("
//打开记录集
m_courseSet.Open();
//添加新记录
m_courseSet.AddNew();
//设置点击确定按钮后,其他按钮的状态
m_bConfirm.EnableWindow(true);
m_bAdd.EnableWindow(false);
m_bEdit.EnableWindow(false);
m_bDel.EnableWindow(false);
3)在课程对话框中实现课程删除
OnCourseDel()
else
//弹出窗口询问是否删除数据
if(MessageBox("
确定要删除记录吗?
"
删除询问
MB_OKCANCEL|MB_ICONQUESTION)==IDOK)
{
//查询所选行所在的记录
strSQL.Format("
m_courseSet.Open();
m_courseSet.m_strFilter=strSQL;
m_courseSet.Requery();
m_courseSet.Edit();
//设置active_status="
N"
;
m_courseSet.m_active_status="
//更新数据库
m_courseSet.Update();
//关闭数据库
m_courseSet.Close();
//更新CList数据
RefreshList();
}