数据库项目实训回顾

数据库项目实训回顾,本次是做教室综合管理系统,核心功能就是关于借用教室

整个项目已上传 github 码云

流程步骤:

  1. 需求分析
  2. 数据库设计
  3. 数据库的发布实施
  4. 数据库测试
  5. 数据库应用开发

一、需求分析

1.	教室综合管理系统
	1)	根据课表编排每间教室的使用时间
	2)	除了课表占用的时间外可以使用空闲时间将教室借与学生
	3)	教室需要定期检修,出现设备故障后需要暂停使用进行维修
	4)	教室在每学期期末需要进行考试安排
2.	教室在每周的哪些时间需要用来上课,根据教务处的排课结果安排教室使用时间
3.	学生在教室空闲时间可通过提供自己学号来代表班级借用教室
4.	期末两周时间内,根据教务处的考试安排结果占用教室使用时间
5.	暂停使用处于需要维修状态下需要标记出来
6.	期末考试时也需要将教室标记为考试占用状态
7.	学生可以根据具体时间查到有哪些空闲教室
8.	学生可以根据教室号查到此教室什么时候空闲
9.	学生可以根据教室容量(座位数)查询教室
10.	考试安排需要根据人数具体分配教室
11.	老师也可提供教师号借用教室,借用方式和学生借用类似

二、数据库设计

使用软件:PowerDesigner

概念模型 E-R图:

数据库项目实训回顾

逻辑模型 :

数据库项目实训回顾

物理模型:

数据库项目实训回顾

最后,生成数据库定义脚本文件

三、数据库的发布实施

使用软件:SQLyog

根据上一阶段的 .sql数据库定义脚本文件,创建数据库、表、视图、触发器、存储过程等。并添加一些数据。

数据库项目实训回顾

CREATE DATABASE 教室综合管理系统;
USE 教室综合管理系统;
-- 导入表结构
-- 插入数据

INSERT INTO 学生 VALUES('S005','陈边','18080808000');
INSERT INTO 学生 VALUES('S001','刘三','18080808001');
INSERT INTO 学生 VALUES('S002','李聪','18080808002');
INSERT INTO 学生 VALUES('S003','赵海','18080808003');
INSERT INTO 学生 VALUES('S004','王海','18080808004');

INSERT INTO 教师 VALUES('T001','宋晓梅','17021954593');
INSERT INTO 教师 VALUES('T002','罗云霄','17021954593');
INSERT INTO 教师 VALUES('T003','李四','17022544593');
INSERT INTO 教师 VALUES('T004','王明','17021947593');
INSERT INTO 教师 VALUES('T005','陈欢','17021951293');

INSERT INTO 教室 VALUES('10A303',100);
INSERT INTO 教室 VALUES('10A201',90);
INSERT INTO 教室 VALUES('10A202',100);
INSERT INTO 教室 VALUES('10A203',100);
INSERT INTO 教室 VALUES('10A204',90);
INSERT INTO 教室 VALUES('10A301',100);
INSERT INTO 教室 VALUES('10A302',100);

INSERT INTO 课程 VALUES('C001','网络营销',90);
INSERT INTO 课程 VALUES('C002','C语言程序设计',120);
INSERT INTO 课程 VALUES('C003','java面向对象程序设计',95);
INSERT INTO 课程 VALUES('C004','C++面向对象程序设计',80);
INSERT INTO 课程 VALUES('C005','编译原理',123);
INSERT INTO 课程 VALUES('C006','计算机组成原理',90);
INSERT INTO 课程 VALUES('C007','操作系统',92);

INSERT INTO 课程安排 VALUES('C001','10A201',1,17,1,1112);
INSERT INTO 课程安排 VALUES('C002','10A202',1,18,2,910);
INSERT INTO 课程安排 VALUES('C006','10A202',1,18,2,34);
INSERT INTO 课程安排 VALUES('C003','10A201',1,15,3,12);
INSERT INTO 课程安排 VALUES('C004','10A204',1,18,4,34);
INSERT INTO 课程安排 VALUES('C007','10A204',1,18,4,12);
INSERT INTO 课程安排 VALUES('C005','10A301',1,18,5,56);
INSERT INTO 课程安排 VALUES('C007','10A301',1,18,5,12);
INSERT INTO 课程安排 VALUES('C002','10A301',1,18,7,910);

