首页 > 数据库 >6.3实验五 数据库编程

6.3实验五 数据库编程

时间:2024-06-20 15:35:55浏览次数:14  
标签:10 xm 数据库 编程 char Tno18 6.3 Xum create

实验五 数据库编程

一、实验目的

熟悉并掌握嵌入式 SQL 编程、使用数据库访问接口技术实现对数据库的访问。

二、实验要求

熟悉使用嵌入式SQL编程访问数据库,熟悉VB中开发数据库应用程序的过程。

三、实验步骤

设计一个小型的数据库应用程序

 

1. 基本表建立

(1)教师表建立 Xum_Teachers18

create table Xum_Teachers18 (

xm_Tno18 char(10) primary key,

xm_Tname18 char(10),

xm_Tsex18 char(5),

xm_Tage18 int,

xm_Tpos18 char(10),

xm_Tpho18 char(20)

 

)

(2)专业表建立Xum_Majors18

create table Xum_Majors18(

xm_Mno18 char(10) primary key,

xm_Mname18 char(10)

)

(3)班级表建立Xum_Class18

create table Xum_Class18(

 

xm_Clno18 char(10) primary key,

xm_Clname char(10),

xm_Mno18 char(10)

constraint Major_Class foreign key(xm_Mno18) references Xum_Majors18

)

(4)学生表Xum_Students18

 create table Xum_Students18(

xm_Sno18 char(12) primary key,

xm_Sname18 char(10),

xm_Ssex18 char(5),

xm_Sage18 int,

xm_Sorig18 char(20),

xm_Ssum18 float,

xm_Clno18 char(10)

constraint Class_Student foreign key(xm_Clno18) references Xum_Class18

)

(5)课程表 Xum_Courses18

 

create table Xum_Courses18(

xm_Cno18 char(10) primary key,

xm_Cname18 char(10),

xm_Tname18 char(10),

xm_Cdate18 char(20),

xm_Cway18 char(5),

xm_Ccredit18 float check(xm_Ccredit18>0),

xm_Chour18 int check(xm_Chour18>0)

 

)

(6)授课表 Xum_Tea_Cour18

create table Xum_Tea_Cour18(

xm_Tno18 char(10),

xm_Cno18 char(10),

primary key(xm_Tno18,xm_Cno18),

constraint teacher_course foreign key(xm_Tno18) references Xum_Teachers18,

constraint tea_cour foreign key(xm_Cno18) references Xum_Courses18

 

)

(7)班级上课表Xum_Class_Cour18

 

create table Xum_Class_Cour18(

xm_Clno18 char(10),

xm_Cno18 char(10),

primary key(xm_Clno18,xm_Cno18),

constraint class_course foreign key(xm_Clno18) references Xum_Class18,

constraint clas_cour foreign key(xm_Cno18) references Xum_Courses18

 

)

(8)教师任课表Xum_Teac_Class18

 

create table Xum_Teac_Class18(

xm_Tno18 char(10),

xm_Clno18 char(10),

primary key(xm_Tno18,xm_Clno18),

constraint tea_class foreign key(xm_Tno18) references Xum_Teachers18,

constraint teach_class foreign key(xm_Clno18) references Xum_Class18

)

(9)成绩表Xum_Reports18

 

create table Xum_Reports18(

 

xm_Cno18 char(10),

xm_Sno18 char(12),

xm_Score18 float,

xm_date char(10),

xm_Tname18 char(10),

primary key(xm_Cno18,xm_Sno18),

constraint cour foreign key(xm_Cno18) references Xum_Courses18,

constraint stude foreign key(xm_Sno18) references Xum_Students18

 

)

(10)管理员账号密码表 

 

create table Students_account18(

xm_Sno18 char(12) primary key,

xm_Skey18 char(10)

 

)

(11)学生账号密码表

create table Teachers_account18(

xm_Tno18 char(12) primary key,

xm_Tkey18 char(10)

 

)

(12)教师账号密码表

 

create table Admin_account18(

xm_Ano18 char(12) primary key,

xm_Akey18 char(10)

 

)

2.视图的建立

(1)学生成绩

create view 学生成绩统计

as

