阶段项目:学生信息管理系统数据库设计

目录

  • 问题描述:
  • 一、后台数据库的设计
    • 1)设计数据库
    • 2)插入数据
    • 3)查询数据
    • 4)修改数据
    • 5)管理数据
      • 1.导出数据到各种异构数据源、导出脚本
      • 2.附加和分离数据库
  • 二、前端界面的开发(后期我们可以用dNet开发)
  • 总结

问题描述:

       上海某高校拟开发一套高校信息管理系统,该系统包括学生档案管理、学生成绩管理、教员信息管理、教务排课等模块,实现学生档案录入、修改、查询,成绩录入、修改、查询,教务排课管理等功能。
       开发此模块涉及两大部分:后台数据库的设计、前端界面的开发

一、后台数据库的设计

       为了简化起见,我们暂讨论“学生成绩管理”子模块,该模块具有成绩输入,成绩查询,名次排序,分数统计等功能。
        现要求对“学生成绩管理”子模块进行数据库的设计并实现,数据库保存在:E\MyApp目录下,文件增长率为10% 。

1)设计数据库

use master
if exists(select * from sysdatabases where name='student_manage')  --判断student_manage库是否存在,若存在则先删除drop database student_managecreate database student_manage                    --创建数据库student_manage
on primary
(
name='student_manage',
filename='E\MyApp\student_manage.mdf',
size=3,
filegrowth=10%
)
log on
(
name='student_manage_log',
filename='E\MyApp\student_manage.ldf',
size=2,
filegrowth=10%
)--创建学生信息表
use student_manage
create table stuInfo(stuName varchar(10) not null,
stuNo varchar(20) not null,
stuSex varchar(5) not null,
stuAge int not null,
stuSeat int not null,
stuAddress text null
)--创建学生成绩表
create table stuMarks(examNo varchar(15) not null,
stuNo varchar(20) not null,
writtenExam int null,
labExam int null
)
--创建约束
alter table stuInfo add constraint pk_stuName primary key(stuName)
alter table stuInfo add constraint ck_stuNo check (stuNo like 's253[0-9][0-9]')
alter table stuInfo add constraint ck_stuSex check (stuSex in ('男','女'))
alter table stuInfo add constraint df_stuSex default '男' for stuSex
alter table stuInfo add constraint ck_stuAge check (stuAge between 15 and 50)
alter table stuInfo add constraint ck_stuSeat check (stuSeat between 0 and 30)
alter table stuInfo add constraint df_stuAddress default '地址不详' for stuAddressalter table stuMarks add constraint uq_examNo unique (examNo)
alter table stuMarks add constraint ck_examNo check (examNo like 'E200507[0-9][0-9][0-9][0-9]')
alter table stuMarks add constraint df_writtenExam default 0 for writtenExam
alter table stuMarks add constraint ck_writtenExam check (writtenExam between 0 and 100)
alter table stuMarks add constraint df_labExam default 0 for labExam
alter table stuMarks add constraint ck_labExam check (labExam between 0 and 100)

2)插入数据

insert into stuInfo(stuName,stuNo,stuSex,stuAge,stuSeat,stuAddress)
values('张秋丽','s25301','男',18,2,'北京海淀')
insert into stuInfo(stuName,stuNo,stuSex,stuAge,stuSeat)
values('李文才','s25302','男',31,5)
insert into stuInfo(stuName,stuNo,stuSex,stuAge,stuSeat,stuAddress)
values('李斯文','s25303','女',22,3,'河南洛阳')
insert into stuInfo(stuName,stuNo,stuSex,stuAge,stuSeat,stuAddress)
values('欧阳俊雄','s25304','男',28,7,'新疆克拉玛依')insert into stuMarks(examNo,stuNo,writtenExam,labExam)
values('E2005070001','s25301',80,58)
insert into stuMarks(examNo,stuNo,writtenExam)
values('E2005070002','s25302',50)
insert into stuMarks(examNo,stuNo,writtenExam,labExam)
values('E2005070003','s25303',97,82)

3)查询数据

1.查询两表的数据

select*from stuInfo
select*from stuMarks 

