# 数据库设计与应用开发
## 数据库设计
1.需求分析
本次实验面向选课系统进行设计,分别有院系、教师、学生、课程四个对象,每个对象都有一个ID,作为唯一标识(主关键字);一个名称,便于用户的使用。除此之外,每个学生、课程都有所属院系,用来限制其(被)选课的范围。
上述中ID为INT类型,名称为TEXT类型。
数据给出输入后,将会将其转换为对应的格式,并在不符合对应格式的要求时报错。
2.概念数据库设计
设计的ER图如下:
![](https://www.writebug.com/myres/static/uploads/2022/6/13/01d51904197608e994df4e3e6751698e.writebug)
3.逻辑数据库设计
对于学生属于院系,将院系号并入学生的关系中。
对于课程属于院系,将院系号并入课程的关系中。
对于教师开设课程,将教工号并入课程的关系中。
对于学生选择课程,新建关系记录对应的学号和课号。
综上所述,得到以下五个关系:
| 关系名 |关系实例 |
|----|----|
| 院系(COLLEGE) | ![1](image/1.png) |
| 教师(TEACHER) | ![2](image/2.png) |
| 学生(STUDENT) | ![3](image/3.png) |
| 课程(COURSE) | ![4](image/4.png) |
| 选课单(SCHEDULE) | ![5](image/5.png) |
4.物理数据库设计
除课单外,其他关系的主键均为ID。
学生关系中,所属院系为对应院系关系的外键。
课程关系中,所属院系为对应院系关系的外键。
课单关系中,选课学生为对应学生关系的外键,被选课程为对应课程关系的外键。
5.数据库建立
所用DBMS为SQLite。
所用数据库可见data/data.db。
5.1 概念模式
各关系的逻辑结构和特征如下所示:
![](https://www.writebug.com/myres/static/uploads/2022/6/13/e6b4864d9df9edf1907fbea9acaf06e9.writebug)
5.2 外模式
提供三种外模式。
1. 管理员模式:可以向COLLEGE中添加新的院系、教师和学生。
2. 教师模式:可以向COURSE中添加新的课程,由于添加课程需要院系的信息(新课程的所属院系需已经存在),故为此创建视图,定义为”CREATE VIEW college_info AS SELECT id, name FROM college”。
3. 学生模式:可以从COURSE中选择课程,由于选课需要课程的信息,故为此创建视图,定义为”CREATE VIEW course_info AS SELECT id, name, college_id FROM course”。
## 数据库应用开发
数据库开发采用Python的sqlite3包。
前端开发采用Python的PyQt包。
具体代码见src文件夹。
## 实验结果
1.主界面
![](https://www.writebug.com/myres/static/uploads/2022/6/13/2113304117aa20c6631813e4d46f9616.writebug)
各功能如图所示。
2.添加院系
![](https://www.writebug.com/myres/static/uploads/2022/6/13/fa7c627bed1d79eed4685fc9c9a7b2f4.writebug)
在输入合法的院系名和院系号后,会向数据库添加该条对象,并提示添加成功。
![](https://www.writebug.com/myres/static/uploads/2022/6/13/bd5a7018e26b59ca52274b662f039c62.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/6/13/1116c2b3af1b97e41c615e2de201adea.writebug)
若输入不合法,则会提示相应的错误信息。
以下各操作与之类似,不再赘述。
3.添加教师
![](https://www.writebug.com/myres/static/uploads/2022/6/13/74757a1cd46ebce1bd89512aea99cf63.writebug)
4.添加学生
![](https://www.writebug.com/myres/static/uploads/2022/6/13/9f0b7e1bf31b1c168f4649ce7aa531f5.writebug)
5.新增课程
![](https://www.writebug.com/myres/static/uploads/2022/6/13/dc1d2b2c547999cb3bda3c96ab606f55.writebug)
6.选课
![](https://www.writebug.com/myres/static/uploads/2022/6/13/cf513dcc8477bd604c052ca22e5cac29.writebug)
- 1
- 2
- 3
- 4
- 5
前往页