(select Xum_Students18.xm_Sno18,Xum_Students18.xm_Sname18,

Xum_Courses18.xm_Cname18,Xum_Class18.xm_Clname,

Xum_Reports18.xm_Tname18,Xum_Courses18.xm_Ccredit18,

Xum_Courses18.xm_Cdate18,Xum_Reports18.xm_Score18

 

from Xum_Reports18,Xum_Students18,Xum_Courses18,Xum_Class18

where Xum_Students18.xm_Sno18=Xum_Reports18.xm_Sno18

and Xum_Reports18.xm_Cno18=Xum_Courses18.xm_Cno18

and Xum_Class18.xm_Clno18=Xum_Students18.xm_Clno18

)

(2)课程平均成绩

 

create view 每门平均成绩

as(

select xm_Cno18,avg(xm_Score18)平均分

from Xum_Reports18

group by xm_Cno18

 

 

)

(3)课程和学分统计

create view 课程和学分统计

as

(

select xm_Sno18,xm_Cname18,xm_Ccredit18

from 学生成绩统计

)

(4)教师课表

 

create view 教师课表

as(

select xm_Tno18,Xum_Teachers18.xm_Tname18,xm_Cno18,xm_Cname18,

xm_Ccredit18,xm_Chour18

from Xum_Teachers18,Xum_Courses18

where Xum_Teachers18.xm_Tname18=Xum_Courses18.xm_Tname18

)

(5)班级课表

 

create view 班级课表

as

(

select Xum_Class18.xm_Clno18,xm_Clname,Xum_Courses18.xm_Cno18,

xm_Cname18,xm_Cdate18,xm_Ccredit18,xm_Chour18

from Xum_Class18,Xum_Courses18,Xum_Class_Cour18

where Xum_Class18.xm_Clno18=Xum_Class_Cour18.xm_Clno18

and Xum_Class_Cour18.xm_Cno18=Xum_Courses18.xm_Cno18

)

(6)生源地人员统计

 

create  view 生源地人员统计

as

(select xm_Sorig18,count(xm_Sno18)数量

from Xum_Students18

group by xm_Sorig18

)

(7)教师课程成绩

 

create view 教师课程成绩

as

(

select xm_Tno18,Xum_Teachers18.xm_Tname18,xm_Cno18,xm_Sno18,xm_Score18

from Xum_Teachers18,Xum_Reports18

where Xum_Teachers18.xm_Tname18=Xum_Reports18.xm_Tname18

 

 

)

3.索引建立

create unique index Tea_Tno on Xum_Teachers18(xm_Tno18)

create unique index Cour_Cno on Xum_Courses18(xm_Cno18)

create unique index Mno_CLno on Xum_Class18(xm_CLno18,xm_Mno18)

create unique index Majo_Mno on Xum_Majors18(xm_Mno18)

create unique index CLno_Sno on Xum_Students18(xm_Sno18,xm_CLno18)

create unique index Cno_Sno on Xum_Reports18(xm_Sno18,xm_Cno18)

4.触发器建立 

(1)教师删除(删除一个教师时,与教师相关的记录全都删除)

create trigger 教师删除18

on Xum_Teachers18

for delete

as

  delete xm_Tno18

  where Xum_Tea_Cour18.xm_Tno18=(select xm_Tno18 from deleted)

  and Xum_Teac_Class18.xm_Tno18=(select  xm_Tno18 from deleted)

 

(2)学生删除

create trigger 学生删除18

on Xum_Students18

for delete

as

 begin

   delete from Xum_Reports18

  where Xum_Reports18.xm_Sno18 in (select xm_Sno18 from deleted)

  delete from Students_account18

  where Students_account18.xm_Sno18 in (select  xm_Sno18 from deleted)

  End

(3)学生统计(提交成绩时,将>=60的成绩记为合格,同时加上该课程学分)

 

create trigger 学分统计18 on Xum_Reports18

for insert

as

 update Xum_Students18

 set xm_Ssum18=(

 select sum(xm_Ccredit18)

 from Xum_Courses18

 where xm_Cno18 in

 (

 select xm_Cno18

 from Xum_Reports18

 where xm_Score18>=60

 and Xum_Reports18.xm_Sno18 in

 (select xm_Sno18

 from inserted)

 

 )

 )

 where Xum_Students18.xm_Sno18 in

 (

 select xm_Sno18

 from inserted

 )

(4)教师更新

 

create trigger 教师更新

