当前位置:首页 » 操作系统 » 数据库课程设计学生信息管理系统

数据库课程设计学生信息管理系统

发布时间: 2025-07-24 05:29:29

‘壹’ 急求一份数据库课程设计

合肥经济技术职业学院
电子信息系

课程设计报告

课程:数据库课程设计

题目:学生管理系统

班级:09计 用

成员:

指导老师:
日期:

目录
第一章 前言 3
1.1 课题简介 3
1.2 设计目的 3
1.3 需求分析 4
第二章 数据库实例的分析及应用 4
2.1 题目和E-R图 4
2.2 数据库的实现 5
2.3 数据库结构属性 8
2.3.1主键(主键约束PRIMARYKEY;索引设置) 8
2.3.2数据库的默认值和规则 13
2.3.3 视图和存储过程 15
2.3.4 触发器 17
第三章 总结报告 19
参考文献 19

第一章 前言
1.1 课题简介
数据库技术是计算机科学技术发展最快,应用最为广泛的技术之一。其在计算机设计,人工智能,电子商务,企业管理,科学计算等诸多领域均得到了广泛的应用,已经成为计算机信息系统和应用的核心技术和重要基础。
本文主要介绍学生成绩管理系统的数据库设计,从需求分析到数据库的运行与维护都进行详细的叙述。本系统是利用SQL开发出来的。通过SQL建立学生成绩管理系统,大大方便和简化了数据的查询和处理,管理员可以通过SQL语言对表内数据进行添加,删除,修改,查询等操作,还可以建立多用户,对其使用权限进行分配和回收。随着数据处理的不断进步和计算机网络的迅速发展,使数据库应用系统不仅在功能而且在结构上都有了深刻的变化,而且运用在生活的每一个方面。通过学习关系代数,关系演算,函数依赖,关系模式分解,关系模式的规范化让我们建立了扎实的关系数据库理论基础。而在掌握基本理论的基础上掌握关系数据库的设计方法,掌握现代信息系统的开发方法也显得尤为必要。目前在关系数据库中用得最多的SQL数据库,开发数据库的语言工具多数用C++.。所以对于计算机专业的学生来说掌握数据库应用的基本技术,熟悉编程语言与SQL数据库的结合运用是我们计算机专业学生之必备本领。本次课程设计是以学生信息管理系统为模拟模型,运用C++编程语言结合SQL数据库所开发系统。
1.2 设计目的
随着学生数量的日益增多,学校对学生的管理要求也越来越高,为了使信息技术与学生信息更好的结合在一起以及使学生成绩的管理更加系统化,数字化,因此我们设计了该学生信息管理系统。运用基于E-R模型的数据库设计方法和关系规范化理论做指导完成从系统的分析到设计直至系统的最终实现,开发学生成绩管理系统,完成学生成绩管理系统的全部功能。首先做好需求分析,并完成数据流图,其次做概念分析,利用实体联系的方法将需求分析的用户需求抽象为信息结构,得到E-R图,然后就是逻辑结构设计,将E-R图转换为计算机系统所支持的逻辑模型。最后利用SQL完成具体的实例。
1.3 需求分析
1、问题的提出:为了高效率的完成学生的管理,决定开发学生管理系统。
2、需完成的功能:
(1)能录入、修改、查询、输出学生的档案信息,这些信息包括学生的成绩、课程、个人信息等。
(2)触发器,索引,约束,规则,默认值,,视图,存储过程的建立及使用。

第二章 数据库实例的分析及应用
2.1 题目和E-R图
随着学生数量的日益增多,学校对学生的管理要求也越来越高,为了使信息技术与学生信息更好的结合在一起以及使学生成绩的管理更加系统化,数字化,因此我们设计了该学生信息管理系统。以下是次学生信息管理系统的E-R图,进一步详细的说明数据库的结构以及用途。实体和属性的定义:
学生表(学生学号,姓名,班级编号)
班级表(班级编号,班级名称,系部编号)
系部表(系部编号,系部名)
教师表(教师名,课程编号,系部编号)
课程表(课程编号,课程名,学分,教师,系部号)
下面是E-R图,用来进一步说明数据库的作用和用途:

2.2 数据库的实现
运用SQL Server 2000数据设计表格的物理结构如下:

班级表:

学生表:

系部表:

课程表:

