学籍管理系统-数据库课程设计
数据库学籍管理系统课程设计

数据库学籍管理系统课程设计一、引言随着信息技术的不断发展和普及,大量学生信息需要被高效地管理和记录。
数据库学籍管理系统应运而生,旨在提高学生信息管理的效率和准确性。
本文将针对数据库学籍管理系统进行设计与分析。
二、系统概述数据库学籍管理系统旨在管理学生的基本信息、课程信息、成绩信息等内容。
其主要功能包括学生信息录入、查询、修改、删除、课程表管理、成绩录入和查询等。
系统通过数据库技术实现数据的存储、管理和查询,提供方便快捷的操作界面供用户使用。
三、系统需求分析1.学生管理:包括学生基本信息、入学年份、学籍状态等;2.课程管理:包括课程名称、课程编号、学分等;3.成绩管理:录入、修改、查询学生成绩;4.用户权限管理:确定管理员和普通用户权限;5.界面友好性:设计简洁、易操作的用户界面。
四、数据库设计1. 学生信息表(Student)•字段:学生编号(StudentID)、姓名(Name)、性别(Gender)、入学年份(EnrollmentYear)等;•主键:学生编号(StudentID)。
2. 课程信息表(Course)•字段:课程编号(CourseID)、课程名称(CourseName)、学分(Credit)等;•主键:课程编号(CourseID)。
3. 成绩信息表(Score)•字段:学生编号(StudentID)、课程编号(CourseID)、成绩(Grade)等;•主键:学生编号(StudentID)、课程编号(CourseID)。
五、系统设计与实现1. 界面设计通过Web页面实现用户操作,包括学生信息录入、查询、修改、课程管理、成绩管理等功能。
2. 数据库设计使用MySQL数据库存储学生信息、课程信息和成绩信息,建立Student、Course、Score三张表。
3. 后端开发采用Python语言结合Flask框架实现后端逻辑,实现与数据库的交互和数据处理。
4. 前端开发利用HTML、CSS和JavaScript实现用户友好的前端界面,与后端进行数据交互。
数据库学籍管理系统课程设计

数据库学籍管理系统课程设计随着信息化的发展,各个领域的管理都越来越需要借助计算机来实现。
在高校中,学籍管理是一项非常重要的工作,其管理水平的高低直接影响着学校的办学质量。
为了提高学籍管理的效率和准确性,本文提出了一种基于数据库的学籍管理系统设计方案。
一、系统需求分析我们需要对学籍管理系统的功能需求进行分析。
学籍管理系统需要能够完成以下功能:1. 学生信息管理:包括学生基本信息、学籍信息、成绩信息等;2. 教师信息管理:包括教师基本信息、教学信息、教学成果等;3. 课程信息管理:包括课程基本信息、选课信息、考试信息等;4. 班级信息管理:包括班级基本信息、班级成员等;5. 用户管理:包括管理员、教师、学生等用户的权限管理。
二、系统设计方案1. 数据库设计在学籍管理系统中,数据库是至关重要的。
本系统中,采用MySQL数据库进行数据存储和管理。
数据库的设计应该遵循范式化设计原则,以保证数据的完整性和一致性。
具体地,可以考虑以下表的设计:- 学生表:包括学生ID、姓名、性别、出生日期、学籍号、年级、专业等字段;- 教师表:包括教师ID、姓名、性别、出生日期、职称、所属学院等字段;- 课程表:包括课程ID、课程名称、课程学分、任课教师等字段;- 成绩表:包括成绩ID、学生ID、课程ID、成绩等字段;- 班级表:包括班级ID、班级名称、班主任等字段。
2. 系统界面设计学籍管理系统的界面设计应该符合操作习惯,方便用户使用。
具体地,可以按照以下设计思路:- 登录界面:用户登录时需要输入用户名和密码,以验证身份;- 学生信息管理界面:管理员可以对学生的基本信息、学籍信息、成绩信息进行管理,包括添加、修改、删除等操作;- 教师信息管理界面:管理员可以对教师的基本信息、教学信息、教学成果进行管理,包括添加、修改、删除等操作;- 课程信息管理界面:管理员可以对课程的基本信息、选课信息、考试信息进行管理,包括添加、修改、删除等操作;- 班级信息管理界面:管理员可以对班级的基本信息、班级成员等进行管理,包括添加、修改、删除等操作;- 用户管理界面:管理员可以对管理员、教师、学生等用户的权限进行管理,包括添加、修改、删除等操作。
学生学籍管理系统SQL数据库课程设计

