管理信息系统课程设计.docx
《管理信息系统课程设计.docx》由会员分享,可在线阅读,更多相关《管理信息系统课程设计.docx(11页珍藏版)》请在冰豆网上搜索。
![管理信息系统课程设计.docx](https://file1.bdocx.com/fileroot1/2022-11/26/22814b32-a767-461a-96af-9ade1f0e8fd6/22814b32-a767-461a-96af-9ade1f0e8fd61.gif)
管理信息系统课程设计
管理信息系统课程设计
基于VFP的学生成绩管理系统的设计
实验一
一直以来人们使用传统人工方式管理学生,这种管理方式存在着许多缺点,如:
效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不便。
建立高性能的管理信息系统,作为计算机应用的一部分,使用计算机对学生信息进行管理,具有手工管理无法比拟的优点,如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等,这些优点能够极大的提高学生档案管理的效率,这也是科学化、正规化的体现。
主要功能如下:
1、业务流程图
1、用户登录业务流程图
处于对系统的数据安全性和正确性,设置了权限,特定的用户只能在特定的权限内进行操作。
用户输入其验证信息,系统对其进行身份验证,如果身份正确则允许登陆,进入限定的操作领域,否则返回登录失败信息。
2、学生成绩查询部分流程图
该系统的主要使用者又四个部分,即学生、教师、教务处、系统辅导员。
任课老师通过权限认证后,进入系统,进行网上录入成绩,录入完毕后,系统生成成绩单然后将通知单交给教务处,教务处接到通知后进行成绩统计,生成统计结果表再传送保存到统计结果文档中。
学生和各系统辅导员对统计结果文档进行查询,学生输入查询条件,查询个人成绩,辅导员输入查询信息,统计学生完成的课程情况,从而判断学生能否顺利毕业。
2、数据流程图
1、顶层图
2、展开图
实验二
数据库设计(提出具体的工作思路与指导思想)
此类系统的核心是系统中所有的信息都存储在数据库中,一个良好的数据库开发过程一般是先系统分析,再逻辑设计,然后物理实现。
系统分析中分析数据库用户需求,并画出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
主索引
姓名
字符型
8
性别
字符型
2
生日
日期型
8
班级
字符型
5
普通索引
党员否
逻辑型
1
入学成绩
整型
4
照片
通用性
4
备注
备注型
4
表2-2班级表结构
字段名
数据类型
字段宽度
说明
班级编号
字符型
5
主索引
班级名称
字符型
10
表2-3课程表结构
字段名
数据类型
字段宽度
说明
课程编号
字符型
3
主索引
课程名称
字符型
10
学分
数值型
3
小数位数1
表2-4必修成绩表结构
字段名
数据类型
字段宽度
说明
学号
字符型
8
主索引
高等数学
整型
4
哲学
整型
4
外语
整型
4
计算机
整型
4
平均数
数值型
5
小数位数1
表2-5选修成绩表结构
字段名
数据类型
字段宽度
说明
学号
字符型
8
课程
整型
3
普通索引
成绩
整型
4
在数据库中建立上述表后,根据表中说明字段为表建立索引。
接下来在数据库设计器中建立各表之间的永久关系,如表2-6所示。
2-6各表间关系
表名
表名
学生表
班级表
课程表
必修成绩表
学习成绩表
学生表
1:
N
1:
1
1:
N
班级表
N:
1
课程表
1:
N
必修成绩表
1:
1
学习成绩表
N:
1
1:
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)在课程对话框中实现课程删除
voidCCourseDlg:
:
OnCourseDel()
{
//得到CList当前所选的行号
introw=m_list.GetSelectionMark();
CStrings,strSQL;
//将当前行的第一列的值赋给s
s=m_list.GetItemText(row,0);
if(s=="")//如果s为空,则表示没有选中行
{
MessageBox("请选择一行!
");
}
else
{
//弹出窗口询问是否删除数据
if(MessageBox("确定要删除记录吗?
","删除询问
",MB_OKCANCEL|MB_ICONQUESTION)==IDOK)
{
//查询所选行所在的记录
strSQL.Format("course_id=%s",s);
m_courseSet.Open();
m_courseSet.m_strFilter=strSQL;
m_courseSet.Requery();
m_courseSet.Edit();
//设置active_status="N";
m_courseSet.m_active_status="N";
//更新数据库
m_courseSet.Update();
//关闭数据库
m_courseSet.Close();
//更新CList数据
RefreshList();
}
}
}