学籍管理系统实验报告_第1页
学籍管理系统实验报告_第2页
学籍管理系统实验报告_第3页
学籍管理系统实验报告_第4页
学籍管理系统实验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库课程设计——学籍管理系统安徽大学安徽大学计算机科学与技术1班陈斌E113140792023-9-6

2023-9-6目录一、 实验目的及要求 21. 实验目的 22. 实验要求 2二、 实验环境 2三、 实验内容与步骤 31. 系统需求分析 32. 概念结构设计 63. 逻辑结构设计 94. 数据库与应用系统的实施和维护 11四、 总结 28目的及要求实验目的通过本次课程设计,熟练掌握一种开发语言〔如C#〕和一种数据库系统软件〔如SQL

server

2023〕的使用。加深对软件工程的理解,训练编写程序的良好习惯。包括:认真编写需求分析文档、做好系统功能和数据库设计、学会自己进行程序的算法、数据结构设计。培养良好的程序设计风格〔模块划分、接口设计、程序界面、应用系统设计〕和习惯〔程序备份、版本更新与控制〕,提高软件测试、调试的能力与技巧。通过本次课程设计,应该到达具有独立完成小型应用系统设计的能力,具备编写较为标准的软件设计文档的能力。实验要求设计本系统模拟学校学籍管理内容,包括学生入学登记、学生选课、考试成绩登记、补考处理及教师教学质量分析统计等,简化的系统需要管理的情况如下:可随时查询出不同系及各系教师与各系学生情况,系、教师与学生各反映如下情况:系:系号、系名、系负责人、专业数等教师:工号、姓名、性别、职称、工龄、出生年月、根本工资等学生:学号、姓名、性别、年龄等为简单起见教师与学生区分系别,而课程不分系,课程需反映如下信息:课程代号、课程名、课程数、必修课、学分。学生入学时新生需录入登记,登记后即可选课学习课程〔一学期约20学分〕。一门课只由一位教师上,一位教师可上多门课,满30人才开课。学生选每门课有个成绩,假设成绩不及格那么补考后还需记录补考成绩。实验环境本系统开发平台及运行环境如下:系统开发平台:MicrosoftVisualStudio2023系统开发语言:C#数据库管理软件:SQLServer2023运行平台:Windows10教育版运行环境:Microsoft.NETFrameworkSDKv4.5实验内容与步骤系统需求分析信息要求:指用户需要从数据库中获得信息的内容与性质。数据库中需要存储哪些数据。本系统是针对学生学籍管理,主要涉及教师信息、学生选修课程信息、学校开设的课程信息、学校的院系信息、教师开设课程信息、学生选修课程成绩信息等多种数据信息。用户名和密码信息:字段名数据类型长度主键否描述Usernamevarchar16是用户名Passwordvarchar16密码Userclasschar1用户类别学生信息:字段名数据类型长度主键否描述Sidvarchar16是学号Snamevarchar16姓名Ssexchar1性别Sageint年龄Sdepvarchar16所属系别Stelchar11SIDcardchar18身份证号教师信息:字段名数据类型长度主键否描述Tidvarchar16是工号Tnamevarchar16姓名Tsexchar1性别Tprotitlevarchar16职称Tworktimeint工龄Tbirthdate出生年月Tsalfloat工资Tdepvarchar16所属系别Ttelchar11TIDcardchar18身份证号院系信息:字段名数据类型长度主键否描述Didvarchar16是系号Dnamevarchar64系名Dchiefvarchar16负责人Dmajorcountint专业数Dareavarchar64地址课程信息:字段名数据类型长度主键否描述Cidvarchar16是课程代号Cnamevarchar32课程名Ccountint课程数Ccompulsorychar1是否必修Ccreditfloat学分Tidvarchar16授课教师学生选课信息:字段名数据类型长度主键否描述Sidvarchar16是学号Cidvarchar16课程代号Fscoreint正考成绩Sscoreint补考成绩课程选修人数:字段名数据类型长度主键否描述Cidvarchar16是课程代号Numbersint选修人数处理要求:用户需要完成什么处理功能,对处理的响应时间有什么要求〔给出功能模块图〕。学籍管理系统主要满足三类用户的要求,这三类用户分别是教务处的系统管理员、教师和学生。系统管理员能对学生信息、教师信息、课程信息等进行有效的管理和维护,包括增加、删除、修改等根本的维护功能和灵活的查询功能;教师和学生能够对个人根本信息、授课、选课所涉及的有关信息进行查询、更新等操作。具体的需求分析如下:系统管理员:维护学生的个人根本信息维护教师的个人根本信息维护课程信息新生入学登记学生用户:查询和修改个人信息进行选课操作查询当前所选课程信息和以前所选课程的成绩信息教师用户:查询和修改个人信息课程结束后,教师对所教授的学生进行成绩登记查询教学安排功能模块图如下所示:图SEQFigure\*ARABIC1功能模块图平安性与完整性要求。数据库的平安性是指保护数据库,防止不合法的使用所造成的数据泄露和破坏。数据库系统中保证数据平安性的主要措施是进行存取控制,即规定不同用户对于不同数据对象所允许执行的操作,并控制各用户只能存取他有权〔操作权力〕存取的数据。存取控制机制分为自主存取控制〔DAC〕与强制存取控制〔MAC〕,主要包括两局部:一是定义用户权限,并将用户权限登记到数据字典中;二是合法权限检查。数据库完整性指数据的〔逻辑而非物理〕正确性和相容性。为了防止数据库中存在不合语义的数据,防止错误数据的输入和输出。数据库完整性技术包括完整性约束条件与完整性检查两局部。完整性约束条件指为维护数据库的完整性,DBMS提供加在数据库数据之上的语义约束条件,作为数据库模式的一局部存入数据库。完整性检查意味检查数据库是否满足完整性约束条件的机制。完整性约束条件作用的对象可以是关系、元组、列三种。其中列约束主要是列的类型、取值范围、精度、排序等的约束条件。元组的约束是元组中各个字段间的联系的约束。关系的约束是假设干元组间、关系集合上以及关系之间的联系的约束。完整性约束条件涉及这三类对象,其状态可以是静态的,也可以是动态的。完整性约束条件一般分为实体完整性、参考完整性自定义完整性。定义实体完整性约束条件要考虑修改关系中主码的问题;定义参考完整性约束条件要考虑外码能否接受空值问题、在被参照关系中删除元组的问题〔级联删除或受限删除〕、在参照关系中插入元组时的问题。概念结构设计根据分析,学籍管理系统包含学生、教师、院系及课程4个实体,各个实体的局部E-R图如下所示,其中学号是学生实体的主码,工号是教师实体的主码,系号是院系实体的主码,课程号是课程实体的主码,负责人是院系实体的外码〔参照的是教师实体的工号〕。图SEQFigure\*ARABIC2学生实体及属性图SEQFigure\*ARABIC3教师实体及属性图SEQFigure\*ARABIC4院系实体及属性图SEQFigure\*ARABIC5课程实体及属性逐一设计分ER图,合并分ER图,生成根本ER图。根据需求分析的结果可以看到,在学籍管理系统中,一个学生可以选择多门课程,一个教师可以教授多门课程,一门课程可以被多个学生选修,只能由一位教师教授。由此可知,学生、教师、课程三者之间通过选课进行联系。教师和学生区分系别,因此学生与院系,教师与院系均存在联系。由以上分析可得各个局部的E-R图,如下所示〔忽略各个实体的属性〕:图SEQFigure\*ARABIC6学生与院系之间的E-R图图SEQFigure\*ARABIC7教师与院系之间的E-R图图SEQFigure\*ARABIC8学生与课程之间的E-R图图SEQFigure\*ARABIC9学生与教师之间的E-R图图SEQFigure\*ARABIC10教师与课程之间的E-R图假设在合并中存在属性冲突、命名冲突以及结构冲突,给出解决方法,假设存在不必要的冗余,那么消除并给出设计方法。合并分E-R图并不是单纯地将各个分E-R图画在一起,而是必须消除各个分E-R图中的不一致,以形成一个能为全系统中所有用户共同理解和接受的统一的概念模型。各个分E-R图之间的冲突包括3种:属性冲突、命名冲突以及结构冲突。经过分析,得到学生、教师、院系和课程3者之间可以通过选课这个联系进行关联。因此,合并各个分E-R图,生成根本E-R图,如下所示:图SEQFigure\*ARABIC11学籍管理系统根本E-R图根本ER图中要求标明主码、外码、联系类型。根本E-R图中,各实体的主码用下划线加粗显示,外码倾斜加粗表示,联系类型说明于连接线上。逻辑结构设计给出由ER得到的关系模型,并注明转换过程中应用的规那么。E-R图向关系数据模型转换的根本规那么如下:一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的键就是关系的键;一个联系转化为一个关系模式,与该联系相连的各个实体的键以及联系的属性为该关系的属性,该关系的键分为3种情况:1:1联系:任一相连实体的键都可以作为该关系的主键。1:n联系:n端(多端)实体的键作为该关系的主键。m:n联系:各端实体的键的组合为该关系的主键。其中,1:1联系可以和联系的任意一端实体的关系模式合并,将联系的属性和另一端关系模式的键参加该关系模式即可;1:n联系那么需要和多端的关系模式合并,在多端关系模式中参加联系的属性和1端关系模式的键即可;m:n联系不能与实体合并,必须转换为单独的关系模式。根据E-R图向关系数据模型转换的相关规那么,将图11所示的E-R图转换为关系数据模型,得到学籍管理系统的关系模式如下:教师〔工号,系号,姓名,性别,职称,工龄,出生年月,工资,,身份证〕,应用规那么2)-②1:n联系。学生〔学号,系号,姓名,性别,年龄,,身份证〕,应用规那么2)-②1:n联系。院系〔系号,负责人工号,系名,专业数,地址〕,应用规那么2)-①1:1联系。课程〔课程代号,授课教师工号,课程名,课程数,是否必修,学分〕,应用规那么2)-②1:n联系。选修〔学号,课程号,正考成绩,补考成绩〕,应用规那么2)-③m:n联系。数据模型的优化。数据库的逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,还应该根据应用需要适当地修改、调整数据模型的结构,这就是数据模型的优化。关系数据模型的优化通常以标准化理论为指导。确定数据依赖。分别写出每个关系内部属性的以及不同关系模式属性间的数据依赖。根据需求分析可知:教师关系模式的数据依赖:{工号->系号,工号->姓名,工号->性别,工号->职称,工号->工龄,工号->出生年月,工号->工资,工号->,工号->身份证};学生关系模式的数据依赖:{学号->系号,学号->姓名,学号->性别,学号->年龄,学号->,学号->身份证};院系关系模式的数据依赖:{系号->负责人工号,系号->系名,系号->专业数,系号->地址};课程关系模式的数据依赖:{课程代号->授课教师工号,课程代号->课程名,课程代号->课程数,课程代号->是否必修,课程代号->学分};选修关系模式的数据依赖:{〔学号,课程号〕->正考成绩,〔学号,课程号〕->补考成绩};对各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。采用分析方法,根据数据项之间逻辑关系的说明,已经消除了各个关系模式之间的数据冗余联系。按照数据依赖的理论确定个关系模式分别属于第几范式。根据各个范式的定义:教师关系模式属于BCNF,因为该关系模式的码是工号,且每一个决定因素都包含码,所以∈BCNF;学生关系模式属于BCNF,因为该关系模式的码是学号,且每一个决定因素都包含码,所以∈BCNF;院系关系模式属于BCNF,因为该关系模式的码是系号,且每一个决定因素都包含码,所以∈BCNF;课程关系模式属于BCNF,因为该关系模式的码是课程代号,且每一个决定因素都包含码,所以∈BCNF;选修关系模式属于BCNF,因为该关系模式的码是〔学号,课程号〕,且每一个决定因素都包含码,所以∈BCNF;用户子模式设计。将概念模型转换为全局逻辑模型后,还应该根据局部应用需求,结合具体DBMS的特点设,计用户的外模式。学生查看课程信息,需要知道授课教师的姓名,建立视图:选修课程〔课程号,课程名,课程数,是否必修,学分,授课教师姓名〕;学生查看课程成绩,建立相应视图:课程成绩〔课程号,课程名,学分,是否必修,正考成绩,补考成绩〕;教师录入正考成绩,建立相应视图:正考成绩录入〔学号,学生姓名,正考成绩〕;教师录入补考成绩,建立相应视图:补考成绩录入〔学号,学生姓名,补考成绩〕;教师查看教学安排,建立相应视图:教学安排〔课程号,课程名,课程数,是否必修,学分,已选人数〕;教师查看选课名单,建立相应视图:选课名单〔课程号,课程名,课程数,是否必修,学分,授课教师姓名,学号,学生姓名,性别,院系〕;对不同级别用户定义不同的视图保证系统平安性。学生只能查看个人根本信息,和个人选课及课程成绩信息;教师只能查看个人根本信息,和自己的教学安排信息,只能对选自己教授课程的学生进行成绩录入;管理员可以查询所有学生的信息、所有教师的信息、院系信息及课程信息。数据库与应用系统的实施和维护应用程序的编码和调试。给出截图〔标明图号〕简单阐述该模块的根本功能。给出该模块的设计思路,针对难点局部进行详细地阐述。首先是登录模块:输入用户名和密码,选择登录用户,点击登录。链接数据库,检查数据库中是否存在该用户,以及密码是否正确,如果错误,提示用户名或密码错误,否那么进入相应的用户界面。相关数据库查询语句:stringsql=string.Format("selectcount(*)fromUserswhereUsername='{0}'andPassword='{1}'andUserclass='{2}'",name,pwd,type);管理员模块:登录管理员账号,进入管理员界面,管理员首先向数据库中添加相应的数据信息。院系信息管理:点击院系信息管理,可以进行添加院系信息操作。可以自动导入文件,也可以手动添加相关信息。以导入文件为例:点击导入文件按钮,选择相应文件,点击翻开。如果格式不正确,那么给出相应提示,否那么导入相应信息,点击提交,将数据存入数据库中。同理,学生信息、教师信息、课程信息均可按此方法导入数据库中。导入数据库的相关Sql语句〔以院系信息为例〕:首先查找数据库中是否已存在即将导入的系号,如果有那么跳过,否那么进行插入操作。sql=string.Format("select*fromDepartmentwhereDid='{0}'",dataGridView1.Rows[i].Cells[0].Value.ToString());sql1=string.Format("insertintoDepartmentvalues('{0}','{1}','{2}','{3}','{4}')",dataGridView1.Rows[i].Cells[0].Value.ToString(),dataGridView1.Rows[i].Cells[1].Value.ToString(),dataGridView1.Rows[i].Cells[2].Value.ToString(),dataGridView1.Rows[i].Cells[3].Value.ToString(),dataGridView1.Rows[i].Cells[4].Value.ToString());此外,管理员可以查询相关信息。点击信息查询,会弹出相关子菜单,可以查询相应的信息。相应查询Sql语句为:stringsql=string.Format("selectDid,Dname,Tname,Tid,Dmajorcount,DareafromDepartment,TeacherwhereDchief=Tid");stringsql=string.Format("selectTid,Tname,Tsex,Tprotitle,Tworktime,Tbirth,Tsal,Dname,Ttel,TIDcardfromTeacher,DepartmentwhereTdep=Did");stringsql=string.Format("selectSid,Sname,Ssex,Sage,Dname,Stel,SIDcardfromStudent,DepartmentwhereSdep=Did");在导入学生信息和教师信息时,会同时向User表〔即登录账号信息表〕中插入用户名和密码,以及用户类型,默认初始密码和用户名相同。stringsql2=string.Format("insertintoUsersvalues('{0}','{1}','{2}')",dataGridView1.Rows[i].Cells[0].Value.ToString(),dataGridView1.Rows[i].Cells[0].Value.ToString(),type-1);学生模块:输入学号和密码,登录系统,进入学生操作界面:点击个人信息查询可以查询个人根本信息:查询语句为:sql=string.Format("select*fromStudentwhereSid='{0}'",sid);但查询到的是院系编号,为了防止表的连接操作,先查询到所属院系编号,然后根据院系编号查询系名:sql=string.Format("selectDnamefromDepartmentwhereDid='{0}'",label12.Text);label12.Text存储了之前查询到的系编号。点击个人信息修改可修改号码〔其他根本信息默认不可自己修改〕:号修改成功后点击个人信息查询,可以发现已修改成功:修改Sql语句为:stringsql=string.Format("updateStudentsetStel='{0}'whereSid='{1}'",textBox1.Text.ToString(),sid);textBox1.Text是修改后的号,Sid是该学生的学号。选课模块:点击选课菜单,再点击导入所有课程,此时系统会查询数据库,将数据库中课程信息显示出来,每一门课程后面都有一个选课按钮,点击按钮即可选课:再次点击该选课按钮后会提示已选过改门课程:导入所有课程的Sql语句为:stringsql="selectCid,Cname,Ccount,Ccompulsory,Ccredit,Tname,Teacher.TidfromCourse,TeacherwhereCourse.Tid=Teacher.Tid";选课操作的Sql语句为:stringsql=string.Format("insertintoChooseCoursevalues('{0}','{1}',null,null)",sid,dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());选课表中存放了学生的学号,和该课程的课程号,以及正考成绩〔初始为null〕和补考成绩〔初始为null〕。此外,如果改门课程第一次被选,那么选课人数置为1,否那么选课人数+1,相关Sql语句为:stringsql2=string.Format("insertintoCStunumbervalues('{0}',{1})",dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString(),1);stringsql3=string.Format("updateCStunumbersetNumbers=Numbers+1whereCid='{0}'",dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());点击成绩查询,老师未登记成绩前显示为空:成绩查询Sql语句:stringsql=string.Format("selectCourse.Cid,Cname,Ccredit,Ccompulsory,Fscore,SscorefromChooseCourse,CoursewhereChooseCourse.Cid=Course.CidandSid='{0}'",sid);教师模块:输入教师工号和密码,点击登录即可进入教师界面:教师个人信息查询以及个人信息修改和学生类似,故不赘述。教师成绩录入:点击成绩录入,首先进行正考成绩录入。在这之前,系统先查询数据库,查询该教师授课信息,该教师只能录入所授课程的成绩:查询该教师所授课程的Sql语句为:stringsql=string.Format("selectCnam

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论