学生信息修改:修 改学生的姓名、性 别、年龄、班级等 信息
学生信息删除:删 除学生的信息
学生信息录入: 学籍状态管理:
包括姓名、性 包括入学、转
别、出生日期、 学、休学、复
身份证号等基 学、毕业等状本信息Fra bibliotek态变更
成绩管理:包 括各科成绩、 总成绩、排名
等
学籍档案查询: 学籍信息修改: 学籍信息删除: 包括学籍信息、 包括姓名、性 包括学籍信息 成绩、学籍状 别、出生日期、 的删除功能 态等查询功能 身份证号等基
GROUP BY语句:用于对查询结果进行 分组
HAVING语句:用于对分组结果进行过 滤
JOIN语句:用于连接多个表进行查询
添加项标题
权限管理:GRANT、REVOKE等语句用于授予和撤销用户权限
添加项标题
事务控制:BEGIN TRANSACTION、COMMIT、ROLLBACK等语 句用于管理事务
本信息的修改
课程添加:添加新的课程信息 课程修改:修改已存在的课程信息 课程删除:删除不需要的课程信息 课程查询:查询特定课程信息
成绩录入:支持手动录入和批量导入成绩信息 成绩查询:支持按学号、姓名、班级等条件查询成绩信息 成绩修改:支持修改已录入的成绩信息 成绩统计:支持按班级、学科等条件统计成绩信息
系统性能优化
使用索引:提高查询速度,减少磁盘I/O 避免全表扫描:使用WHERE子句过滤数据,减少扫描范围 避免子查询:使用JOIN操作代替子查询,提高查询效率 避免使用函数:在查询中使用函数可能会导致查询效率降低 避免使用OR操作符:使用IN操作符代替OR操作符,提高查询效率 避免使用LIKE操作符:使用正则表达式代替LIKE操作符,提高查询效率
学籍管理数据库课程设计

学籍管理数据库课程设计一、课程目标知识目标:1. 学生能够理解学籍管理数据库的基本概念,掌握数据库的结构和功能。
2. 学生能够运用数据库操作语言,如SQL,进行学籍信息的增加、删除、修改和查询。
3. 学生能够掌握数据库的安全性和完整性原则,并应用于学籍管理数据库的维护。
技能目标:1. 学生能够运用所学知识,独立设计并实现一个简单的学籍管理数据库系统。
2. 学生能够通过实践操作,熟练使用数据库管理软件进行学籍信息的日常维护。
3. 学生能够运用数据库技术解决实际问题,提高数据处理和分析能力。
情感态度价值观目标:1. 学生通过学习数据库知识,培养对信息技术的兴趣和爱好,提高信息素养。
2. 学生在学习过程中,养成合作、探究的学习态度,增强解决问题的自信心。
3. 学生能够认识到学籍管理数据库在现代教育管理中的重要性,激发学习责任感。
本课程针对高年级学生,结合学科特点,注重理论知识与实践操作的结合,培养学生运用数据库技术解决实际问题的能力。
在教学过程中,关注学生的个体差异,提供个性化的指导,确保课程目标的达成。
通过本课程的学习,使学生具备扎实的数据库知识,为未来从事教育管理工作打下基础。
二、教学内容本课程教学内容分为以下三个部分:第一部分:数据库基础知识1. 数据库概念、特点及其应用领域。
2. 数据模型:实体-关系模型、关系模型。
3. 关系数据库的基本结构:表、视图、索引。
4. 常用数据库管理系统简介。
第二部分:SQL语言及数据库操作1. SQL语言基础:数据定义、数据操纵、数据查询。
2. 约束和索引的创建与应用。
3. 学籍管理数据库的设计与实现。
4. 常用SQL查询语句的编写与实践。
第三部分:数据库维护与管理1. 数据库安全性与完整性原则。
2. 数据库备份与恢复。
3. 数据库性能优化。
4. 学籍管理数据库的日常维护操作。
教学内容依据教材章节进行安排,结合课程目标,注重理论与实践相结合。
在教学进度上,根据学生的接受程度和实际需求,适度调整教学节奏,确保学生能够扎实掌握每一个知识点。
数据库课程设计-学生学籍管理系统

课程设计报告科目:数据库系统设计题目:学生学籍管理系统专业:计算机科学与技术姓名:数据库设计一. 需求分析1.数据需求: (1)数据字典主要涉及到以下七个表,分别为:专业参照表、班级信息表、课程表、学生基本信息表、教学计划表、教师授课表、学生成绩表。
以下是数据字典:专业参照表班级信息表课程表学生基本信息表教学计划表教师授课表(假设教师无重名)学生成绩表 2. 功能需求:(1)录入一位学生,包含学号、姓名、性别、出生年月、班级等信息 (2)按学号、姓名、专业三种方式查询学生基本信息 (3)录入一学生成绩(5)查询一位学生的必修课平均成绩、所有课程平均成绩(平均成绩应按学分加权)(6)查询一位学生被哪些教师教过课(7)查询快要被开除的学生(距被开除差3学分之内)二.数据库设计1.概念结构设计局部ER图整体的ER图2. 逻辑结构设计(1)ER图转换为关系模型由ER图可见:图中有五个实体:专业,课程,班级,教师和学生;五个关系:专业和班级的1:n二元关系、专业和课程的1:n二元关系,学生和班级的1:n二元关系、教师、课程和班级的三元关系、学生和课程的1:n二元关系。
由于每个实体必须构造表,所以可以先得到五个实体的信息表,实体的码就是关系的码,实体的属性即关系模型的属性:(有下划线的属性为主码,斜体的属性为外码)学生信息表:S (sno, sname, ssex, sbirth)课程信息表:C (cno, cname, cnature, cterm, ccredit)专业信息表:M (mno, mname)教师信息表:T (tno, tname)班级信息表:L (lno)对应的属性分别为:学号,姓名,性别,出生日期课程编号,课程名,课程性质,课程学期,课程学分专业编号,专业名教师编号,教师名班级编号转换为关系的属性,而关系的码为n端实体的码。
以上ER图中学生和班级的关系、学生和课程的关系、专业和班级的关系、专业和课程的关系为1:n关系,所以转换的关系模式为:学生分班表:SL (sno, lno)专业分班表:LM (lno, mno)专业教学表:MC(mno, cno)学生选课表:SC (sno, cno, score)对于3个或3个以上实体间的一个多元关系可以转换为一个关系模式。
高校学籍管理系统数据库课程设计