2.查询男学员名单

select *from stuInfo where stuSex='男'

3.查询笔试成绩优秀的学员情况(成绩在75~100之间)

Select stuName,stuInfo.stuNo,stuSex,stuAge,stuSeat,stuAddress,examNo,writtenExam,labExam
from stuInfo join stuMarks on stuInfo.stuNo=stuMarks.stuNo
where writtenExam between 75 and 100  

4.查询参加本次考试的学员成绩,包括学员姓名,笔试成绩,机试成绩

select stuName,writtenExam,labExam
from stuInfo join stuMarks on stuInfo.stuNo=stuMarks.stuNo

5.统计笔试考试平均分和机试考试平均分

select avg(writtenExam)as '笔试平均分',avg(labExam)as'机试平均分' from stuMarks  

6.统计参加本次考试的学员人数

select count(examNo)as'参加考试人数' from stuMarks  

7.查询没有通过考试的人数(笔试或机试小于60分)

select count(examNo)as'未通过考试人数' from stuMarks where writtenExam<60 or labExam<60

8.查询学员成绩,显示学号,笔试成绩,机试成绩,平均分

select stuNo,writtenExam,labExam,(writtenExam+labExam)/2as avgExam
from stuMarks

9.排名次(按平均分从高到低排序),显示学号、平均分

select stuNo,(writtenExam+labExam)/2as avgExam
from stuMarks
order by avgExam desc   

10.排名次(按平均分从高到低排序),显示姓名,笔试成绩,机试成绩,平均分

select stuName,writtenExam,labExam,(writtenExam+labExam)/2as avgExam
from stuInfo join stuMarks on stuInfo.stuNo=stuMarks.stuNo
order by avgExam desc

11.根据平均分,显示前两名信息,包括姓名、笔试成绩、机试成绩、平均分

select top 2 stuName,writtenExam,labExam,(writtenExam+labExam)/2as avgExam
from stuInfo join stuMarks on stuInfo.stuNo=stuMarks.stuNo
order by avgExam desc

4)修改数据

笔试成绩都提5分

update stuMarks set writtenExam=writtenExam+5 select *
from stuMarks 

100分封顶(加分后超过100分的,按100分计算)

update stuMarks set writtenExam=100 where writtenExam>100 

查看修改后的数据

select * from stuMarks 

5)管理数据

1.导出数据到各种异构数据源、导出脚本

1.1 在SQL Server数据库之间进行数据导入导出

可以使用select into语句导出数据:
        在SQL Server中使用最广泛的就是通过select into语句导出数据,select into语句同时具备两个功能:
       ①根据select后跟的字段以及into后面跟的表名建立空表(如果select后是*, 空表的结构和from所指的表的结构相同);
        ②将select查出的数据插入到这个空表中。在使用select into语句时,into后跟的表必须在数据库不存在,否则出错。

还可以使用insert into 和 update插入和更新数据

1.2 使用opendatasource和openrowset在不同类型的数据库之间导入导出数据
       在异构的数据库之间进行数据传输,可以使用SQL Server提供的两个系统函数opendatasource和openrowset,其中opendatasource可以打开任何支持OLE DB的数据库,并且可以将opendatasource做为select、updte、insert和delete后所跟的表名。

2.附加和分离数据库

附加数据库:
选中数据库,然后鼠标右击,选择【附加】
在这里插入图片描述
然后点【添加】,找到数据库保存的路径,然后确定即可
在这里插入图片描述

分离数据库:
选中要分离的数据库,鼠标右击

在这里插入图片描述

【任务】—【分离】
在这里插入图片描述
勾选要分离的数据库,再确定即可
在这里插入图片描述

二、前端界面的开发(后期我们可以用dNet开发)

略~~~

总结

通过本次项目案例练习了:
       在SQL Server Management Studio中进行常用的数据库操作
       编写SQL语句执行增、删、改、查操作
