热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大学生竞赛管理系统项目

大学生竞赛管理系统设计一个学生可以参加多个学科竞赛,竞赛分为不同等级,按照重要性可以分为A类、B类和C类,学生可以多人组队参加一个比赛&

大学生竞赛管理系统设计

一个学生可以参加多个学科竞赛,竞赛分为不同等级,按照重要性可以分为 A 类、B类和 C 类,学生可以多人组队参加一个比赛,每个队可以有多个指导教师,竞赛成绩按照
获奖级别有国家级和省级,分为一等奖、二等奖、三等奖,每种竞赛每年都有相对固定的比赛时间、名称和主办机构。试设计一个大学生竞赛管理系统,能够完成对学生竞赛的管理,可以实现统计高校各个学院某个时间段内竞赛的参加和获奖情况,也可以统计每个同学或每个年级某个时间段内竞赛的参加和获奖情况。

(1)画出系统的 E-R 图,给出实体或联系的属性,标明联系的种类;
image

(2)写出关系模式;
学院(学院号,学院名称,成立时间)
专业(专业号,专业名称,学院号)
学生(学号,姓名,班级,专业号)
团队(团队编号,项目名称,团队名称,竞赛编号,获奖级别,获奖奖项,开始时间,获奖时间)
竞赛(竞赛编号,名称,主办方,等级,比赛月份)
老师(工号,姓名,职称)
团队指导(团队编号,工号)
团队组成(团队编号,学号)

(3)根据关系规范理论进行数据库的逻辑设计,给出数据库表的设计,数据库表设计格 式参照下面:

表 1 学院表(college)


字段名中文含义类型约束备注
collegekey学院号int主键
name学院名称char(30)not null
collegetime成立时间datenull

表 2 专业表(major)


字段名中文含义类型约束备注
majorkey专业号char(6)主键
majorname专业名称varchar(30)null
collegekey学院号intnull外键,参照college表的collegekey

表 3 学生表(student)


字段名中文含义类型约束备注
stid学号char(6)主键
sname姓名char(20)null
class班级char(20)null
majorkey专业号char(6)null外键,参照major表的majorkey

表 4 团队表(team)


字段名中文含义类型约束备注
teamid团队编号int主键
pname项目名称varchar(30)null
tname团队名称varchar(30)null
cid竞赛编号intnull外键,参照competeinfo表的cid
stime开始时间datenull
pgrade获奖级别char(10)null
pburse获奖奖项char(10)null
ptime获奖时间datenull

表 5 老师表(teacher)


字段名中文含义类型约束备注
tid工号char(6)主键
tname姓名char(20)null
title职称char(20)null

表 6 竞赛表(competeinfo)


字段名中文含义类型约束备注
cid竞赛编号int主键
cname竞赛名称varchar(100)not null
cunit主办方varchar(100)not null
cgrade竞赛等级char(1)not null取值为A、B、C中一个
cmonth比赛月份char(2)null

表 7 团队指导表(directioninfo)


字段名中文含义类型约束备注
teamid团队编号int外键,参照team表的teamidteamid和tid联合作为主键
tid工号char(6)外键,参照teacher表的tid

表 8 团队组成表(componentinfo)


字段名中文含义类型约束备注
teamid团队编号int外键,参照team表的teamidteamid和stid联合作为主键
stid学号char(6)外键,参照student表的stid

(5)在 Sql server 数据库中创建数据库 test 并创建相应的数据库表;
(6)可以通过导入文件的方式在数据库表中输入若干条数据;
通过SQL Server导入各表数据:
在sql server中创建bigtest数据库,使用如下语句进行数据库建表
CREATE TABLE college(
collegekey int primary key,
name char(30) not null,
collegetime date null
)
CREATE TABLE major(
majorkey char(6) primary key,
majorname varchar(30) null,
collegekey int null references college(collegekey)
)

CREATE TABLE student(
stid char(6) primary key,
sname char(20) null,
class char(20) null,
majorkey char(6) null references major(majorkey)
)

CREATE TABLE team(
teamid int primary key,
pname varchar(30) null,
tname varchar(30) null,
cid int null references competeinfo(cid),
pgrade char(10) null,
pburse char(10) null,
ptime date null
)

CREATE TABLE teacher(
tid char(6) primary key,
tname char(20) null,
title char(20) null
)

