目录
- 一、实验目的
- 二、设计数据库表
- 三、设计学生、课程和已选课程类
- 四、 系统流程图
- 五、功能流程图
- 六、总结
一、实验目的
1、设计学生类(学号 | 姓名 | 班级 | 初始密码)
2、设计课程类(课程代码 | 课程名称 | 学分)
3、设计已选课程类(课程代码 | 学号)
4、设计数据库表。
5、增删改查学生信息
6、学生选课
7、查看学生已选课程
8、增删改查课程信息
二、设计数据库表
创建一个数据库并新建三张表,分别命名为 "student"、"sourse" 和 "cs",
它们对应的字段如下:
student表: — sid (varchar(10))
— sname (varchar(20))
— class (varchar(20))
— password (varchar(10))
course表: — cid (varchar(10))
— cname (varchar(20))
— credit (varchar(5))
cs表: — cid (varchar(10))
— sid (varchar(10)
student表和course表是一种多对多的关系,一个学生可以选择多个课程,一个课程可以同时被多个学生选择,两者的多对多关系设计为cs表。student表中sid为主键,course表中cid为主键,cs表中使用sid和cid作为外键。
例如在如下的三个表中,离散数学课程同时被两个学生所选,学生李四同时选了离散数学课程和算法设计与分析课程。
三、设计学生、课程和已选课程类
这些类在连接数据库时会自动生成。
public partial class Student{
public string Sid { get; set; }
public string Sname { get; set; }
public string Class { get; set; }
public string Password { get; set; }
}
public partial class Course{
public string Cid { get; set; }
public string Cname { get; set; }
public string Credit { get; set; }
}
public partial class Cs{
public string Cid { get; set; }
public string Sid { get; set; }
}
四、 系统流程图
首先输入选项1至4,选择学生管理、课程管理、选课管理或退出系统。当选择学生管理、课程管理或选课管理时,可通过当前目录下的功能进行信息的增删改查,也可直接返回上一级目录,也就是主菜单目录。之后再进行下一项操作,直到退出系统。
五、功能流程图
1. 增加学生信息
输入待添加学生的学号,在数据库当中查找该学号。如果找到则说明数据库表中已经存储了该学生的信息。如果查找不到,则输入学生的姓名、班级和密码,最后添加信息到数据库并保存。
2. 删除学生信息
输入待删除学生的学号,在数据库当中查找该学号。如果找到则删除该学生信息并保存。如果查找不到,则提示找不到该学生。
3. 修改学生信息
输入待修改学生的学号,在数据库当中查找该学号。如果找到则修改该学生信息并保存。如果查找不到,则提示找不到该学生。
4. 查询学生信息
输入待查询学生的学号,在数据库当中查找该学号。如果找到则输出该学生的信息。如果查找不到,则提示找不到该学生。
课程与学生所实现的功能的流程图类似,所以不再一一画出。
5. 学生选课
输入待选课学生的学号,判断是否找到该学生,如果找不到返回提示信息。如果找到则输入待选课程号,如果存在该课程则进一步判断该学生是否已经选过该课程。如果没有选过则添加该选课信息到数据库并保存,否则输出提示该学生已经选过该课程。
6. 查看学生已选课程
输入学生学号,查询已选课程表中该学生的所有选课记录。判断该学生是否有选课记录。如果有选课记录,则输出学号和课程号。如果没有选课记录,输出提示信息。
六、总结
通过本次实验,熟悉了相关工具的使用和环境的配置,并掌握了一些处理报错的方法。
在所有实现的功能中,花费时间最长的是查看学生已选课程的功能。最后实现该功能的方法是先输入学号,接着使用LINQ语句查询已选课程表中该学生所选的所有课程,并将查询结果存储在students变量中,最后遍历查询结果并将选课情况打印输出到控制台。
在此次实践中我深刻理解了系统设计的步骤、流程以及思路,还加深了对数据库的认识,并认识到了以前所学基础课程的重要性。而且这次实验也使我掌握了很多新知识,特别是一些课本之外的内容,体会到了理论知识和实践相结合的重要性。