on Xum_Teachers18

for update

as

   if update(xm_Tno18)

   begin

   update Xum_Tea_Cour18

   set xm_Tno18=i.xm_Tno18

   from deleted d,inserted i ,Xum_Tea_Cour18 t

   where t.xm_Tno18=d.xm_Tno18

   end

   

   begin

   update Xum_Teac_Class18

   set xm_Tno18=i.xm_Tno18

   from deleted d,inserted i,Xum_Teac_Class18 c

   where c.xm_Tno18=d.xm_Tno18

   End

(5)学生添加 自动注册新用户 默认密码12345

 

 create trigger 插入创建学生新用户18

  on Xum_Students18

  for insert

  as

   declare @sno char(10)

   begin

       select @sno=xm_Sno18 from inserted

   insert into Students_account18

   values(@sno,'12345')

 

 

  End

(6)教师添加 自动注册新用户 默认密码12345

 create trigger 插入创建教师新用户18

  on Xum_Teachers18

  for insert

  as

   declare @tno char(10)

   begin

       select @tno=xm_Tno18 from inserted

   insert into Teachers_account18

   values(@tno,'12345')

 

 

  End

  1. 建立存储过程

(1)插入新学生

 

create procedure pro_插入新学生

@sno char(12),

@sname char(10),

@ssex char(5),

@sage int,

@sorig char(20),

@ssum float,

@clno char(10)

as

insert Xum_Students18(xm_Sno18,xm_Sname18,xm_Ssex18,xm_Sage18

,xm_Sorig18,xm_Ssum18,xm_Clno18)

values(@sno,@sname,@ssex,@sage,@sorig,@ssum,@clno)

select *

from Xum_Students18

Go

(2)自动算学分

 

create procedure pro_输入成绩自动生成学分

@sno char(12),

@cno char(10),

@cname char(10),

@cdate char(10),

@score int,

@tname char(10),

@credit float

 

as

begin  

   insert into pro_选修

   values(@sno,@cno,@score)

   update Xum_Students18

   set xm_Ssum18=xm_Ssum18+@credit

   where Xum_Students18.xm_Sno18=@sno

End

6. 前台界面与后台数据库连接说明,代码实现。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Data.SqlClient;

using System.Windows.Forms;

 

namespace WindowsFormsApplication1

{

    class sqlConnect

    {

        public SqlConnection conn = null;

        public sqlConnect()

        {

            if (conn == null)

            {

                string connectString = "Data Source =LAPTOP-FPCD1SM8\\SQL2014; database =XumMIS18; " +

            "Integrated Security = True";

                conn = new SqlConnection(connectString);

                if (conn.State == ConnectionState.Closed) conn.Open();

 

            }

        }

        public void closeConnect()

        {

            if (conn.State == ConnectionState.Closed) conn.Close();

        }

        public DataSet Getds(string sql)

        {

            if (conn.State == ConnectionState.Closed) conn.Open();

            DataSet ds = new DataSet();

            SqlDataAdapter da = new SqlDataAdapter(sql, conn);

            da.Fill(ds);

            conn.Close();

 

            return ds;

        }

 

        public int OperateData(string sql)

        {

            if (conn.State == ConnectionState.Closed) conn.Open();

            SqlCommand sqlcom = new SqlCommand();

            sqlcom.CommandText = sql;

            sqlcom.CommandType = CommandType.Text;

            sqlcom.Connection = conn;

            int x = sqlcom.ExecuteNonQuery();

            conn.Close();

            return x;

 

        }

        public DataSet BindDataGridView(DataGridView dgv, string sql)

        {

            if (conn.State == ConnectionState.Closed) conn.Open();

            SqlDataAdapter da = new SqlDataAdapter(sql, conn);

            DataSet ds = new DataSet();

            da.Fill(ds);

            dgv.DataSource = ds.Tables[0];

            return ds;

 

 

        }

    }

}

 

四、实验报告注意事项及要求

通过这次课程设计发现这其中需要的很多知识我们没有接触过,还有很多需要我们掌握的东西我们不明白。同时也发现有很多已经学过的东西我们没有理解到位,不能灵活运用于实际,不能很好的用来解决问题,这就需要我们不断的大量的实践,通过不断的自学,不断地发现问题,思考问题,进而解决问题。