CREATE TABLE competeinfo(
cid int primary key,
cname varchar(100) not null,
cunit varchar(100) not null,
cgrade char(1) not null check (cgrade in (‘A’,‘B’,‘C’)),
cmonth char(2) null,
)

CREATE TABLE directioninfo(
teamid int references team(teamid),
tid char(6) references teacher(tid),
primary key(teamid,tid)
)

(7)自己构造若干 SQL 语句,完成对数据库的调用、并实现题目所给统计要求,SQL 语 句至少为 10 条,要求自定义功能要求,并给出 SQL 语句结果,包括下面的语句:
create table 、create index 、 create view 、 select 语句 (至少 3 条,要把子句用上, 包括 from 子句、where 字句、group by 子句、having 字句、order by 子句)、insert 语句、 delete 语句、update 语句、grant 语句

create index语句:
把student表中按学号升序和班级降序的建立索引
create index studentindexs
on student(stid asc,class desc)
把team表中按竞赛号降序建立索引
create index team_index
on team(cid desc)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k3BOwzhm-1634533483137)(https://user-images.githubusercontent.com/60837761/103448825-1000c700-4cda-11eb-9098-94173e545f5b.png)]

create view语句:
创建一个视图Viewprize,统计人工智能学院不同专业国家级、省级的获奖总数量
create view Viewprize
as
select college.name,pgrade,major.majorname,COUNT(pgrade) as num
from team,componentinfo,student,major,college
where team.teamid = componentinfo.teamid
and componentinfo.stid = student.stid
and student.majorkey = major.majorkey
and major.collegekey = college.collegekey
and college.name =‘人工智能与数据科学学院’
group by college.name,majorname,pgrade
having pgrade <> ‘NULL’
image

insert语句&#xff1a;
插入一条学生数据
insert student
values(‘151020’,‘张杰’,‘计141’,‘080901’)

image

插入一条团队数据
insert team values(26,‘面向未来的系统’,‘未来’,16,‘2019/8/29’,NULL,NULL,NULL)
image
image

delete语句&#xff1a;
删除学号为151020的student信息
delete student
where stid &#61; ‘151020’;

删除“面向未来的系统”队名的team信息
delete team
where pname &#61; ‘面向未来的系统’

update 语句
更新“未来1”队的指导老师
update directioninfo
set tid &#61; (
select tid
from teacher
where teacher.tname &#61; ‘孙盼’
)
where teamid &#61; (
select teamid
from team
where team.tname &#61; ‘未来1’
)

grant 语句
创建团队管理员角色&#xff0c;对team表有查找更新插入权限&#xff0c;创建用户&#xff0c;分配团队管理员角色
create login zzy with password &#61; ‘abc’,default_database &#61; bigtestnew
create user zzy for login zzy

create role team_manager
grant select,insert,update
on team
to team_manager

exec sp_addrolemember ‘team_manager’,‘zzy’
image
image
image