巩固的知识:
       数据库的常用操作:建库、建表、加约束、建关系
       常用的约束类型:主键、外键、非空、默认值、检查约束
       insert 语句: Insert into 表名(字段1,字段2,…) values (值1, 值2,…)
       update语句: Update 表名 set 字段=值 where …
       条件查询:select …from 表名 where …
       排序:select …from 表名 order by …
       Top语句: select top 2….from 表名…
       统计函数:select avg( …) as 平均分 ….
       选择查询: select ….where labExam between 70 and 90
       内部连接:select …from 表1 inner jion 表2 …

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OpenCV 例程 300 篇】108. 约束最小二乘方滤波

专栏地址&#xff1a;『youcans 的 OpenCV 例程 300篇 - 总目录』 【第 7 章&#xff1a;图像复原与重建】 106. 退化图像的逆滤波 107. 退化图像的维纳滤波 108. 约束最小二乘方滤波 109. 几何均值滤波 【youcans 的 OpenCV 例程 300 篇】108. 约束最小二乘方滤波 6. 退化图像…

分析设计网上书店数据库,并画E-R图

分析并设计网上书店数据库&#xff0c;绘制E-R图&#xff0c;网上书店具有如下功能&#xff1a; 1、会员的注册、登录 2、网上预订图书 3、图书信息浏览 训练技能点&#xff1a; 1、会将E-R图转换为表 2、理解数据规范化 4、将分析在SQL Server数据库中实现具体的表 Sql serv…

【OpenCV 例程 300 篇】109. 几何均值滤波

专栏地址&#xff1a;『youcans 的 OpenCV 例程 300篇 - 总目录』 【第 7 章&#xff1a;图像复原与重建】 106. 退化图像的逆滤波 107. 退化图像的维纳滤波 108. 约束最小二乘方滤波 109. 几何均值滤波 【youcans 的 OpenCV 例程 300 篇】109. 几何均值滤波 6. 退化图像复原 …

课程设计:基于SQL Server的银行ATM 存取款机系统设计与实现

目录前言一、项目背景1、项目任务2、项目技能目标3、需求概述4、开发环境5 、问题分析(1) 银行存取款业务介绍(2) 客户信息(3) 银行卡账户信息(4) 银行卡交易信息(5) 银行卡手工账户和存取款单据信息二、项目实训内容1、实训一&#xff1a;制定《数据库设计与编程规范》2、实训…

【OpenCV 例程 300 篇】110. 投影和雷登变换

专栏地址&#xff1a;『youcans 的 OpenCV 例程 300篇 - 总目录』 【第 7 章&#xff1a;图像复原与重建】 110. 投影和雷登变换 111. 雷登变换反投影重建图像 112. 滤波反投影重建图像 【youcans 的 OpenCV 例程 300 篇】110. 投影和雷登变换 7. 投影重建图像 7.1 计算机断层…

数据分析(SQL)常见面试题:开窗函数

一、什么是开窗函数 开窗函数/分析函数&#xff1a;over() 开窗函数也叫分析函数&#xff0c;有两类&#xff1a;一类是聚合开窗函数&#xff0c;一类是排序开窗函数。 开窗函数的调用格式为&#xff1a; 函数名(列名) OVER(partition by 列名 order by列名) 如果你没听…

MySql基础教程

MySql数据库简单的增删改查等基础教程。 数据库相关操作 查询所有数据库 show databases;选择(使用)数据库 use 数据库名称;查询当前正在使用的数据库名称 select database();创建数据库 create database 数据库名称;创建数据库,判断不存在,再创建: create database if …

【OpenCV 例程 300 篇】111. 雷登变换反投影重建图像

专栏地址&#xff1a;『youcans 的 OpenCV 例程 300篇 - 总目录』 【第 7 章&#xff1a;图像复原与重建】 110. 投影和雷登变换 111. 雷登变换反投影重建图像 112. 滤波反投影重建图像 【youcans 的 OpenCV 例程 300 篇】111. 雷登变换反投影重建图像 7. 投影重建图像 图像重…

SPSS操作(四):系统聚类分析

步骤如下&#xff1a;①【分析】----【分类】----【系统聚类】②x2、x3、x4、x5、x6、x7、x8添加到变量&#xff0c;x1&#xff08;即地区&#xff09;添加到个案标注依据③点击【统计】勾选【解的范围】&#xff0c;可以根据自己的需要选择最小聚类数和最大聚类数&#xff08;…