教师表:

各表关系图:

设计表格的具体填入数据是:
班级表:

学生表:

教师表:

系部表:

课程表:

2.3 数据库结构属性
2.3.1主键(主键约束PRIMARYKEY;索引设置)
1.索引与书目录相似,可以快速找到指定内容。索引通过记录表中的关键值来指向表中的记录,这样数据库就不用扫描而能定位到相关的记录。以下是对各表进行索引的实现。
学生表的设置如图:

班级表的设计如下:

教师表的设计如下:

课程表的设计如下:

系部表的设置如下:

2.约束定义了关于允许什么数据进入数据库的规则,是分配给表或表中某列的一个属性。使用约束的目的在于防止列中出现非法的数据,可以自动维护数据库的数据完整性。下面是用企业管理器对class表实现的主键约束:

2.3.2数据库的默认值和规则
1.使用默认可以实现当用户在向数据表中插入新纪录时,如果没有给出某列的输入值,则由SQL Server自动为该列输入默认值。下面是对class表进行实现默认的功能:

实现默认值:

2.规则也是实现数据完整性的方法之一,作用与CHECK约束类似,在向表的某列插入或更新数据时,用它来限制输入值的取值范围。下面我们运用对Course表进行规则的实现:

2.3.3 视图和存储过程
1.视图的作用相当于一个虚拟表,是用户查看数据库表中数据的一种方式使用户通过他能够以需要的方式浏览表中的部分或全部数据,而数据的物理存放位置仍然在数据库的表中。我们通过在企业管理器中创建视图管理视图应用视图,更加形象具体的说明了视图的作用。
添加表格到视图:

添加数据并运行:

运行结果,具体视图呈现:

2.存储过程是一组编译在单个执行计划中的Transact-SQL语句,它将一些固定的操作集中起来交给SQL-Server数据库服务器完成,以实现某个任务。首先我们在查询管理器中创建存储过程:

并且执行存储过程:

在企业管理器中也可以体现出存储过程:

2.3.4 触发器
触发器的作用是强制执行业务规则。SQL Server主要提供了两种机制来强制业务规则和数据完整性:约束和触发器。触发器在指定的表中数据发生变化时被调用以响应INSERT、UPDATE或DELETE事件。触发器可以查询其他表,并可以包含复杂的语句。SQL Server将触发器和触发它的语句作为可在触发器内回滚的单个事物对待,如果检测到严重错误,则整个事物即自动回滚。首先我们在查询管理器中新建触发器:

新建触发器:

管理触发器:

第三章 总结报告
这次的课程设计真的做起来困难重重,深刻体会到做一个软件,里面需要的很多知识我们没有接触过,去图书馆找书的时候发现,我们学的仅仅是皮毛,还有很多东西需要我们去发掘,就算是借一本书看完它,我们还是会发现还有很多知识没有吃透,这需要我们不断的实践,不断地自学习,不断地发现问题去思考问题。
经过不断地测试,不断地改进,其中还是发现了不少问题,第一次做这些工作,没有任何经验,甚至无从下手,还是很谢谢老师和同学的帮忙,从中也学到了一些代码的写法,为什么要这样写,通过和同学的讨论,找到一些书本上没有的方法,如何数据绑定等等,怎样从数据库中将数据提取出来放到一个文本框或者标签内,这些东西是组成界面的东西,虽然小,但是可以体现整个软件的水平,其实并不需要建多少数据库的表,写多少复杂的存储过程,是不是用了数据库函数,触发器等等,但是至少要弄明白这些东西如果操作,清晰思路才能将功能分清晰。
经过一段时间的学习与实践,学生信息管理系统基本上开发好了。该系统具备了:添加、修改、删除、浏览、查询、输出日程信息,实现了根据用户需求查看日程等功能。作为一个个人日程管理系统,本系统所提供的功能的确太少了一些,仅仅只实现了一些基本的功能,有很多地方还有待扩展和改良。
人如果没有自信,没有目标,没有信心就不可能把事情做好,当其他人都在迷茫的时候,自己一定要坚信目标,大学毕业出去即是面临找工作,从学习这个专业,到以后做这方面的工作都需要不断地去学习去实践,这次实践可以给我们敲一个警钟,我们面临毕业,面临择业,需要这些实践经验,在困难面前要勇于尝试,这是这次课程设计给我的最大感想。在此特别感谢老师的辛苦指导和教育!
参考文献
黄维通编《SQL Server2000 简明教程》
徐人凤 曾建华编《SQL Server2000数据库及应用》