标签:10,xm,数据库,编程,char,Tno18,6.3,Xum,create
From: https://www.cnblogs.com/yindantong/p/18258726

相关文章

  • 深入理解AQS:Java并发编程中的核心组件
    目录AQS简介AQS的设计思路AQS的核心组成部分状态(State)同步队列(SyncQueue)条件队列(ConditionQueue)AQS的内部实现节点(Node)锁的获取与释放独占锁共享锁条件变量AQS的应用案例ReentrantLockCountDownLatchSemaphore总结参考文献AQS简介AbstractQueuedSynchronizer(AQ......
  • 5.21实验三 Web数据库程序设计
    一、实验目的通过使用JSP技术设计一个简单的数据库管理系统,了解展示页面和编辑页面的区别,掌握Web服务器与MySQL数据库的连接和数据库操作的方法,掌握使用Java语言编写JSP文件的方法。二、实验内容和基本要求从以下列举的四个数据库中,任选其一,或者自行定义其他数据库,每个数据库中......
  • 5.22 实验一 数据库和表的建立、数据操作
    实验一 数据库和表的建立、数据操作一、实验目的:掌握使用SQL语言进行数据定义和数据操纵的方法。二、实验要求:建立一个数据库stumanage,建立三个关系表student,course,sc。向表中插入数据,然后对数据进行删除、修改等操作,对关系、数据库进行删除操作。三、实验步骤:1、......
  • 关于数据库的一些常用操作
    数据定义语言(DDL)DDL主要用于创建、修改和删除数据库中的对象,如数据库、表、视图等。创建数据库sql复制代码CREATEDATABASE数据库名;选择数据库sql复制代码USE数据库名;创建表sql复制代码CREATETABLE表名(列名1数据类型1,列名2数据类型2,......
  • 服务器数据库
    数据库往往是服务器中最核心的部分,所以一旦数据库发生损坏,将会带来巨大的损失,因此数据库的数据恢复功能变得越来越重要了。在服务器运行过程中,由于断电、操作不当原因损坏到服务器的硬盘的时候,怎样才能恢复网站服务器的数据呢?一、服务器存储系统非常重要,硬盘作为服务器数据存储......
  • 数据库数据恢复-oracle数据库常见故障及数据恢复分析
    作为存储和处理数据的系统,oracle数据库在使用过程中不可避免会出现各种导致数据丢失和数据损坏的故障。总结出oracle数据库常见故障以及恢复可能性。1、Oracle数据库无法启动或者启动后无法正常工作。如果故障是突发性的,通常情况下恢复的可能性极高。出现这类故障后,首先要检查s......
  • SQL、Mysql、数据库到底什么关系
    sql很多都搞不清Sql和Mysql,数据库之间的关系,其实这些概念之间的关系用下面这张图就能搞懂:也就是说,数据库是草图,Mysql是交稿,数据可以理解成砖块,sql是处理砖块(数据)的工具。下面这张图是SQL的常见分类,以及常用操作指令:数据库中表的结构包括了代表列名的列,和具体数据的行表中的......
  • 数据库管理系统的数据隔离级别
    数据库中的幻读和不可重复读是并发事务处理中的两个重要概念,它们与事务的隔离级别紧密相关。以下是对这些概念的进一步解释以及它们在不同隔离级别下的表现:不可重复读(Non-repeatableRead):不可重复读发生在一个事务读取了某个数据项,然后在同一事务中再次尝试读取同一数据项时,发......
  • 单细胞测序最好的教程(十四)测序原始数据公开至NCBI数据库
    作者按国内对于单细胞测序相关的中文教程确实不够全面,当然NCBI官网给的上传教程也比较详细了,所以变成了会者不难。本教程你现在可能用不上,但是你如果做单细胞测序,那么未来你一定会用上,建议收藏。在这里,我们将演示如何将测序文件完整上传到NCBI上。本教程首发于单细胞最好的中文......
  • 数据库系统概论-第6章关系数据理论
    6.1问题的提出针对一个具体问题,应该如何构造一个适合于它的数据库模式,即应该构造几个关系模式,每个关系由哪些属性组成。关系数据库的规范化理论。本章中把关系模式看作一个三元组R<U,F>。当且仅当U上的一个关系r满足F时,r称为关系模式R<U,F>的一个关系。作为一个二维表,关系要......