INSERT INTO 教室占用记录 VALUES('10A302','S005',NULL,17,1,1112,'开班会');
INSERT INTO 教室占用记录 VALUES('10A302','S001',NULL,18,1,910,'宣传部例会');
INSERT INTO 教室占用记录 VALUES('10A201','S002',NULL,5,7,1112,'团日活动');
INSERT INTO 教室占用记录 VALUES('10A201','S002',NULL,5,7,910,'自习');
INSERT INTO 教室占用记录 VALUES('10A201',NULL,NULL,20,7,12,'考试');
INSERT INTO 教室占用记录 VALUES('10A201',NULL,NULL,20,7,34,'考试');
INSERT INTO 教室占用记录 VALUES('10A201',NULL,NULL,20,7,56,'考试');
INSERT INTO 教室占用记录 VALUES('10A201',NULL,NULL,20,6,12,'考试');
INSERT INTO 教室占用记录 VALUES('10A201',NULL,NULL,20,6,34,'考试');
INSERT INTO 教室占用记录 VALUES('10A201',NULL,NULL,20,6,56,'考试');
INSERT INTO 教室占用记录 VALUES('10A201',NULL,NULL,20,5,12,'考试');
INSERT INTO 教室占用记录 VALUES('10A201',NULL,NULL,20,5,34,'考试');
INSERT INTO 教室占用记录 VALUES('10A201',NULL,NULL,20,5,56,'考试');
INSERT INTO 教室占用记录 VALUES('10A201',NULL,NULL,19,7,12,'维修');
INSERT INTO 教室占用记录 VALUES('10A202',NULL,NULL,20,7,34,'维修');
INSERT INTO 教室占用记录 VALUES('10A203',NULL,NULL,20,7,56,'维修');
INSERT INTO 教室占用记录 VALUES('10A204',NULL,NULL,20,6,12,'维修');
INSERT INTO 教室占用记录 VALUES('10A302',NULL,NULL,20,6,34,'维修');
INSERT INTO 教室占用记录 VALUES('10A301',NULL,NULL,20,6,56,'维修');
INSERT INTO 教室占用记录 VALUES('10A202',NULL,NULL,20,5,12,'维修');
INSERT INTO 教室占用记录 VALUES('10A202',NULL,NULL,20,5,34,'维修');
INSERT INTO 教室占用记录 VALUES('10A202',NULL,NULL,20,5,56,'维修');

-- 触发器 -- 教室占用申请
DELIMITER ;
DELIMITER $$

CREATE TRIGGER lease_ins_chk BEFORE INSERT
  ON 教室占用记录
  FOR EACH ROW
BEGIN
-- 检查是否存在此教室
  IF new.教室号 NOT IN (SELECT 教室号 FROM 教室) THEN
    signal SQLSTATE "HY000"
    SET message_text = "添加失败,不存在此教室号!";
  END IF;
  
-- 若有学生号,则检查是否存在此学生号
  IF new.学号 IS NOT NULL AND new.学号 NOT IN (SELECT 学号 FROM 学生 WHERE 学号=new.学号) THEN
    signal SQLSTATE "HY000"
    SET message_text = "添加失败,不存在此学生号!";
  END IF;
  
-- 若有工号,则检查是否存在此工号
  IF new.工号 IS NOT NULL AND new.工号 NOT IN (SELECT 工号 FROM 教师 WHERE 工号=new.工号) THEN
    signal SQLSTATE "HY000"
    SET message_text = "添加失败,不存在此工号!";
  END IF;
  