高校学籍管理系统数据库课程设计一、介绍高校学籍管理系统是高校学生信息管理的重要组成部分,其建设涉及学生的各类信息管理和学校资源的整合利用。
数据库课程设计是计算机专业学生的重要课程之一,通过设计高校学籍管理系统数据库,可以帮助学生深入理解数据库的相关知识和实际应用,提高他们的数据库设计和管理能力。
二、深入评估1. 主题分析高校学籍管理系统数据库课程设计是一个综合性的课程设计项目,涉及数据库设计、数据管理、系统架构等多个方面的知识。
在课程设计过程中,学生需要综合运用所学的数据库理论知识和技术手段,设计一个完整的学籍管理系统数据库,包括学生信息、课程信息、教师信息、成绩管理等多个模块。
2. 深度分析在进行高校学籍管理系统数据库课程设计时,学生需要首先对系统的功能需求进行分析。
这包括对学校学籍管理的实际需求进行调研和分析,确定系统需要支持的功能和业务流程。
学生需要进行数据库设计,包括实体关系模型设计、数据库表结构设计、数据字典编制等,在设计过程中需要考虑到数据的一致性、完整性和安全性。
学生需要进行系统实现和测试,包括数据库的创建和填充、系统界面的设计和开发、系统功能的测试和调试等,最终完成一个完整的高校学籍管理系统数据库课程设计项目。
3. 广度分析高校学籍管理系统数据库课程设计涉及的知识领域非常广泛,涵盖了数据库理论、数据库设计、数据库管理、系统分析与设计、软件工程等多个方面的知识。
在课程设计过程中,学生需要综合运用这些知识,进行系统化的设计和实现工作。
高校学籍管理系统数据库课程设计不仅可以帮助学生巩固数据库理论知识,还可以培养他们的系统设计和实现能力,为他们未来的工作和学习打下坚实的基础。
三、文章撰写在这篇文章中,我将会结合深度和广度的要求,对高校学籍管理系统数据库课程设计进行全面的评估和探讨,帮助读者更深入地理解这一课程设计项目的重要性和复杂性。
高校学籍管理系统数据库课程设计的重要性不言而喻。
作为计算机专业学生的重要课程之一,这一课程设计项目对学生的数据库设计和管理能力有着重要的培养作用。
《学籍管理系统数据库设计》

《学籍管理系统数据库设计》实验指导书一学籍管理系统的数据库设计一、实验目的与要求⏹对学籍管理系统进行数据库设计,包括需求分析、概念设计、逻辑设计和物理设计⏹此部分所省略图形、表格等,由学生自己设计二、实验内容和步骤1.需求分析1.1 用户需求本系统是针对高等院校的学生学籍管理,因此学籍管理系统的用户包括系统管理员、教师和学生。
主要涉及系部信息、班级信息、任课教师信息、学生信息、课程信息以及选课记录和成绩等多种数据信息。
实现的具体功能如下:●基本信息管理——系统管理员负责对各种基本信息的录入、修改、删除等操作。
●学生成绩管理——系统管理员负责对学生成绩的录入、修改、删除等操作,学生可以查询各科成绩。
●信息查询统计——学生可以查询基本信息和各科的考试成绩,老师可以查询基本信息和授课信息,系统管理员负责把老师提交的学生成绩进行管理,计算总成绩和平均成绩,统计不及格学生信息和获得奖学金学生的信息,最后再输出所有的信息。
●毕业生信息管理——系统管理员负责计算毕业学生在学校期间所修课程的总学分,并进行审核,最后输出登记表和名册。
●系统用户管理——系统管理员负责用不同的权限来限制不同用户对系统的使用。
以上是用户对系统的基本的功能要求,此外用户还要求系统的效率要高,查询速度要快,比较小的冗余,易维护,具有较高的数据安全性。
1.2 划分功能模块根据系统功能的需求分析和高等院校学籍管理的特点,经过模块化的分析得到如下图1-1所示的系统功能模块结构图。
图1-1 系统功能模块图1.3数据结构数据结构反映了数据之间的组合关系。
一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或若干个数据项和数据结构混合组成。
经过数据项和用户需求的分析,我对本系统一共分了5个组,具体如下表所示:表 1.1 数据结构表1.4数据流数据流是数据结构在系统内传输的路径。
通过对用户的需求分析,以及数据项和数据流的设计,得出了相应的数据流描述如下表所示:1、数据流定义表表 1.2 数据流定义表2、外部项定义表表 1.3 外部项定义表2.概念设计概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成独立于具体DBMS的概念模型。
数据库课程设计学籍