【OpenCV 例程 300 篇】112. 滤波反投影重建图像

专栏地址&#xff1a;『youcans 的 OpenCV 例程 300篇 - 总目录』 【第 7 章&#xff1a;图像复原与重建】 110. 投影和雷登变换 111. 雷登变换反投影重建图像 112. 滤波反投影重建图像 【youcans 的 OpenCV 例程 300 篇】112. 滤波反投影重建图像 7. 投影重建图像 图像重建的…

利用Python中的BeautifulSoup库爬取豆瓣读书中书本信息

利用BeautifulSoup库&#xff0c;获取前250本图书的信息&#xff0c;需要爬取的信息包括书名、书名的URL链接、作者、出版社和出版时间、书本价格、评分和评论&#xff0c;把这些信息存到txt文件&#xff0c;要求将这些信息对齐&#xff0c;排列整齐 (我是刚学习网络爬虫&#…

【youcans 的 OpenCV 学习课】10. 图像复原与重建

专栏地址&#xff1a;『youcans 的图像处理学习课』 文章目录&#xff1a;『youcans 的图像处理学习课 - 总目录』 【youcans 的 OpenCV 学习课】10. 图像复原与重建 图像复原是对图像退化过程建模&#xff0c;并以图像退化的先验知识来恢复退化的图像。 图像增强是一种主观处…

利用Python中的BeautifulSoup库爬取安居客第一页信息

题目&#xff1a; 网址为https://beijing.anjuke.com/sale/&#xff0c; 利用BeautifulSoup库&#xff0c;爬取第1页的信息&#xff0c;具体信息如下&#xff1a;进入每个房源的页面&#xff0c;爬取小区名称、参考预算、发布时间和核心卖点&#xff0c;并将它们打印出来。&…

【youcans 的 OpenCV 例程200篇】113. 形态学操作之腐蚀

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程 200 篇】113. 形态学操作之腐蚀 ## 1. 形态学图像处理简介 形态学是生物学的概念&#xff0c;主要研究动…

【youcans 的 OpenCV 例程200篇】114. 形态学操作之膨胀

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程 200 篇】114. 形态学操作之膨胀 形态学的基本思想是利用结构元素测量或提取输入图像中的形状或特征&…

爬取豆瓣音乐TOP250数据保存到csv文件和xls文件

爬取的目标网址&#xff1a;https://music.douban.com/top250 利用lxml库&#xff0c;获取前10页的信息&#xff0c;需要爬取的信息包括歌曲名、表演者、流派、发行时间、评分和评论人数&#xff0c;把这些信息存到csv和xls文件 在爬取的数据保存到csv文件时&#xff0c;有可…

Eclipse MySql之登录

用Eclipse连接MySql数据库实现登陆的功能。 功能分析 1.MySql数据库的连接 2.判断输入的内容是否为空 3.判断输入的内容是否与数据库的内容相同 4.重定向的使用 效果演示 原始样式 当账户或者密码任何一个是空的时候点击登录会弹框 一 MySql数据库 我的数据库名school 我…

IDEA MySql之增删改查

用IDEA开发工具和MySql实现登录和增删改查的功能。 功能分析&#xff1a; 1.登录 2.增加 3.删除 4.修改 5.查询 效果演示 登陆页面 信息显示页面 一 &#xff1a;数据库设计 MySql数据库名为 school 登录表名为 login 信息表名为 student 登录表插入合适的数据 信息表…

EXCEL中多行多列数据与一行或一列数据的互相转换

在平常所用数据中&#xff0c;会出现多行多列数据&#xff0c;但是实际又需要一行或一列形式的数据&#xff0c;或者相反者&#xff0c;那么这篇文章将教会你如何在excel中对多行多列数据与一行一列数据的相互转换、或者将行数据变为列数据、列数据变为行数据。 下面将解决这几…

【youcans 的 OpenCV 例程200篇】115. 形态学操作之开运算

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程 200 篇】115. 形态学操作之开运算 形态学的基本思想是利用结构元素测量或提取输入图像中的形状或特征&am…