-- 检查此教室是否被占用
  IF new.教室号 IN (SELECT 教室号 FROM 教室占用记录 WHERE new.占用周=占用周 AND new.占用星期=占用星期 AND new.占用课时=占用课时
                    UNION SELECT 教室号 FROM 课程安排 WHERE 开始周<=new.占用周 AND 结束周>=new.占用周 AND new.占用星期=星期 AND new.占用课时=课时)
  THEN
    signal SQLSTATE "HY000"
    SET message_text = "添加失败,此教室于此时刻被占用!";
  END IF;
  
END$$

四、数据库测试

使用软件:SQLyog

-- 问题测试

-- 王德发同学要借用10A301教室,时间为17周星期5下午78节课,他的学号为S065,电话为15368458821。
INSERT INTO 学生 VALUES('S065','王德发','15368458821');
INSERT INTO 教室占用记录 VALUES('10A301','S065',NULL,17,5,78,'无');

-- 查询所有被考试占用的教室
SELECT * FROM 教室占用记录 WHERE 占用原因 = '考试';

-- 查询第19周的有哪些教室在维修。
SELECT 教室号 FROM 教室占用记录 WHERE 占用周=19 AND 占用原因 = '维修';

-- 查询课程名为C语言程序设计的课程在哪个教室上课
SELECT 教室号 FROM 课程安排 WHERE 课程号 IN(SELECT 课程号 FROM 课程 WHERE 课程名='C语言程序设计');

-- 网络营销所在的教室,在第17周时,有哪些时间被占用
SELECT 占用星期,占用课时 FROM 教室占用记录 WHERE 占用周 =17 AND 教室号 IN (SELECT 教室号 FROM 课程安排 WHERE 课程号 =(SELECT 课程号 FROM 课程 WHERE 课程名='网络营销'))
UNION
SELECT 星期 AS 占用星期, 课时 AS 占用课时 FROM 课程安排 WHERE 教室号 IN (SELECT 教室号 FROM 课程安排 WHERE 课程号 =(SELECT 课程号 FROM 课程 WHERE 课程名='网络营销')) AND 开始周<=17 AND 结束周>=17;

-- 查询在第5周星期7晚上910节课,容量>90的空闲教室有哪些。
SELECT 教室号 FROM  教室 WHERE   容量 >90 AND 教室号 NOT IN (SELECT 教室号 FROM 教室占用记录 WHERE 占用周 =5 AND 占用星期 =7 AND 占用课时=910 )AND 教室号 NOT IN (SELECT 教室号 FROM 课程安排 WHERE 开始周<=5 AND 结束周>=5 AND 星期=7 AND 课时=910);

-- 查询第17周星期1,3-4节课期间有哪些教室空闲。
SELECT 教室号 FROM  教室 WHERE  教室号 NOT IN (SELECT 教室号 FROM 教室占用记录 WHERE 占用周 =17 AND 占用星期 =1 AND 占用课时=34 ) AND 教室号 NOT IN (SELECT 教室号 FROM 课程安排 WHERE 开始周<=17 AND 结束周>=17 AND 星期=1 AND 课时=34);

-- 查询教室10A204在第17周所有因课程占用的时间。
SELECT 星期 AS 占用星期, 课时 AS 占用课时 FROM 课程安排 WHERE 教室号="10A204" AND 开始周<=17 AND 结束周>=17;

-- 查询第20周10A201的考试占用情况。
SELECT 占用周, 占用星期, 占用课时 FROM 教室占用记录 WHERE 教室号 = '10A201' AND 占用原因 = '考试';

-- 谢特老师要借用10A301教室,时间为15周星期4下午56节课,他的工号为T006,电话为16868593521。
INSERT INTO 教师 VALUES('T006','谢特','16868593521');
INSERT INTO 教室占用记录 VALUES('10A301',NULL,'T006',15,4,56,'无');


-- 触发器测试

INSERT INTO 教室占用记录
VALUES("10A201", NULL, NULL, 1, 7, 1112, "自习");

