1《数据库原理与技术课程设计》设计报告姓名:杨延超学号:201201130405班级:计算机科学与技术01班课程设计题目:学籍管理系统1需求分析1.1系统目标:实现一个通用学籍管理系统,完成对学生学籍信息的增加、删除、修改、查询、显示全部学生学籍信息等功能。1.1系统功能需求:本系统只在学校内部使用,故无需登录。用户可直接进入到主界面,进行各种操作,诸如录入学生信息、删除已不在的学生的学籍信息、修改有错误信息的学生的学籍信息、查询所要找的学生的学籍信息以及查看所有学生的学籍信息。(1)功能划分:用户无需经过身份验证,直接进入到学籍管理系统的主界面。主界面为用户提供了6个功能,即增加记录、删除记录、修改记录、查询记录、显示全部记录和退出。(2)功能描述:增加记录:用户进入到主界面后,若想添加新的学生学籍信息,可点击增加记录按钮。则会跳出一增加记录的对话框,用户可在各对应的框内填写所要填写的信息。当然这些不能胡乱的填写,要根据日常情况来填写。删除记录:用户进入到主界面后,若想把那些已不在的学生删除掉,可点击删除记录按钮。则会跳出一删除记录对话框,用户填写所要删除学生的学号,点击确定。若该学生的学籍信息不在数据库中,则会出现提示信息“无此学生”。若在数据库中有该学生的学籍信息,则会显示另一提示信息“确定删除吗?”,点击确定,学生学籍管理系统杨延超2又会出现一提示信息“删除成功”。虽然有些繁琐,但能确保不误删学生的学籍信息。修改记录:用户进入到主界面后,倘若想修改那些由于各种情况所造成的错误信息时,可点击主界面上的修改记录按钮。点击后会跳出一修改记录的对话框,用户可以根据有错误信息的学生的学号,先进行查询,查询后会显示该学生的全部学籍信息,用于可将错误的信息纠正过来,然后点击修改。返回主界面可点击退出按钮。查询记录:用户进入到主界面后,如果想要查看某个学生的学籍信息,可点击查询记录按钮。则会跳出一查询记录的对话框,用户输入想要查询学生的学号就可以查看到该学生的全部学籍信息。全部记录:用户进入到主界面后,想要查看全部学生的学籍信息,可点击全部记录按钮。则会在主界面的下部显示全部学生的学籍信息。退出:用户进入到主界面后,进行了各种操作后,想要退出该学生学籍管理系统,可点击主界面上的退出按钮。点击后,用户就可以退出本系统。2数据库的概念设计2.1系统的概念模型:图2-1学生学籍管理系统概念模型的E/R图学生学籍信息学号姓名性别政治面貌家庭地址出生年月籍贯系专业111N1N用户增加记录学生学籍信息1N删除记录学生学籍信息N修改记录学生学籍信息N查询记录学生学籍信息全部显示学生学籍信息退出使用权限姓名3图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)男学生学籍管理系统杨延超4political政治面貌Nvarchar(16)团员native籍贯Nvarchar(8)江苏birth出生年月Nvarchar(10)1989deparment院系Nvarchar(30)计算机工程major专业Nvarchar(30)科学与技术address家庭地址Nvarchar(100)启东3.3实现数据完整性通过各种约束,缺省,规则和触发器实现数据的完整性。由于学生学籍管理系统的重要性,和各个数据之间的复杂相关性,保证数据的完整性显得更为重要。不能让用户随意的删除,修改数据。(1)CHECK约束保证查询时只能输入学号。(2)PRIMARYKEY约束在表中定义了一个惟一标识每一列的主键,即code(学号)。(3)使用默认值和规则。(4)各种外键约束保证数据的完整性,不能随意删除。(5)主键约束保证实体的完整性。(6)创建规则保证学生的出生年月只能输入数字,不会输入错误数据。(7)创建触发器,保证在添加学生信息的时候,自动将该班级的必修课添加到选课表中。4应用程序设计4.1学生学籍管理系统的处理流程图:开始进入主界面退出Y退出N选择相关操作退出进行相关操作YN继续相关操作5图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)学生学籍管理系统学生学籍信息增加模块学生学籍信息删除模块学生学籍信息修改模块学生学籍信息查询模块学生学籍信息全部显示模块退出学生学籍管理系统杨延超6{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(录入成功!,增加成功);}voidCAddDlg::OnButton2(){OnOK();}(2)删除记录voidCDelDlg::OnButton1(){UpdateData(true);CAdddat;7dat.Open();dat.MoveFirst();do{if(dat.m_code==m_code){if(MessageBox(确定删除吗?,学生信息管理,MB_YESNO)==IDNO){dat.Close();return;}dat.Delete();MessageBox(删除成功!,学生信息管理);dat.Close();return;}dat.MoveNext();}while(!dat.IsEOF());MessageBox(无此学生,学生信息管理);}(3)修改记录voidCChangDlg::OnButton1(){UpdateData(true);CAdddat;dat.Open();dat.MoveFirst();do学生学籍管理系统杨延超8{if(dat.m_code==m_code){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();MessageBox(修改成功!,修改记录);dat.Close();return;}dat.MoveNext();}while(!dat.IsEOF());dat.Close();MessageBox(无此学生!,修改记录);}(4)查询记录voidCScanDlg::OnButton1(){UpdateData(true);intflag=0;m_list.DeleteAllItems();CStrings;9CAddm_set;if(m_code==){MessageBox(请输入要查的学号!,学生信息查询);return;}m_set.Open();m_set.MoveFirst();intj=0;do{if(m_set.m_code==m_code){flag=1;break;}m_set.MoveNext();}while(!m_set.IsEOF());if(flag==0)MessageBox(不存在该学号!,错误);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);学生学籍管理系统杨延超10m_list.SetItemText(0,7,m_set.m_major);m_list.SetItemText(0,8,m_set.m_address);}m_set.Close();UpdateData(false);}(5)全部记录voidCMyDlg::OnAll(){UpdateData(true);CAddm_set;//调用数据库m_set.Open();//打开数据库m_set.MoveFirst();intj=0;m_list.DeleteAllItems();do{m_list.InsertItem(j,m_set.m_code,0);//m_list.SetItemText(j,1,m_set.m_name);m_list.SetItemText(j,2,m_set.m_sex);m_list.SetItemText(j,3,m_set.m_political);m_list.SetItemText(j,4,m_set.m_native);m_list.SetItemText(j,5,m_set.m_borth);m_list.SetItemText(j,6,m_set.m_department);m_list.SetItemText(j,7,m_set.m_major);m_list.SetItemText(j,8,m_set.m_address);j++;m_set.MoveNext();11}while(!m_set.IsEOF());m_set.Close();UpdateData(false);}(6)退出voidCMyDlg::OnCancel(){OnOK();}5编程实现下面给出学生学籍管理系统的主要用户界面:5.1学生学籍管理系统的主界面5-1学生学籍管理系统的主界面图5-1是学生学籍管理系统的主界面,用户可以在主界面上选择增加记录、删除记录、修改记录、查询记录、显示全部记录、退出6个操作。学生学籍