数据库课程设计学籍一、教学目标本课程旨在让学生了解和掌握数据库的基本概念、原理和方法,培养学生运用数据库技术解决实际问题的能力。
具体目标如下:1.知识目标:(1)理解数据库的基本概念,如数据、数据库、表、字段等;(2)掌握数据库的常见操作,如创建、修改、删除表和字段;(3)了解数据库的索引、约束、视图和存储过程等高级功能;(4)熟悉数据库的性能优化和故障处理方法。
2.技能目标:(1)能够使用数据库管理工具进行数据库的创建、修改和维护;(2)能够编写简单的SQL语句进行数据的增、删、改、查操作;(3)具备数据库设计和实现简单应用系统的能力;(4)能够对数据库进行性能优化和故障排查。
3.情感态度价值观目标:(1)培养学生对数据库技术的兴趣和好奇心,激发学生主动学习和探索的精神;(2)培养学生团队协作意识和沟通能力,提高学生解决实际问题的能力;(3)培养学生热爱科学、追求真理的品质,树立正确的信息观和数据安全意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.数据库的基本概念和原理:数据、数据库、表、字段、索引、约束等;2.数据库的操作:创建、修改、删除表和字段,实现数据的增、删、改、查;3.数据库的高级功能:索引、约束、视图、存储过程等;4.数据库性能优化和故障处理:性能监控、索引优化、故障排查等;5.数据库应用系统的设计与实现:需求分析、数据库设计、系统实现等。
三、教学方法本课程采用多种教学方法相结合,以提高学生的学习兴趣和主动性:1.讲授法:讲解数据库的基本概念、原理和操作方法;2.案例分析法:分析实际案例,让学生了解数据库在实际应用中的作用;3.实验法:让学生动手实践,掌握数据库的操作和应用;4.讨论法:分组讨论,培养学生的团队协作意识和沟通能力。
四、教学资源1.教材:选用权威、实用的数据库教材,为学生提供系统、全面的学习资源;2.参考书:推荐一些优秀的数据库相关参考书籍,丰富学生的知识体系;3.多媒体资料:制作精美的教学课件,提高学生的学习兴趣;4.实验设备:提供充足的数据库实验设备,保证学生实践操作的需要。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告科目:设计题目:学生学籍管理系统专业:计算机系软件工程0402班姓名:XXXXX 学号:XXXXXXX目录绪论 (2)数据库设计 (2)1.需求分析 (2)1.1数据需求 (2)1.2功能需求 (3)2.数据库设计 (3)2.1概念结构设计 (4)2.2逻辑结构设计 (5)2.3物理结构设计 (6)3.系统功能设计 (8)4.系统功能实现 (9)4.1程序的运行环境 (9)4.2系统的开发环境 (9)4.3数据库的创建和链接 (9)4.4运行界面及其对应的源代码 (10)5.实验总结 (23)6.参考文献 (23)绪论学生学籍管理是教育教学单位不可缺少的部分,它的内容对教学管理和学校的决策者都非常重要。
给学校教学管理提供了很大的方便性,提高了工作效率。
但是一直以来人们用传统人工的方式管理文件文档,这种管理方式效率低,保密性差,出错不易更改,同时也耗费了大量的人力财力,时间一长,将产生大量的文件数据,这对于查找,维护,更新都带来了很大的困难。
随着科学技术的不断发展,尤其是计算机软件水平的日益提高,使得以上问题得到了很好的解决。
使用计算机可以方便的对大量数据进行增加,删除,更新等操作。
它有着人工管理永远无法比拟的优点:检索迅速,查找方便,可靠性大,存储量大,保密性好,寿命长,成本低等。
例如:通过校园网,我们可以方便的进行学生信息查询,学生成绩的添加,以及最新的教务通知等。
当然,这些都离不开数据库技术和网络技术的支持。
数据库是数据管理的最新技术,是计算机计算机技术的重要分支,也是计算机领域发展最快的学科之一。
学生学籍管理系统就是数据库在网络上应用。
综上,开发这样的一套软件十分必要。
同时旧的人工管理机制必将被以计算机为基础的信息管理所取代,从而实现对数据的高效,长久,安全的管理。
数据库设计一.需求分析1.数据需求:(1)数据字典主要涉及到以下几个表,分别为:学生基本信息表,课程表,专业信息表,课程设置表,学生选课表,学生与专业之间的属于表以及管理人员的密码表。
以下是数据字典:专业信息表课程设置表学生与专业的属于表管理人员密码表(2)数据流图第一层第二层第三层第四层统计成绩第五层学生信息2.功能需求:(1)实现学生基本情况的录入,修改,删除等基本操作。
(2)对学生基本信息提供灵活的查询方式。
(3)完成一个班级的学期选课功能。
(4)实现学生成绩的录入,修改,删除等基本操作。
(5)能方便的对学生的个人学期成绩进行查询。
(6)具有成绩统计,排名等功能。
(7)具有留级,休学等特殊情况的处理功能。
(8)能输出常用的各种报表。
(9)具有数据备份和数据恢复功能。
二.数据库设计 1.概念结构设计 局部ER 图整体的ER 图2. 逻辑结构设计(1)ER图转换为关系模型由ER图可见:图中有三个实体:学生,课程,和专业;三个关系:学生选课关系,学生与专业之间的属于关系,专业的课程设置。
由于每个实体必须构造表,所以可以先得到三个实体的信息表,实体的码就是关系的码,实体的属性即关系模型的属性:学生基本信息表:S (sno, sname, ssex, sbirth, spasw)课程基本信息表:C (cno, cname, cperiord)专业基本信息表:P (pno, pname, pnum, psdept)对应的属性分别为:学号,姓名,性别,出生日期,登陆密码课程编号,课程名,学期专业编号,专业名,专业人数,所在院系对于多对多的关系来说,与该联系相连的实体的码以及本身的属性均转换为关系的属性,各实体之间的码组成关系的码或者关系的码的一部分。
以上ER图的三个联系为多对多,所以转换为关系模式为:课程设置表:pc ( pno, psenior, cno)与设置相连的实体有专业和课程,根据多对多的转换原则:专业的码pno,课程的码cno以及设置本身的属性共同构成该关系模式的码,所以该关系模式的码为全码。
学生选课表:SC (sno, psenior, cno, grade)与选课相连的实体有学生和课程,同上由学生的码sno,课程的码cno以及选课本身的码psenior构成该关系模式的码,即(sno,cno,psenior)。
此外,选课表还有一个非主属性grade。
学生与专业的属于表:SP(sno,pno)与属于关系相联的实体是学生和专业。
同上由学生的码sno,专业的码pno构成该关系模式的码,由于此关系没有其他的码也就没有非主属性。
(2)关系模式的优化:学生表s (sno,sname,ssex,sbirth,spasw)该关系模式的码为sno,由于只有一个码,所以不存在非主属性对码的部分函数依赖,可以达到2NCF。
另外,该关系模式的函数依赖为: sno -> sname, sno -> ssex, sno -> ssex,sno -> sbirth, sno -> spasw,其间不存在传递依赖,故学生表可达到3NCF.课程表C ( cno ,cname , cperiod)该关系模式的码为cno, cname,设主码为cno,因为该关系模式中的码都是单一的,即不存在有两个或者两个以上的属性组成的码,所以不存在非主属性对码的部分函数依赖,可以达到2NCF。
另外,该关系模式的函数依赖为:cno->cname, cno->cperiod, cname->cno ,cname -> cperiod. 因为cno -> cname,cname -> cperiod cno -> cperiod, 所以该关系模式中存在传递依赖,不能达到3NCF。
故优化该表为:C1(cno,period),C2(cname,cperiod).从而两表都达到了3NCF。
专业表P (pno,pname,pnum,pdept)该关系模式的码为pno,pname,其中设定pno为主码。
同课程表,该表不存在有两个或者两个以上属性组成的码,即不存在非主属性对码的部分函数依赖,故可达到2NCF。
另外,此关系模式的函数依赖为:pno->pname, pno-> pnum, pno -> pdept , pname -> pno, pname->pnum, pname -> pdept; 由于存在传递依赖:pno -> pnum., 所以未能达到3NCF。
优化分解为:P1 (pno,pnum,pdept), P2 (pname,pnum,pdept)明显,两表都达到了3NCF.课程设置表PC(pno,psenior,cno),该关系模式的码为:(pno,psenior,cno)为全码,所以可直接达到3NCF学生选课表SC(sno,psenior,cno,grade)该关系模式的码为:(sno,psenior,cno),因为不存在非主性grade对码的部分函数依赖,所以可达到2NCF,由于不存在函数依赖(表中的函数依赖只有(sno,psenior,cno)-> grade)故也达到了3NCF属于表SP(sno,pno)该关系模式的码(sno,pno)也是全码,所以也达到了3NCF用户表U(uname,upasw)该表的码为uname,明显upasw对码uname是完全函数依赖的,从而达到2NCF。
另外因为只有两个属性,所以不存在传递函数依赖,该表达到了3NCF3.物理结构设计(1)基本表学生表s课程表c1课程表c2专业表p1专业表p2管理人员密码表u(2)视图,索引a.索引:本数据库中的表除了主键本身生成的主索引外,没有定义其他的索引。
在查询时即引用主索引即可。
表s 的主索引列为:sno 表c1的主索引列为:cno 表c2的主索引列为:cname 表p1的主索引列为:pno 表p2的主索引列为:pname表sc 的主索引列为:(pno,psenior,cno) 表sp 的主索引列为:(sno,pno) 表u 的主索引列为:unameb .视图:虽然关系数据模型分析的结果表示该数据库需要定义不同的用户视图,但考虑到数据库与前台开发程序的连接比较复杂,所以该数据库中没有单独定义用户视图,不同的用户视图被有选择性的的select 语句的结果集取. 三.系统功能设计四.系统实现3.数据库的创建和链接本系统的前台开发工具为Microsoft visual basic 6.0 ,除了一些常用的控件Commandbutton,Combobox,Textbox和Label外,这里还使用了控件ADO和DataGrid。
ADO 用来链接数据库与前台开发程序,指定链接的数据源和要访问的数据,并通过绑定要使用的数据来显示所获得的数据。
DataGrid控件的作用是以表格的形式显示结果中的全部数据,但允许在表格中增加,删除和修改纪录。
具体的链接过程如下:ADO(步骤)(1)选择“工程”菜单中的部件命令,打开部件对话框,在控件选项中选择Microsoft ADO Data Control 6.0(OLEDB)复选框,单击确定,工具栏中会出现ADO数据控件的图标,其微帮助名称为:Adodc。
(2)在当前窗体上添加一个ADO控件。
(3)打开ADO的属性页,设置使用的ODBC数据资源的名称,(如果没有则新建一个)即我所使用的数据库wangjiaDSN;设置身份验证,包括用户名称和密码;设置纪录源,命令类型选择adCmdTable.(因为我所用到的记录源都是表,所以设置为该属性。
adCmdTable.表示的是数据源的属性是一个表名,表示其结果级是对该表执行无条件查询后得到的结果),表名或存储过程名则选择自己所要用到的表。
到此,便链接成功。
DataGrid(步骤)(1)同ADO控件一样,选择选择“工程”菜单中的部件命令,打开部件对话框,在控件选项中选择Microsoft DataGrid Control 6.0(OLEDB)复选框,单击确定,工具栏中会出现DataGrid数据控件的图标。
(2)在当前窗体上添加一个DataGrid控件。
(3)打开DataGrid的属性页,设置标题名,列,列标题与其对应的数据段。
颜色,字体等可根据需要设定。
将DataGrid的Recordsource设置为该窗体对应的Adodc;另外可检索字段和删除字段,这样可以显示自己想要的字段,而不是将adodc所对应的内容全部显示出来。
到此,链接成功。
4.窗体及其所对应的源代码欢迎界面登陆界面源代码Option ExplicitDim stuflag As Boolean '标记用户是否为学生Public LoginSucceeded As BooleanPrivate Sub cmdCancel_Click()'设置全局变量为false'不提示失败的登录LoginSucceeded = FalseMe.HideEnd SubPrivate Sub cmdOK_Click()'检查正确的密码Dim num1 As IntegerDim num2 As IntegerIf Len(txtUserName.Text) > 0 And Len(txtPassword) > 0 And stuflag = False Then '管理人员Adodc1.Item(0).CommandType = adCmdTextAdodc1.Item(0).RecordSource = "select * from wjuser where uname='" & Trim(txtUserName.Text) & "'And upasw='" & Trim(txtPassword.Text) & "'"Adodc1.Item(0).Refreshnum1 = Adodc1.Item(0).Recordset.RecordCountElse '学生Adodc1.Item(1).CommandType = adCmdTextAdodc1.Item(1).RecordSource = "select sname spasw from wjstudent where sname= '" & Trim(txtUserName.Text) & "'And spasw='" & Trim(txtPassword.Text) & "'"Adodc1.Item(1).Refreshnum2 = Adodc1.Item(1).Recordset.RecordCountEnd IfIf num1 <= 0 And num2 <= 0 ThenMsgBox "无效的密码,请重试!", , "登录"txtPassword.SetFocusSendKeys "{Home}+{End}"ElseLoginSucceeded = TrueMe.HideMDIForm1.ShowEnd IfEnd SubPrivate Sub Option1_Click(Index As Integer)If Index = 0 ThenIf stuflag = False Thenstuflag = TrueEnd IfElseIf stuflag = True Thenstuflag = FalseEnd IfEnd IfEnd Sub主界面添加用户界面源代码Private Sub Command1_Click() '添加用户Adodc1.Recordset.AddNewEnd SubPrivate Sub Command2_Click() '更新Adodc1.Recordset.Fields("uname") = Trim(Text1.Text) Adodc1.Recordset.Fields("upasw") = Trim(Text2.Text) Adodc1.Recordset.UpdateMsgBox "添加成功!", , "提示"End Sub用户密码修改界面源代码Private Sub Command1_Click()Command2.Enabled = False '使取消按钮不可用If Len(Text4.Text) <> 0 Then '查看输入用户是否存在mandType = adCmdTextAdodc1.RecordSource = "select * from wjuser where uname='" & Trim(Text1.Text) & "'"Adodc1.RefreshIf Adodc1.Recordset.RecordCount <= 0 ThenMsgBox "没有该用户!,请重新输入", , "提示"ElseIf Len(Text1.Text) <> 0 Then '查看旧密码是否正确mandType = adCmdTextAdodc1.RecordSource = "select * from wjuser where upasw='" & Trim(Text4.Text) & "'"Adodc1.RefreshIf Adodc1.Recordset.RecordCount <= 0 ThenMsgBox "密码不正确,请重新输入!", , "提示"ElseIf Len(Text2.Text) <> 0 Then '确认密码并修改If Len(Text3.Text) <> 0 ThenIf Text2.Text <> Text3.Text ThenMsgBox "您的输入不一致,请重新确认!", , "提示"ElseAdodc1.Recordset.Fields("upasw") = Trim(Text3.Text)Adodc1.Recordset.UpdateMsgBox "修改成功", , "提示"End IfEnd IfEnd IfEnd IfEnd IfEnd IfEnd IfEnd SubPrivate Sub Command2_Click() '取消Command1.Enabled = False '使修改按钮不可用Adodc1.Recordset.CancelUpdateEnd SubPrivate Sub Command3_Click()Unload MeEnd Sub学生密码修改界面源代码Private Sub Command1_Click() '修改Command2.Enabled = False '使取消按钮不可用If Len(Text4.Text) <> 0 Then '查看输入学号是否存在mandType = adCmdTextAdodc1.RecordSource = "select * from wjstudent where sno='" & Trim(Text4.Text) & "'"Adodc1.RefreshIf Adodc1.Recordset.RecordCount <= 0 ThenMsgBox "没有该学号!,请重新输入", , "提示"ElseIf Len(Text1.Text) <> 0 Then '查看旧密码是否正确mandType = adCmdTextAdodc1.RecordSource = "select * from wjstudent where spasw='" &Trim(Text1.Text) & "'"Adodc1.RefreshIf Adodc1.Recordset.RecordCount <= 0 ThenMsgBox "密码不正确,请重新输入!", , "提示"ElseIf Len(Text2.Text) <> 0 Then '确认密码并修改If Len(Text3.Text) <> 0 ThenIf Text2.Text <> Text3.Text ThenMsgBox "您的输入不一致,请重新确认!", , "提示"ElseAdodc1.Recordset.Fields("spasw") = Trim(Text3.Text)Adodc1.Recordset.UpdateMsgBox "修改成功", , "提示"End IfEnd IfEnd IfEnd IfEnd IfEnd IfEnd IfEnd SubPrivate Sub Command2_Click() '取消Adodc1.Recordset.CancelUpdateCommand1.Enabled = False '使修改按钮不可用End SubPrivate Sub Command3_Click() '退出Unload MeEnd Sub个人信息维护界面源代码Private Sub Command1_Click() '第一条Adodc1.Recordset.MoveFirstEnd SubPrivate Sub Command2_Click() '上一条Adodc1.Recordset.MovePreviousIf Adodc1.Recordset.BOF = True Then '如果已经移到了第一行之前,则指针定位在第一行Adodc1.Recordset.MoveFirstEnd IfEnd SubPrivate Sub Command3_Click() '下一条Adodc1.Recordset.MoveNextIf Adodc1.Recordset.EOF = True Then '如果已经移到了最后一行之后,则指针定位在最后一行Adodc1.Recordset.MoveLastEnd IfEnd SubPrivate Sub Command4_Click() '末一条Adodc1.Recordset.MoveLastEnd SubPrivate Sub Command5_Click() '添加Adodc1.Recordset.AddNewCommand5.Enabled = FalseCommand6.Enabled = FalseCommand7.Enabled = TrueCommand8.Enabled = TrueEnd SubPrivate Sub Command6_Click() '删除Dim res As Integerres = MsgBox("要删除此记录吗?", vbExclamation + vbYesNo + vbDefaultButton2) '提示用户If res = vbYes ThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextIf Adodc1.Recordset.EOF = True ThenAdodc1.Recordset.MoveLastEnd IfEnd IfEnd SubPrivate Sub Command7_Click() '更新Adodc1.Recordset.Fields("sno") = Trim(Text1.Text)Adodc1.Recordset.Fields("sname") = Trim(Text2.Text)Adodc1.Recordset.Fields("ssex") = Trim(Text3.Text)Adodc1.Recordset.Fields("sbirth") = Trim(Text4.Text)Adodc1.Recordset.UpdateCommand5.Enabled = True '使添加和删除按钮可用Command6.Enabled = TrueCommand8.Enabled = False '使取消按钮不可用End SubPrivate Sub Command8_Click()Adodc1.Recordset.CancelUpdateCommand5.Enabled = True '使添加和删除按钮可用Command6.Enabled = TrueCommand8.Enabled = False '使取消按钮不可用End SubPrivate Sub Command9_Click() '退出Unload MeEnd SubPrivate Sub Form_Load() '载入界面Command8.Enabled = False '使取消按钮不可用End Sub成绩维护界面源代码Private Sub Command1_Click() '添加Adodc1.Recordset.AddNewCommand1.Enabled = False '使添加,修改,删除按钮不可用Command3.Enabled = FalseCommand6.Enabled = True '使添加退出可用Command4.Enabled = TrueEnd SubPrivate Sub Command2_Click()Adodc1.Recordset.MoveFirstEnd SubPrivate Sub Command3_Click() '删除Dim res As Integerres = MsgBox("要删除该纪录吗?", vbExclamation + vbYesNo + vbDefaultButton2) '提示用户If res = vbYes ThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextIf Adodc1.Recordset.EOF = True ThenAdodc1.Recordset.MoveLastEnd IfEnd IfEnd SubPrivate Sub Command4_Click() '退出Unload MeEnd SubPrivate Sub Command5_Click() '更新Adodc1.Recordset.Fields("sno") = Trim(Text1.Text) Adodc1.Recordset.Fields("cno") = Trim(Text2.Text) Adodc1.Recordset.Fields("grade") = Trim(Text3.Text) Adodc1.Recordset.UpdateCommand1.Enabled = True '使添加和删除按钮可用Command3.Enabled = TrueCommand6.Enabled = False '使取消按钮不可用End SubPrivate Sub Command6_Click() '取消Adodc1.Recordset.CancelUpdateCommand1.Enabled = TrueCommand3.Enabled = TrueEnd SubPrivate Sub Command7_Click()Adodc1.Recordset.MovePreviousIf Adodc1.Recordset.BOF = True ThenAdodc1.Recordset.MoveFirstEnd IfEnd SubPrivate Sub Command8_Click()Adodc1.Recordset.MoveNextIf Adodc1.Recordset.EOF = True ThenAdodc1.Recordset.MoveLastEnd IfEnd SubPrivate Sub Command9_Click()Adodc1.Recordset.MoveLastEnd Sub成绩统计源代码:Private Sub Command1_Click()If Len(Text1.Text) <> 0 ThenmandType = adCmdTextAdodc1.RecordSource = "select * from wjsc where sno='" & Trim(Text1.Text) & "'"Adodc1.RefreshIf Adodc1.Recordset.RecordCount <= 0 ThenMsgBox "该学号不存在!请重新输入", , "提示"Else '求平均分和最高分Adodc1.RecordSource = "select avg(grade) as [avggrade],Max(grade) as [high] from wjsc where sno='" & Trim(Text1.Text) & "'and psenior='" & Trim(Combo1.Text) & "'"Adodc1.RefreshLabel4.Caption = Adodc1.Recordset.Fields("avggrade")Label6.Caption = Adodc1.Recordset.Fields("high")Label4.Alignment = 2 '使文字居中Label6.Alignment = 2Adodc1.RecordSource = "select * from wjsc where sno='" & Trim(Text1.Text) & "'and psenior='" & Trim(Combo1.Text) & "' and grade <= 59 "Adodc1.RefreshIf Adodc1.Recordset.RecordCount <= 0 ThenMsgBox "该同学没有不及格的课程", , "提示"End IfEnd IfEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd Sub信息查询源代码Dim nameflag As Boolean '标记是否按姓名查询Private Sub Command1_Click() '个人信息查询Dim searchSQL As StringmandType = adCmdTextIf nameflag = False ThensearchSQL = "select * from wjstudent where sno ='" & Trim(Text1.Text) & "'" '按学号查询ElsesearchSQL = "select *from wjstudent where sname ='" & Trim(Text1.Text) & "'" '按姓名查询End IfAdodc1.RecordSource = searchSQLAdodc1.RefreshIf Adodc1.Recordset.RecordCount <= 0 ThenMsgBox "不存在此纪录!请重新输入", , "警告"End IfEnd SubPrivate Sub Command2_Click() '退出查询信息窗体Unload MeEnd SubPrivate Sub Option1_Click(Index As Integer) '选择查询标准nameflag = FalseIf Index = 0 ThenIf nameflag = True Thennameflag = FalseEnd IfEnd IfIf Index = 1 ThenIf nameflag = False Thennameflag = TrueEnd IfEnd IfEnd Sub成绩查询源代码Private Sub Command1_Click()Dim str As StringmandType = adCmdTextAdodc1.RecordSource = "select * from wjsc where sno ='" & Trim(Text1.Text) & "'and psenior='" & Trim(Combo1.Text) & "'" '按学号查询Adodc1.RefreshIf Adodc1.Recordset.RecordCount <= 0 ThenMsgBox "不存在此纪录!请重新输入", , "警告"End IfEnd SubPrivate Sub Command2_Click()Unload MeEnd Sub关于界面六.设计总结通过这次的实验,我对数据库在生活中的广泛应用有了更深的体会,同时也加深了对SQL2000的认识,了解了相关的VB知识,尤其对数据库与开发程序的链接有了进一步的认识。