INSERT INTO 教室占用记录
VALUES("10A201", "S001", "T001", 1, 6, 1112, "补习");

INSERT INTO 教室占用记录
VALUES("10A201", "S666", NULL, 1, 7, 1112, "自习");

INSERT INTO 教室占用记录
VALUES("10A201", NULL, "T666", 1, 7, 1112, "自习");

INSERT INTO 教室占用记录
VALUES("10A201", NULL, NULL, 1, 7, 1112, "自习");

INSERT INTO 教室占用记录
VALUES("10A201", NULL, NULL, 17, 1, 1112, "自习");

效果截图:

数据库项目实训回顾

数据库项目实训回顾

数据库项目实训回顾

五、数据库应用开发

使用软件:VS2019 C#

1.查询所有教室借用记录

数据库项目实训回顾

数据库项目实训回顾

2.查询某时间某容量哪些有空闲的教室

数据库项目实训回顾

3.申请借用教室

数据库项目实训回顾

代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using MySql.Data.MySqlClient;

namespace 教室综合管理系统
{
    class Program
    {
        static void Main(string[] args)
        {
            //showLease();
            //showNotLeaseRoom();
            borrowClass();
        }

        // 查询所有教室借用记录
        static void showLease()
        {
            // 连接数据库
            string conStr = "server=localhost;user=root;database=教室综合管理系统;password=1110";
            MySqlConnection con = new MySqlConnection(conStr);
            con.Open();
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = con;
            cmd.CommandType = System.Data.CommandType.Text;

            cmd.CommandText = "SELECT * FROM 教室占用记录;";
            MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            int n = adapter.Fill(ds);

            if(ds.Tables[0].Rows.Count > 0)
            {
                for (int i = 0; i< ds.Tables[0].Rows.Count; i++)
                {
                    System.Console.WriteLine("教室号: {0}", ds.Tables[0].Rows[i]["教室号"]);
                    System.Console.WriteLine("学号: {0}", ds.Tables[0].Rows[i]["学号"]);
                    System.Console.WriteLine("工号: {0}", ds.Tables[0].Rows[i]["工号"]);
                    System.Console.WriteLine("占用周: {0}", ds.Tables[0].Rows[i]["占用周"]);
                    System.Console.WriteLine("占用星期: {0}", ds.Tables[0].Rows[i]["占用星期"]);
                    System.Console.WriteLine("占用课时: {0}", ds.Tables[0].Rows[i]["占用课时"]);
                    System.Console.WriteLine("占用原因: {0}", ds.Tables[0].Rows[i]["占用原因"]);
                    System.Console.WriteLine("\n");
                }
                System.Console.WriteLine("总共有 " + n + " 条教室借用记录:");
                System.Console.WriteLine("\n");
            }
            else
            {
                System.Console.WriteLine("目前还没有教室借用记录!");
            }
            con.Close();
        }

