1、数据库设计(提出具体的工作思路与指导思想)此类系统的核心是系统中所有的信息都存储在数据库中,一个良好的数据库开发过程一般是先系统分析,再逻辑设计,然后物理实现。系统分析中分析数据库用户需求,并画出E-R图直观地表示出数据库系统的需求。逻辑设计中根据系统分析设计的一个关系模型。物理设计为逻辑设计中的数据模型选取一个最合理的应用环境的物理结构,通常选取一个常用数据库软件,用数据库软件创建与逻辑设计中数据模型对应的数据库。本项目确定创建一个学生管理数据库xsgl.dbc,并在该数据库中加入学生表xs.dbf、班级表bj.dbf、必修成绩(kc.dbf)、选修成绩(xxcj.dbf)这5个表。先打开管
2、理目文件xsgl.pjx,再在项目管理器窗口中新建一个xsgl.dbc数据库,然后再在该数据库下创建上述各个数据表。通过这个试验可以学以下几点:进一步深入理解数据库设计的整个过程,对学生选课系统的需求分析、数据库概念结构设计有关内容等。掌握使用前台程序设计技术VC和SQL Server结合设计C /S结构的管理信息系统。综合练习了SQL Server的使用和数据库得管理技术。综合熟悉并练习了SQL语言在编程中的使用。 综合训练编程能力。但是由于时间的有限,很多内容都没有涉及到,如果时间允许,效果应该会更理想。实验三根据需求分析画出E-R图图4-1 整体E-R图图4-2 学生E-R实体图图4-3
3、 教师E-R实体图图4-4 管理员E-R实体图图4-5 课程E-R实体图数据库逻辑设计数据库逻辑设计就是将ER图转换为关系模型的过程,即将所有实体和关系转换成一系列的关系模式。转换过程中常见规则有:(1)一个实体型转换为一个关系模式;(2)一个一对一的联系可转换成一个独立的关系模式,也可与任意一端对应的关系模式合并;(3)一个一对多的联系可以转换成一个独立的关系模式,也可与多的那一端对应的关系模式合并;(4)一个多对多的关系转换成一个关系模式。根据以上四条规则,下面将ER图转换成关系模型。对于“学生”、“课程”和它们之间的“选课考试”关系就可以规则(4)转换成三个关系模式。学生(学号,姓名,性
4、别,系别,出生年月,家庭地址,入学时间,政治面貌,备注,密码)课程(课程号,课程名,学分,备注)成绩(学号,课程号,日期,教师编号,分数)依次类推,剩下的关系转换成下面两个关系模式:教师(教师编号,姓名,性别,出生年月,院系名称,职称,学历,政治面貌,备注,密码 )管理员(用户名,密码,备注)利用SQL Server 2000建立“学生选课”数据库,其基本表清单及表结构描述如下:表2-1 学生表结构字段名数据类型字段宽度说明学号字符型8主索引姓名性别2生日日期型班级5普通索引党员否逻辑型1入学成绩整型4照片通用性备注备注型表2-2 班级表结构班级编号班级名称10表2-3 课程表结构课程编号3课
5、程名称学分数值型小数位数1表2-4 必修成绩表结构高等数学哲学外语计算机平均数表2-5选修成绩表结构课程成绩 在数据库中建立上述表后,根据表中说明字段为表建立索引。 接下来在数据库设计器中建立各表之间的永久关系,如表2-6所示。2-6 各表间关系表名学生表班级表课程表必修成绩表学习成绩表1:N1:N:N: 需要说明的是,在班级表bj与学生表xs之间通过“班级编号”建立一对多关系,因学生表中“班级编号”字段,但因在学生表的“班级”字段与班级目录表中的“班级编号”包含相同的信息,所以可以通过在班级表中“班级编号”建立的主索引与学生表中“班级”建立的普通索引建立永久一对多关系。用同样方式建立关系的还
6、有课程表与选修课程表。几个主要功能模块的算法程序:1) 在课程对话框中实现课程修改 void CCourseDlg:OnCourseEdit() /得到CList当前所选的行号 int row=m_list.GetSelectionMark(); CString s,strSQL; /将当前行的第一列的值赋给s s=m_list.GetItemText(row,0); if(s=)/如果s为空,则表示没有选中行 MessageBox(请选择一行!); else/如果有选中一行 /定义查询条件,相当于where strSQL.Format(course_id=%s,s); /打开记录集 m_co
7、urseSet.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.Ena
8、bleWindow(true); m_strHour.EnableWindow(true); m_strCredit.EnableWindow(true);2)在课程对话框中实现课程添加void CCourseDlg:OnCourseAdd() /设置输入框为可编辑状态并清空输入框中的值 m_strNo.EnableWindow(true); m_strNo.SetWindowText( m_strName.EnableWindow(true); m_strName.SetWindowText( m_strHour.EnableWindow(true); m_strHour.SetWindow
9、Text( 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 /弹出窗口询问是否删
10、除数据 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();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1