select语句&#xff1a;
查询未来1队的指导老师信息
select *
from teacher,directioninfo
where directioninfo.tid &#61; teacher.tid
and directioninfo.teamid &#61;
(select teamid
from team
where team.tname &#61; ‘未来’)

查询计算机科学与技术专业的团队参加获奖情况
select cname,cgrade,pname,pgrade,pburse,student.stid,student.sname
from team,componentinfo,student,competeinfo
where team.teamid &#61; componentinfo.teamid
and componentinfo.stid &#61; student.stid
and competeinfo.cid &#61; team.cid
and student.majorkey &#61; (select majorkey
from major
where major.majorname &#61; ‘计算机科学与技术’)
and pgrade !&#61; ‘NULL’
group by cgrade,cname,pgrade,pburse,student.stid,
student.sname,team.pname

统计人工智能与数据科学学院的省级获取情况
select cname,cgrade,pname,pgrade,pburse,student.stid,student.sname
from team,componentinfo,student,competeinfo,major
where team.teamid &#61; componentinfo.teamid
and componentinfo.stid &#61; student.stid
and competeinfo.cid &#61; team.cid
and student.majorkey &#61; major.majorkey
and major.collegekey in (select collegekey
from college
where college.name &#61; ‘人工智能与数据科学学院’)
group by cgrade,cname,pgrade,pburse,student.stid,
student.sname,team.pname
having pgrade <> ‘国家级’ and pgrade !&#61; ‘NULL’

统计不同学院的专业的竞赛获奖情况
select college.name,pgrade,major.majorname,COUNT(pgrade) as num
from team,componentinfo,student,major,college
where team.teamid &#61; componentinfo.teamid
and componentinfo.stid &#61; student.stid
and student.majorkey &#61; major.majorkey
and major.collegekey &#61; college.collegekey
group by college.name,majorname,pgrade
having pgrade <> ‘NULL’
order by num

(9)对于复杂的报表查询逻辑处理和自定义完整性&#xff0c;使用存储过程或触发器来完成。
1.查询学院不同年份&#xff0c;不同月份&#xff0c;各专业省级、国家级竞赛获奖总人数&#xff0c;各学院的省级获奖情况&#xff0c;各学院的国家级获奖情况&#xff0c;学校获奖省级总人数&#xff0c;学校获奖国家级总人数。
GO
create proc proc_include
&#64;syear int,&#64;date_begin int,&#64;date_end int
as
declare &#64;s_totalnumber int ,&#64;g_totalnumber int
begin

print(‘学院各专业省级、国家级竞赛获奖总人数’)
select college.name,pgrade,major.majorname,COUNT(pgrade) as num
from team,componentinfo,student,major,college
where team.teamid &#61; componentinfo.teamid
and componentinfo.stid &#61; student.stid
and student.majorkey &#61; major.majorkey
and major.collegekey &#61; college.collegekey
and year(ptime) &#61; &#64;syear
and month(ptime)>&#64;date_begin
and month(ptime)<&#64;date_end
group by college.name,majorname,pgrade
having pgrade <> ‘NULL’
order by num

print(‘各学院的省级获奖情况’)
select college.name,pgrade,COUNT(pgrade) as num
from team,componentinfo,student,major,college
where team.teamid &#61; componentinfo.teamid
and componentinfo.stid &#61; student.stid
and student.majorkey &#61; major.majorkey
and major.collegekey &#61; college.collegekey
and year(ptime) &#61; &#64;syear
and month(ptime)>&#64;date_begin
and month(ptime)<&#64;date_end
group by college.name,pgrade
having pgrade <> ‘NULL’ and pgrade <> ‘国家级’

print(‘各学院的国家级获奖情况’)
select college.name,pgrade,COUNT(pgrade) as num
from team,componentinfo,student,major,college
where team.teamid &#61; componentinfo.teamid
and componentinfo.stid &#61; student.stid
and student.majorkey &#61; major.majorkey
and major.collegekey &#61; college.collegekey
and year(ptime) &#61; &#64;syear
and month(ptime)>&#64;date_begin
and month(ptime)<&#64;date_end
group by college.name,pgrade
having pgrade <> ‘NULL’ and pgrade <> ‘省级’

select &#64;g_totalnumber &#61; COUNT(pgrade)
from team
where year(ptime) &#61; &#64;syear
and month(ptime)>&#64;date_begin
and month(ptime)<&#64;date_end
and pgrade <> ‘NULL’ and pgrade <> ‘省级’

select &#64;s_totalnumber &#61; COUNT(pgrade)
from team
where year(ptime) &#61; &#64;syear
and month(ptime)>&#64;date_begin
and month(ptime)<&#64;date_end
and pgrade <> ‘NULL’ and pgrade <> ‘国家级’

print(‘学校获奖省级总人数&#xff1a;’)
print &#64;s_totalnumber
print(‘学校获奖国家级总人数&#xff1a;’)
print &#64;g_totalnumber
end
image
image
image


推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 【MicroServices】【Arduino】装修甲醛检测,ArduinoDart甲醛、PM2.5、温湿度、光照传感器等,数据记录于SD卡,Python数据显示,UI5前台,微服务后台……
    这篇文章介绍了一个基于Arduino的装修甲醛检测项目,使用了ArduinoDart甲醛、PM2.5、温湿度、光照传感器等硬件,并将数据记录于SD卡,使用Python进行数据显示,使用UI5进行前台设计,使用微服务进行后台开发。该项目还在不断更新中,有兴趣的可以关注作者的博客和GitHub。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
author-avatar
aaaaaaaaaaa的美丽人生_556
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有