        // 查询某时间某容量哪些有空闲的教室
        static void showNotLeaseRoom()
        {
            int lease_week = 0, lease_day = 0, lease_course_time = 0, seats = 0;
            string temp = "";
            // 连接数据库
            string conStr = "server=localhost;user=root;database=教室综合管理系统;password=1110";
            MySqlConnection con = new MySqlConnection(conStr);
            con.Open();
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = con;
            cmd.CommandType = System.Data.CommandType.Text;

            // 查询时间
            Console.WriteLine("查询多少周:");
            temp = Console.ReadLine();
            if(temp == "")
                lease_week = 0;
            else
                lease_week = Convert.ToInt32(temp);
            while (lease_week < 1 || lease_week > 20)
            {
                Console.WriteLine("周数输入错误,请重新输入:");
                temp = Console.ReadLine();
                if (temp == "")
                    lease_week = 0;
                else
                    lease_week = Convert.ToInt32(temp);
            }

            Console.WriteLine("查询星期几:");
            temp = Console.ReadLine();
            if (temp == "")
                lease_day = 0;
            else
                lease_day = Convert.ToInt32(temp);
            while (lease_day < 1 || lease_day > 7)
            {
                Console.WriteLine("星期输入错误,请重新输入:");
                temp = Console.ReadLine();
                if (temp == "")
                    lease_day = 0;
                else
                    lease_day = Convert.ToInt32(temp);
            }

            Console.WriteLine("查询多少课时:");
            temp = Console.ReadLine();
            if (temp == "")
                lease_course_time = 0;
            else
                lease_course_time = Convert.ToInt32(temp);
            while (lease_course_time != 12 && lease_course_time != 34 && lease_course_time != 56 && lease_course_time != 78 && lease_course_time != 910 && lease_course_time != 1112)
            {
                Console.WriteLine("课时输入错误,请重新输入:");
                temp = Console.ReadLine();
                if (temp == "")
                    lease_course_time = 0;
                else
                    lease_course_time = Convert.ToInt32(temp);
            }

            Console.WriteLine("查询多少容量(可选填):");
            temp = Console.ReadLine();
            if (temp == "")
                seats = 0;
            else
                seats = Convert.ToInt32(temp);
            while (seats < 0)
            {
                Console.WriteLine("容量有误,请重新输入:");
                temp = Console.ReadLine();
                if (temp == "")
                    seats = 0;
                else
                    seats = Convert.ToInt32(temp);
            }

            cmd.CommandText = "SELECT 教室号 FROM  教室 WHERE 容量>@seats AND 教室号 NOT IN (SELECT 教室号 FROM 教室占用记录 WHERE 占用周=@lease_week AND 占用星期=@lease_day AND 占用课时=@lease_course_time) AND 教室号 NOT IN (SELECT 教室号 FROM 课程安排 WHERE 开始周<=@lease_week AND 结束周>=@lease_week AND 星期=@lease_day AND 课时=@lease_course_time);";
            cmd.Parameters.AddWithValue("@seats", seats);
            cmd.Parameters.AddWithValue("@lease_week", lease_week);
            cmd.Parameters.AddWithValue("@lease_day", lease_day);
            cmd.Parameters.AddWithValue("@lease_course_time", lease_course_time);

            MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            adapter.Fill(ds);
            if (ds.Tables[0].Rows.Count > 0)
            {
                System.Console.WriteLine("找到在第" + lease_week + "周 星期" + lease_day + " " + lease_course_time + "节课时 并且容量大于"+seats+" 的空闲教室了:");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    System.Console.WriteLine("教室号: {0}", ds.Tables[0].Rows[i]["教室号"]);
                }
                System.Console.WriteLine("\n");
            }
            else
            {
                System.Console.WriteLine("第"+lease_week+"周 星期"+ lease_day+" "+lease_course_time+"课时,没有空闲教室!");
                System.Console.WriteLine("\n");
            }

            con.Close();
        }