‘贰’ java程序设计课程设计 学生信息管理系统 要求:使用图形用户界面用数据库建立1或

import java.awt.*;
import java.awt.event.*;
public class DengLuJieMian extends Frame implements ActionListener
{
Label username=new Label("用户名:");//使用文本创建一个用户名标签
TextField t1=new TextField();//创建一个文本框对象
Label password=new Label("密码:");//创建一个密码标签
TextField t2=new TextField();
Button b1=new Button("登陆");//创建登陆按钮
Button b2=new Button("取消");//创建取消按钮
public DengLuJieMian()
{
this.setTitle("学生信息管理系统");//设置窗口标题
this.setLayout(null);//设置窗口布局管理器
username.setBounds(50,40,60,20);//设置姓名标签的初始位置
this.add(username);// 将姓名标签组件添加到容器
t1.setBounds(120,40,80,20);// 设置文本框的初始位置
this.add(t1);// 将文本框组件添加到容器
password.setBounds(50,100,60,20);//密码标签的初始位置
this.add(password);//将密码标签组件添加到容器
t2.setBounds(120,100,80,20);//设置密码标签的初始位置
this.add(t2);//将密码标签组件添加到容器
b1.setBounds(50,150,60,20);//设置登陆按钮的初始位置
this.add(b1);//将登陆按钮组件添加到容器
b2.setBounds(120,150,60,20);//设置取消按钮的初始位置
this.add(b2);// 将取消按钮组件添加到容器
b1.addActionListener(this);//给登陆按钮添加监听器
b2.addActionListener(this);// 给取消按钮添加监听器

this.setVisible(true);//设置窗口的可见性
this.setSize(300,200);//设置窗口的大小
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});//通过内部类重写关闭窗体的方法
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1)//处理登陆事件
{
String name=t1.getText();
String pass=t2.getText();
if(name!=null&&pass.equals("000123"))//判断语句
{
new StudentJieMian();
}
}
}
public static void main(String args[])//主函数
{
new DengLuJieMian();
}
}
以下方法实现了学生界面设计
import java.awt.*;
import java.awt.event.*;
class StudentJieMian extends Frame implements ActionListener
{
MenuBar m=new MenuBar();//创建菜单栏
Menu m1=new Menu("信息");//创建菜单“信息”
MenuItem m11=new MenuItem("插入");//创建“插入”的菜单项
MenuItem m12=new MenuItem("查询");
Menu m2=new Menu("成绩");//创建菜单“成绩”
MenuItem m21=new MenuItem("查询");
public StudentJieMian()
{
this.setTitle("学生界面");//设置窗口标题
this.setLayout(new CardLayout());//设置窗口布局管理器
this.setMenuBar(m);//将菜单栏组件添加到容器
m.add(m1);//将信息菜单放入菜单栏
m.add(m2);
m1.add(m11);//将“插入”菜单项添加到“信息”菜单
m1.add(m12); //将“查询”菜单项添加到“信息”菜单
m2.add(m21); //将“查询”菜单项添加到“成绩”菜单
m11.addActionListener(this); //给“插入”菜单项添加监听器
m12.addActionListener(this); //给“查询”菜单项添加监听器
m21.addActionListener(this); //给“查询”菜单项添加监听器
this.setVisible(true); //设置窗口的可见性
this.setSize(300,200); //设置窗口的大小
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);//关闭窗口
}
});
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==m11) //处理“添加信息”事件
{
new AddStudent();
}
if(e.getSource()==m12) //处理“查询信息”事件
{
new SelectStudent();
}
if(e.getSource()==m21) //处理“查询成绩”事件
{
new ChengJiStudent();
}
}
public static void main(String args[])
{ new StudentJieMian(); //创建一个对象 }

‘叁’ 谁可以帮忙做下这个题目呀 数据库课程设计

数据库课程设计报告
计网0831数据库课程设计
1、数据的导入和导出今天是数据库实习的第一天,对于我们来说数据库虽然是今年刚刚学过的课程,但是我们已经考试完一段时间了,所以也很久没有翻书本了,很多知识在刚刚做的时候还是很陌生的,不得不翻一下书本,下面就是在第一天实习中所产生的问题报告和分析结果。
在做实训前,老师先给我们讲了数据库如何导入EXCL表,在老师的指导下我们学会了,为创建表提供了方便。
首先我们是建立了一个新的KCSJ数据库,建立的数据语句如下:
用SQL语句在D:\KCSJ下创建课程设计数据库(KCSJ)
(一)CREATE DATABASE KCSJ
ON
(NAME=KCSJ_DATA,
FILENAME='D:\KCSJ_DATA.MDF')
LOG ON
(NAME=KCSJ_LOG,
FILENAME='D:\KCSJ_LOG.LDF')
将KCSJ.XLS文件中的数据导入KCSJ数据库中。导入后在数据库中将生成以下五个基本表:
学生(学号,姓名,性别,年龄,入学成绩,班级,籍贯)
成绩(学号,课程号,成绩)
课程(课程号,课程名,教师名)
三角形(a,b,c,s)
回文数(A1,A2)
其中:a> 学生、成绩、课程、三角形、回文数是表的名字。
b> 学号、姓名、性别、班级、籍贯、课程名和教师名为字符型,长度分别为10 、10、2、6、8、20、10;
c> 入学成绩为整型。
d> 年龄、课程号和成绩为整型或微整型。
e> A1为整型;A2为字符型,长度为2。
f> a、b、c为float类型,代表三角形的三边,s为float类型,代表三角形的面积。
在导入数据库中KCSJ.XLS文件的数据导入的时候是在所有任务--导入数据—数据源为excel97-2000- 文件位置—导入表中的数据—修改类型和长度 最后确定。
用企业管理器创建数据库(JW0831),将KCSJ数据库中的五个表导入该数据库中。
打开所有任务 导入数据源 选择KSCJ 数据库 下一步 再选择jw0831数据库 选择所有 确定 就可以将KCSJ数据库中的五个表导入该数据库中。
简单的结构化查询
--(1)查询学生的详细记录
select*from 学生
--(2)查询学生表中前两个班级(班级名称不能重复)
select top 2 班级 from 学生
group by 班级
在做本题的时候,由于想的比较复杂,外加题意有点模糊,所以转了很大一个圈,并在老师的侧外指导下通过group by分组才把本题做了出来。
--(3)显示把 成绩表中各科学生的成绩加 20 分后的信息
select*from 成绩
where 成绩='成绩'+20
在做本题的时候,由于题意理解错误,所以我先用updata语句来进行更新,但是在做到其它题的时候,听到老师在指导其它同学的时候,把题意一说,我才恍然大悟,自己的方向又错了。然后又重新思考,接着就做出了上面的答案。
--(4)查询来自“宁波” 学生的学号、姓名、籍贯
select 学号,姓名,籍贯 from 学生
where 籍贯='宁波'
--(5)查询选修4号课程且考试成绩在70分以上的学生的学号以及所选修的课程号和成绩,显示前3条结果记录
select top 3*from 成绩
where 成绩>=70 and 课程号='4'
--(6)查询入学成绩在 300-400 分之内的学生的详细情况,并按入学成绩降序排序 ( 用两种方法完成 )
select * from 学生
where 300<入学成绩 and 入学成绩<400 order by 入学成绩 desc
select * from 学生
where 入学成绩 between 300 and 400 order by 入学成绩 desc
--(7)统计学生表中的学生人数
select count(*)from 学生
对于今天的题目做的多了,忽然发现很多题的类型都差不多,都是运用基本的书本知识,然后融会贯通,举一反三,然后不费吹灰之力就做出来了,我说的不费吹灰之力是简单的,但是有些还是费了好大一番功夫的。
--(8)查询学生表中姓李,姓名列包含两个字的学生的基本情况
select * from 学生
where 姓名 like '李_'
--(9)查询名字中第 2 个字为‘北'的学生的基本信息
select * from 学生
where 姓名 like '_北%
在做这几道题的时候,我解决了并也明白了—和%得区别和用途
--(10)查询选修 4 号课程,成绩在 80-90 分之间的学生学号和成绩
select*from 成绩
where 80<=成绩 and 成绩<90 and 课程号='4'
--(11)查询 JW0831 班和 JW0551 班学生的姓名、性别及班级(用谓词查询 in )
select 姓名,性别,班级 from 学生 where 班级 in('JW0831','JW0551')
group by 姓名,性别,班级
对于本道题拿到的时候,还是愣了一下的,因为我忽然不知道什么是,对于用谓词查询 in,自己不会用,在翻书翻了一遍并且询问了同学才发现如何去用它。
--(12)查询缺少成绩的学生的学号和相应的课程号
select 学号,课程号 from 成绩
where 成绩 is NULL
--(13)统计选修了4号课程学生人数
SELECT COUNT(*)AS'人数' FROM 成绩 where 课程号='4'
--(14)查询JW0831班家在河北学生的学号、姓名、性别
select 学号,姓名,性别 from 学生
where 籍贯='河北'and 班级='JW0831'
--(15)检索刘志生老师所授课程的课程号和课程名。
select 课程号,课程名 from 课程
where 教师名='刘志生'
---(16)检索年龄大于23岁的男学生的学号和姓名。
select 学号,姓名 from 学生
where 性别='男' and 年龄>23
--(17)查询学生表中姓李的学生的基本情况
select *from 学生
where 姓名 like '李%'
--(18) 统计学生表中所有学生“入学成绩”的平均分、最高分、最低分
select AVG(入学成绩) as'平均成绩',max(入学成绩) as'最高分',min(入学成绩) as'最低分'from 学生
--(19)查询选修了1号或者3号课程,成绩及格的学生的学号和成绩
select 学号,成绩 from 成绩
where 成绩>=60 and 课程号 in (1,3)
--(20)统计学生表中所有男女生人数
SELECT 性别, COUNT(性别)AS'人数' FROM 学生
group by 性别
对于今天的题除了自己不太熟悉课本知识和同学讨论出来的那些分析外,对于其他的题已经没有什么问题了,因为我把今天的题做完之后,把报告写完的同时,对于明天的题我也进行了一番思考,并且还帮助其他同学解决了一些不会的问题。
星期二 天气 冷 心情 good

3、复杂的结构化查询
--(1)检索至少选修刘志生老师所授课程中一门课程的女学生姓名。
select 学生.学号,姓名,性别,课程.课程号 from 学生,成绩,课程
where 性别='女' and 课程.课程号 in(select 课程号 from 课程 where 教师名='刘志生')and 学生.学号=成绩.学号
and 课程.课程号=成绩.课程号
对于今天的课程设计不是像昨天一样那么简单了,简直是提高了一个很大的层次,简直是一步三晃啊!不容易啊!就像本题一样,在查询的时候要用一个子查询和三个条件才能把它做出来!
--(2)检索吴计算同学不学的课程的课程号。
select 课程号 from 课程 where 课程号 not in(select 成绩.课程号 from 成绩,学生where 姓名='吴计算' and 成绩.学号=学生.学号)
在本题中,用的方法还真是一波三折啊!因为如果要查不学的课程,要先查出他学的课程,然后再排掉学过的!充分运用了not in这个语法
--(3)检索至少选修四门课程的学生学号。
select 学号, count(成绩.学号)as '门数' from 成绩,课程 where 成绩.课程号=课程.课程号
group by 成绩.学号
having count(成绩.学号)>=4
对于本题的用的是count做统计这个数据语句,外加可以用在group by 语句后的having条件语句。通过本题的联系,可以很好的运用count 和having语句
--(4)检索全部学生都选修的课程的课程号与课程名。
select 课程.课程名 ,课程.课程号 from 成绩,课程
where 成绩.课程号=课程.课程号
group by 课程.课程名,课程.课程号
having count(成绩.学号) in (select count(学生.学号)from 学生)
--(5)检索选修课程包含刘志生老师所授课的学生学号。
select 学号 from 成绩,课程
where 教师名='刘志生'and 成绩.课程号=课程.课程号
--(6)统计有学生选修的课程门数。
select 学号, count(成绩.学号)as '门数' from 成绩,课程 where 成绩.课程号=课程.课程号
group by 成绩.学号
--(7)求选修4号课程的学生的平均年龄。
select AVG(年龄)as'平均年龄',成绩.课程号 from 学生,成绩
where 课程号='4' and 学生.学号=成绩.学号
group by 成绩.课程号
--(8)求刘志生老师所授课程的每门课程的学生平均成绩。
select avg(成绩.成绩)as'平均成绩',课程.课程号 from 成绩,课程
where 教师名='刘志生' and 成绩.课程号=课程.课程号
group by 课程.课程号
--(9)统计每门课程的学生选修人数(超过6人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
select 成绩.课程号, count(成绩.学号)as '人数' from 成绩,课程
where 成绩.课程号=课程.课程号
group by 成绩.课程号
having count(成绩.学号)>=6
order by count(成绩.学号) asc
--(10)检索学号比陆力利同学大,而年龄比他小的学生姓名。
select 学号,姓名 from 学生
where 学号>(select 学号 from 学生 where 姓名='陆力利') and 年龄<(select 年龄 from 学生 where 姓名='陆力利'
--(11)求年龄大于女同学平均年龄的男学生姓名和年龄。
select 姓名,年龄 from 学生
where 性别='男'and 年龄>(select avg(年龄)as'平均年龄'from 学生 where 性别='女')
--(12)统计学生人数超过 5人的班级名称和对应的人数
select 班级,count(学生.学号)as '人数'from 学生
group by 班级
having count(学生.学号)>=5
--(13)检索课程号和选修人数,查询结果按人数升序排列,若人数相同,按课程号降序排列。
select 成绩.课程号, count(成绩.学号)as '人数' from 成绩,课程
where 成绩.课程号=课程.课程号
group by 成绩.课程号
order by count(成绩.学号) asc,成绩.课程号 desc
这道题运用很多知识点,不但用了count 统计 还用了 group by 分组 外加排序
--(14)查询选修课程学生的学号、姓名、所选课程号、取得的成绩
select 学生.学号,学生.姓名,成绩.课程号,成绩.成绩 from 学生,成绩
where 学生.学号=成绩.学号
--(15)查询学生的学号、课程号和成绩等级
select 学号,课程号,成绩,(
CASE
WHEN 成绩>=90 and 成绩<=100 THEN 'A'
WHEN 成绩>=80 and 成绩<90 THEN 'B'
WHEN 成绩>=70 and 成绩<80 THEN 'C'
WHEN 成绩>=60 and 成绩<70 THEN 'D'
ELSE 'E'
END ) as 等级
from 成绩
本题运用了一个新的知识点,这个知识点是在老师的ppt课件上找到的,利用这个语句何以很好很方便的为管理系统中的成绩分等级,所以在本体中一定要记住本语句的语法如:case when……and then ……else end
今天小结,通过今天一天的课程设计,我觉得我收获了很多,因为它让我以前学的不太好的知识点全部都巩固了一遍,尤其是成绩、课程、学生这些表与表的链接,每次不是这里连不上就是那里连不上,但是现在不但可以连上了,还可以帮助其他同学检查出来错误,真是一笔不小的收获,虽然今天做的题比较难,但是每一次在自己的努力下做出来都会有不小的成就感……
3、复杂的结构化查询
星期三 天气 冷 心情 good
外面飘着雪花,美好的一天又已经开始了!实习已经到了一半,离回家的日子也近了很多,所以心情也是越实习越好了!今天的工作当然也完成的比较顺利!虽然有的还挺难的!但是相信自己一定就会成功!嘿嘿……看看自己的劳动成果就知道了!
3、复杂的结构化查询
--(16)查询选修了英语的学生的姓名和成绩;
select 学生.姓名,成绩.成绩 from 成绩,学生,课程
where 课程.课程名='英语'and 学生.学号=成绩.学号 and 课程.课程号=成绩.课程号
group by 学生.姓名,成绩.成绩
--(17)分别统计每个班级的男女人数(要求显示出班级、性别、对应的人数)
SELECT 班级, 性别, COUNT(性别)AS'人数' FROM 学生
group by 班级,性别
--(18)求年龄大于所有女同学年龄的男学生姓名和年龄。
select 姓名,年龄 from 学生
where 性别='男'and 年龄>(select max(年龄) from 学生 where 性别='女')
group by 姓名,年龄

--(19)计算选修了1号课程的学生的平均成绩(要求显示出课程号和对应的平均成绩)
select 课程号,avg(成绩)as'平均成绩'from 成绩
where 课程号='1'
group by 课程号

--(20)查询选修课程学生的学号、姓名、所选课程名、取得的成绩
select 学生.学号,姓名,课程.课程名,成绩.成绩 from 学生,成绩,课程
where 学生.学号=成绩.学号 and 课程.课程号=成绩.课程号
--(21)查询学生的学号、姓名、性别及所选修各门课程的成绩(要求每位学生用一个数据行显示这些信息)

SELECT 学生.学号, 学生.姓名,学生.性别,
(select 成绩 from 成绩 where 课程号='1' and 学生.学号=学号) as '数学',
(select 成绩 from 成绩 where 课程号='2' and 学生.学号=学号) as '英语',
(select 成绩 from 成绩 where 课程号='3' and 学生.学号=学号) as '计算机基础',
(select 成绩 from 成绩 where 课程号='4' and 学生.学号=学号) as '数据库',
(select 成绩 from 成绩 where 课程号='5' and 学生.学号=学号) as '政治',
(select 成绩 from 成绩 where 课程号='6' and 学生.学号=学号) as '体育'

FROM 学生 INNER JOIN 成绩 ON 学生.学号=成绩.学号
GROUP BY 学生.学号, 学生.姓名,学生.性别
--(22)查询李路路所学的课程名和对应的成绩,并按照成绩升序排列。
select 姓名,课程名,成绩 from 学生,课程,成绩
where 姓名='李路路'and 课程.课程号=成绩.课程号 and 学生.学号=成绩.学号
order by 成绩

--(23)查询平均成绩大于 75 分的课程,要求显示课程名和平均成绩。
select 课程名,avg(成绩)as'平均成绩' from 课程,成绩
where 课程.课程号=成绩.课程号
group by 课程名
having avg(成绩)>=75
--(24)查询所选课程平均成绩前三名的那些学生的姓名和平均成绩。
select top 3 学生.学号,姓名,avg(成绩.成绩)as'平均成绩'from 成绩,学生 where 学生.学号=成绩.学号 group by 学生.学号,姓名 order by avg(成绩.成绩) desc

--(25)查询和李工业在同一个班级的学号和姓名
select 学号,姓名 from 学生
where 班级 in (select 班级 from 学生 where 姓名='李工业')

--(26)查询JW0831班中入学成绩比李里高的学生的姓名
select 姓名 from 学生
where 班级='JW0831' and 入学成绩>(select 入学成绩 from 学生 where 姓名='李里')

--(27)在学生表中查询高于入学成绩平均分的学生学号、姓名、班级、入学成绩
select 学号,姓名,班级,入学成绩 from 学生
where 入学成绩>(select avg(入学成绩)as'平均成绩'from 学生)

--(28)查询没有选修课程的学生的学号和姓名
select 学生.学号,学生.姓名 from 学生
where 学号 not in(select 学号 from 成绩 group by 学号 )

--(29)查询选修了 5(含5) 门以上课程的学生的姓名。
select 姓名 from 学生,成绩,课程 where 成绩.课程号=课程.课程号 and 学生.学号=成绩.学号
group by 成绩.学号,姓名
having count(成绩.学号)>=5
--(30)查找同名同姓的学生信息。
select a1.* from 学生 a1,学生 a2
where a1.姓名=a2.姓名 and a1.学号<>a2.学号
星期四 天气 冷 心情 good
数据管理
--(1)利用学生表创建一个新表(不含数据):优秀(学号,姓名,性别),
--然后在学生表中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,
--并把检索到的值送往优秀表中。
select 学号,姓名,性别 into 优秀 from 学生
where 5>6
insert into 优秀 select 学号,姓名,性别 from 学生 where 学号 in (select 学号 from 成绩 group by 学号 having min(成绩)>=80 )

--(2)把李路路同学的选课和成绩全部删去。
delete from 成绩
where 成绩 in(select 成绩 from 学生,成绩 where 学生.学号=成绩.学号 and 姓名='李路路')
--(3)把低于总平均成绩的女同学成绩提高5%。
UPDATE 成绩 SET 成绩=成绩*(1+0.05) WHERE 成绩<(select avg(成绩.成绩)as'平均成绩'from 成绩) and 学号 in(select 学号 from 学生 where 性别='女')
--(4)把选修数学课不及格的成绩全改为空值。
UPDATE 成绩 SET 成绩=null WHERE 成绩<60 AND 课程号=(select 课程号 from 课程 where 课程名='数学')
--(5)在成绩表修改4号课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个UPDATE语句实现)。
UPDATE 成绩 SET 成绩=成绩*0.5 WHERE 成绩<=75 and 课程号='4'
UPDATE 成绩 SET 成绩=成绩*0.4 WHERE 成绩>75 and 课程号='4'
--(6)将选修4号课程且成绩没有及格的学生的成绩调整为 60 分。
UPDATE 成绩 SET 成绩=60 WHERE 成绩<60 AND 课程号='4'
自定义函数的使用
编写一函数(hws),判断一个整数是否为回文数,若是函数值为“是”,否则为“否”,利用该函数判断回文数基本表中A1列的整数是否为回文数,若是,则A2列的值为“是”,否则为“否”。
create function hws(@A1 int)
returns char(2)
as
begin
declare @y int,@r int,@c char(2),@z int
select @y=0,@z=@A1
while @A1!=0
select @r=@A1%10,@y=@y*10+@r,@A1=@A1/10
if @y=@z
set @c='是'
else
set @c='否'
return @c
end
update 回文数 set A2=dbo.hws(A1)。
星期五 天气 冷 心情 good
游标的使用
利用游标可以访问单独数据行的特点,逐一对三角形基本表中的数据行(三条边)进行处理,求三角形的面积。
Declare yb cursor
For
Select*from 三角形
Declare @a float,@b float,@c float,@p float,@s float
Open yb
Fetch next from yb into @a,@b,@c,@s
While @@fetch_status=0
Begin
If @a+@b>@c and @a+@c>@b and @b+@c>@a
select @p=(@a+@b+@c)/2.0,@s=round(sqrt(@p*(@p-@a)*(@p-@b)*(@p-@c)),2)
else
set @s=null
update 三角形 set s=@s where current of yb
fetch next from yb into @a,@b,@c,@s
end
close yb
deallocate yb

心得体会
时光匆匆,一个星期的实习已经接近尾声了,对于本次的实习心情就是轻松加愉快,收获也是硕果累累,在老师的安排下,实习的过程是根据每天老师给的任务,按时完成作业然后再把报告写完根据规划每天都有条不絮的干着自己的事情,对于我是一个不会安排时间的人,生活中重来没有规划,所以事情每次干完不是紧一阵就是松一阵的,所以通过这次实习中在老师的安排下,自己也懂得了安排时间的重要性,也从中吸取到了一些经验。
在本次实习中我不仅把本学期学习的数据库基本知识进行了点到点的复习,也把它进行了巩固,在原来没有学好的地方通过本次的实习学的比以前学的更好,不仅如此,我们在做课程设计的时候还学会了独自的思考和协作,有些知识点我们运用的不是很好,但是后面再老实的帮助和在同学的探讨下,最后都把它解决了出来。除此之外,我也感觉到实习并不是因为完成任务而实习,它是为了让我们更好的掌握知识,并把知识运用到生活中去的,就像艺术一样,源于生活,而应用于生活一样。数据库的学习,也是为了以后生活中方便自己方便他人而学习的。
由于每天紧张的课程,一路都是匆匆来匆匆去,所以一个班同学的交流也是很少的,通过实习所以同学之间交流的机会也就比较多了一点,比才的感觉也因此增进了不少,以上就是本次在实习中所得到的心得,至于没有感受到的,将在以后的生活中再次的吸取生活中的经验。来进行学习中的总结。

热点内容
c语言编译器计算圆面积 发布:2025-07-25 07:06:41 浏览:90
微信服务器怎么用 发布:2025-07-25 07:06:40 浏览:264
qq收藏的文件夹 发布:2025-07-25 07:06:36 浏览:898
怎样找回我的音乐缓存 发布:2025-07-25 06:54:41 浏览:510
服务器电脑如何使用不需要花钱 发布:2025-07-25 06:47:33 浏览:223
鸿蒙处理器和安卓哪个好 发布:2025-07-25 06:45:58 浏览:588
c创建存储过程 发布:2025-07-25 06:45:15 浏览:311
上合脚本 发布:2025-07-25 06:44:08 浏览:10
c的宏编译 发布:2025-07-25 06:41:08 浏览:852
qq密码怎么写 发布:2025-07-25 06:11:26 浏览:572