数据库原理与技术课程设计学籍管理系统Word下载.docx
《数据库原理与技术课程设计学籍管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《数据库原理与技术课程设计学籍管理系统Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
虽然有些繁琐,但能确保不误删学生的学籍信息。
修改记录:
用户进入到主界面后,倘若想修改那些由于各种情况所造成的错误信息时,可点击主界面上的修改记录按钮。
点击后会跳出一修改记录的对话框,用户可以根据有错误信息的学生的学号,先进行查询,查询后会显示该学生的全部学籍信息,用于可将错误的信息纠正过来,然后点击修改。
返回主界面可点击退出按钮。
查询记录:
用户进入到主界面后,如果想要查看某个学生的学籍信息,可点击查询记录按钮。
则会跳出一查询记录的对话框,用户输入想要查询学生的学号就可以查看到该学生的全部学籍信息。
全部记录:
用户进入到主界面后,想要查看全部学生的学籍信息,可点击全部记录按钮。
则会在主界面的下部显示全部学生的学籍信息。
退出:
用户进入到主界面后,进行了各种操作后,想要退出该学生学籍管理系统,可点击主界面上的退出按钮。
点击后,用户就可以退出本系统。
2数据库的概念设计
2.1系统的概念模型:
图2-1学生学籍管理系统概念模型的E/R图
图2-2学生学籍信息的属性E/R图
上面两张图是学生学籍管理系统的概念模型的E/R图,该系统所涉及的实体集有:
学生学籍信息实体集:
具体属性有学号、姓名、性别、政治面貌、出生年月、专业、系院、籍贯、家庭住址。
用户实体集:
具体属性有使用权限。
用户可以对多个学生的学籍信息进行管理,所以用户与学生学籍信息之间的关系为1:
N。
3将概念模型转换为改性模型
3.1将E-R模型转换为关系模式
(1)学生学籍信息转换为关系:
STUDENT(CODE,NAME,SEX,POLITICAL,NATIVE,BIRTH,DEPARMENT,MAJOR,ADDRESS)
CODEE表示学号,NAME表示姓名,SEX表示性别,POLITICAL表示政治面貌,NATIVE表示籍贯,BIRTH表示出生年月,DEPARMENT表示院系,MAJOR表示专业,ADDRESS表示家庭地址。
3.2数据库表结构设计:
把关系模型转化为表结构:
学生学籍信息表(student)所包含的学生学籍信息,定义如下:
表1学生学籍信息表
域名
含义
数据类型
例子
备注
code
学号
nvarchar(10)
1071301208
主键
name
姓名
nvarchar(30)
陈云龙
sex
性别
nvarchar
(2)
男
political
政治面貌
Nvarchar(16)
团员
native
籍贯
Nvarchar(8)
江苏
birth
出生年月
Nvarchar(10)
1989
deparment
院系
Nvarchar(30)
计算机工程
major
专业
科学与技术
address
家庭地址
Nvarchar(100)
启东
3.3实现数据完整性
通过各种约束,缺省,规则和触发器实现数据的完整性。
由于学生学籍管理系统的重要性,和各个数据之间的复杂相关性,保证数据的完整性显得更为重要。
不能让用户随意的删除,修改数据。
(1)CHECK约束保证查询时只能输入学号。
(2)PRIMARYKEY约束在表中定义了一个惟一标识每一列的主键,即code(学号)。
(3)使用默认值和规则。
(4)各种外键约束保证数据的完整性,不能随意删除。
(5)主键约束保证实体的完整性。
(6)创建规则保证学生的出生年月只能输入数字,不会输入错误数据。
(7)创建触发器,保证在添加学生信息的时候,自动将该班级的必修课添加到选课表中。
4应用程序设计
4.1学生学籍管理系统的处理流程图:
图5-1学生学籍管理系统的处理流程图
4.2总体结构和外部模块设计:
图4-2模块设计图
4.3主要功能的代码
(1)增加记录
voidCAddDlg:
:
OnButton1()
{
UpdateData(true);
//把编辑框里的东西放到相关变量
CAddm_set;
m_set.Open();
m_set.MoveFirst();
do
{
if(m_set.m_code==m_code)
{
MessageBox("
学号已存在,请重新输入!
!
"
"
增加记录"
);
m_set.Close();
return;
}
m_set.MoveNext();
}while(!
m_set.IsEOF());
m_set.AddNew();
//
m_set.m_code=m_code;
m_set.m_name=m_name;
m_set.m_sex=m_sex;
m_set.m_political=m_political;
m_set.m_native=m_native;
m_set.m_borth=m_borth;
m_set.m_department=m_department;
m_set.m_major=m_major;
m_set.m_address=m_address;
m_set.Update();
//更新
m_set.Close();
MessageBox("
录入成功!
增加成功"
}
OnButton2()
OnOK();
(2)删除记录
voidCDelDlg:
CAdddat;
dat.Open();
dat.MoveFirst();
if(dat.m_code==m_code)
if(MessageBox("
确定删除吗?
学生信息管理"
MB_YESNO)==IDNO)
{
dat.Close();
return;
}
dat.Delete();
删除成功!
dat.Close();
dat.MoveNext();
dat.IsEOF());
无此学生"
(3)修改记录
voidCChangDlg:
UpdateData(true);
CAdddat;
dat.Edit();
dat.m_code=m_code;
dat.m_name=m_name;
dat.m_sex=m_sex;
dat.m_political=m_political;
dat.m_native=m_native;
dat.m_borth=m_borth;
dat.m_department=m_department;
dat.m_major=m_major;
dat.m_address=m_address;
dat.Update();
修改成功!
修改记录"
dat.Close();
无此学生!
(4)查询记录
voidCScanDlg:
intflag=0;
m_list.DeleteAllItems();
CStrings;
if(m_code=="
)
MessageBox("
请输入要查的学号!
学生信息查询"
return;
}
intj=0;
{
flag=1;
break;
if(flag==0)
不存在该学号!
错误"
else
m_list.InsertItem(0,m_set.m_code,0);
m_list.SetItemText(0,1,m_set.m_name);
m_list.SetItemText(0,2,m_set.m_sex);
m_list.SetItemText(0,3,m_set.m_political);
m_list.SetItemText(0,4,m_set.m_native);
m_list.SetItemText(0,5,m_set.m_borth);
m_list.SetItemText(0,6,m_set.m_department);
m_list.SetItemText(0,7,m_set.m_major);
m_list.SetItemText(0,8,m_set.m_address);
UpdateData(false);
(5)全部记录
voidCMyDlg:
OnAll()
//调用数据库
//打开数据库
m_list.InsertItem(j,m