        // 申请借用教室
        static void borrowClass() {
            // 连接数据库
            string conStr = "server=localhost;user=root;database=教室综合管理系统;password=1110";
            MySqlConnection con = new MySqlConnection(conStr);
            con.Open();

            // 声明变量
            string classroom_id = "", student_id = "", teacher_id = "", lease_reason = "", temp = "";
            int lease_week = 0, lease_day = 0, lease_course_time = 0;

            // 申请占用教室
            Console.WriteLine("申请占用教室:");
            classroom_id = Console.ReadLine();

            MySqlCommand cmd1 = new MySqlCommand();
            cmd1.Connection = con;
            cmd1.CommandType = System.Data.CommandType.Text;
            // 获取已有的教室号
            cmd1.CommandText = "select 教室号 from 教室";
            MySqlDataAdapter adapter1 = new MySqlDataAdapter(cmd1);
            DataSet ds1 = new DataSet();
            adapter1.Fill(ds1);
            // 是否存在教室号
            for (int i = 0; i < ds1.Tables[0].Rows.Count; i++)
            {
                if (classroom_id == (string)ds1.Tables[0].Rows[i]["教室号"])
                    break;
                else if (i + 1 == ds1.Tables[0].Rows.Count)
                {
                    Console.WriteLine("无此教室,请重新输入:");
                    classroom_id = Console.ReadLine();
                    i = -1;
                }
            }

            // 申请者学号
            Console.WriteLine("申请者学号(可选填):");
            student_id = Console.ReadLine();

            if(student_id != "") { 
                MySqlCommand cmd2 = new MySqlCommand();
                cmd2.Connection = con;
                cmd2.CommandType = System.Data.CommandType.Text;
                // 先获取已有的学生的学号
                cmd2.CommandText = "select 学号 from 学生";
                MySqlDataAdapter adapter2 = new MySqlDataAdapter(cmd2);
                DataSet ds2 = new DataSet();
                adapter2.Fill(ds2);
                // 是否存在学生
                for (int i = 0; i < ds2.Tables[0].Rows.Count; i++)
                {
                    if (student_id == (string)ds2.Tables[0].Rows[i]["学号"])
                        break;
                    else if (i + 1 == ds2.Tables[0].Rows.Count)
                    {
                        Console.WriteLine("无此学生号,请重新输入:");
                        student_id = Console.ReadLine();
                        i = -1;
                    }
                }
            }

            // 申请者工号
            Console.WriteLine("申请者工号(可选填):");
            teacher_id = Console.ReadLine();
            if(teacher_id != "") {
                MySqlCommand cmd3 = new MySqlCommand();
                cmd3.Connection = con;
                cmd3.CommandType = System.Data.CommandType.Text;
                // 先获取已有的工号
                cmd3.CommandText = "select 工号 from 教师";
                MySqlDataAdapter adapter3 = new MySqlDataAdapter(cmd3);
                DataSet ds3 = new DataSet();
                adapter3.Fill(ds3);
                // 是否存在此工号
                for (int i = 0; i < ds3.Tables[0].Rows.Count; i++)
                {
                    if (teacher_id == (string)ds3.Tables[0].Rows[i]["工号"])
                        break;
                    else if (i + 1 == ds3.Tables[0].Rows.Count)
                    {
                        Console.WriteLine("无此工号,请重新输入:");
                        teacher_id = Console.ReadLine();
                        i = -1;
                    }
                }
            }

            // 申请时间
            Console.WriteLine("申请多少周:");
            temp = Console.ReadLine();
            if (temp == "")
                lease_week = 0;
            else
                lease_week = Convert.ToInt32(temp);
            while (lease_week < 1 || lease_week > 20)
            {
                Console.WriteLine("周数输入错误,请重新输入:");
                temp = Console.ReadLine();
                if (temp == "")
                    lease_week = 0;
                else
                    lease_week = Convert.ToInt32(temp);
            }

            Console.WriteLine("申请星期几:");
            temp = Console.ReadLine();
            if (temp == "")
                lease_day = 0;
            else
                lease_day = Convert.ToInt32(temp);
            while (lease_day < 1 || lease_day > 7)
            {
                Console.WriteLine("星期输入错误,请重新输入:");
                temp = Console.ReadLine();
                if (temp == "")
                    lease_day = 0;
                else
                    lease_day = Convert.ToInt32(temp);
            }

            Console.WriteLine("申请多少课时:");
            temp = Console.ReadLine();
            if (temp == "")
                lease_course_time = 0;
            else
                lease_course_time = Convert.ToInt32(temp);
            while (lease_course_time != 12 && lease_course_time != 34 && lease_course_time != 56 && lease_course_time != 78 && lease_course_time != 910 && lease_course_time != 1112)
            {
                Console.WriteLine("课时输入错误,请重新输入:");
                temp = Console.ReadLine();
                if (temp == "")
                    lease_course_time = 0;
                else
                    lease_course_time = Convert.ToInt32(temp);
            }

            // 教室是否被占用
            int f = 0;
            do
            {
                if (f != 0)
                {
                    Console.WriteLine("此教室于此时被占用,请重新输入时间\n");
                    Console.WriteLine("申请多少周:");
                    lease_week = Convert.ToInt32(Console.ReadLine());
                    while (lease_week < 1 && lease_week > 20)
                    {
                        Console.WriteLine("周数输入错误,请重新输入:");
                        lease_week = Convert.ToInt32(Console.ReadLine());
                    }
                    Console.WriteLine("申请星期几:");
                    lease_day = Convert.ToInt32(Console.ReadLine());
                    while (lease_day < 1 && lease_day > 7)
                    {
                        Console.WriteLine("星期输入错误,请重新输入:");
                        lease_day = Convert.ToInt32(Console.ReadLine());
                    }
                    Console.WriteLine("申请多少课时:");
                    lease_course_time = Convert.ToInt32(Console.ReadLine());
                    while (lease_course_time != 12 && lease_course_time != 34 && lease_course_time != 56 && lease_course_time != 78 && lease_course_time != 910 && lease_course_time != 1112)
                    {
                        Console.WriteLine("课时输入错误,请重新输入:");
                        lease_course_time = Convert.ToInt32(Console.ReadLine());
                    }
                }
                MySqlCommand cmd4 = new MySqlCommand();
                cmd4.Connection = con;
                cmd4.CommandType = System.Data.CommandType.Text;

                cmd4.CommandText = "SELECT 教室号 FROM 教室占用记录 WHERE @classroom_id=教室号 AND @lease_week=占用周 AND @lease_day=占用星期 AND @lease_course_time=占用课时 UNION SELECT 教室号 FROM 课程安排 WHERE @classroom_id=教室号 AND 开始周<=@lease_week AND 结束周>=@lease_week AND @lease_day=星期 AND @lease_course_time=课时";
                cmd4.Parameters.AddWithValue("@classroom_id", classroom_id);
                cmd4.Parameters.AddWithValue("@lease_week", lease_week);
                cmd4.Parameters.AddWithValue("@lease_day", lease_day);
                cmd4.Parameters.AddWithValue("@lease_course_time", lease_course_time);

                MySqlDataAdapter adapter4 = new MySqlDataAdapter(cmd4);
                DataSet ds4 = new DataSet();
                f = adapter4.Fill(ds4);
            } while (f>0);


            // 申请原因
            Console.WriteLine("申请原因(可选填):");
            temp = Console.ReadLine();
            if (temp == "")
                lease_reason = "无";
            else
                lease_reason = temp;
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = con;
            cmd.CommandType = System.Data.CommandType.Text;

            cmd.CommandText = "insert into 教室占用记录 values(@classroom_id,@student_id,@teacher_id,@lease_week,@lease_day,@lease_course_time,@lease_reason);";
            cmd.Parameters.AddWithValue("@classroom_id", classroom_id);
            if (student_id == "")
                cmd.Parameters.AddWithValue("@student_id", null);
            else
                cmd.Parameters.AddWithValue("@student_id", student_id);
            if(teacher_id == "")
                cmd.Parameters.AddWithValue("@teacher_id", null);
            else
                cmd.Parameters.AddWithValue("@teacher_id", teacher_id);
            cmd.Parameters.AddWithValue("@lease_week", lease_week);
            cmd.Parameters.AddWithValue("@lease_day", lease_day);
            cmd.Parameters.AddWithValue("@lease_course_time", lease_course_time);
            cmd.Parameters.AddWithValue("@lease_reason", lease_reason);


            int r = cmd.ExecuteNonQuery();
            //MySql.Data.MySqlClient.MySqlException
            if (r == 1)
            {
                System.Console.WriteLine("\n申请成功!");
                System.Console.WriteLine("\n");
            }
            else
            {
                System.Console.WriteLine("\n申请失败!");
                System.Console.WriteLine("\n");
            }

            con.Close();
        }
    }
}

上一篇:2021.1.10 数据库项目实训回顾


下一篇:视图学习笔记