实验3.选课系统
文章目录
- 一、实验要求
- 二、SQL Server 数据库设计
- 三、Visual Studio 页面设计与功能实现
-
- 四、总结
-
代码包位置:
https://download.csdn.net/download/weixin_50836014/85970249
由VS实现,链接中的压缩包包含整个工程文件和实验报告。
实验环境:
Windows10
Microsoft SQL Server Management Studio 2019
Visual Studio 2019
PowerDesigner(用于数据库模型设计,可用可不用,但是强烈推荐使用)
实验报告:
一、实验要求
设计数据库,基本信息包括学生、课程、教师,学生从已分配教师的课程列表中选择相应的课程(课程列表项信息包括:课程名称、学分、授课教师、授课时间等,可以手工录入已分配教师、上课时间的课程列表信息)。
选课规则:每个学生最少选择3门课程,学分高于8学分,最多可以选择5门课程,学分不超过12学分。
实现下列功能:
(1)录入学号,自动显示学生姓名。
(2)在可选择课程列表上方显示已选择的课程列表,可以从已选择的课程列表中删除已选择的课程。
(3)显示可选择的课程列表(不包含已选择的课程),可以按规则选择3-5门课程,选择的课程自动从可选课程列表中移至已选课程列表。
(4)显示当前学生选择的课程数量、总学分。
(5)可以临时保存学生选择的课程信息,如果符合选课规则(3-5门、学分:8-12学分),则可提交选课结果。
二、SQL Server 数据库设计
数据库中一共有三个表:学生、课程、选课列表
1.“学生”表:
2.“课程”表:
3.“选课列表”
其物理数据模型如图:
在数据库中插入若干用例:
insert into 学生(姓名,学号,密码)
values('张三','1120191011','123456'),
('李四','1120201516','123456'),
('王五','1120192421','123456'),
('孙六','1120200046','123456'),
('周七','1120191525','123456');
insert into 课程
values ('课程01','20210101',2 ,'讲师01','2021-09-11'),
('课程02','20210102',3 ,'讲师02','2021-09-12'),
('课程03','20210103',2 ,'讲师03','2021-09-17'),
('课程04','20210104',3 ,'讲师04','2021-09-28'),
('课程05','20210105',3 ,'讲师05','2021-09-30'),
('课程06','20210106',2 ,'讲师06','2021-10-05'),
('课程07','20210107',2 ,'讲师07','2021-10-10'),
('课程08','20210108',3 ,'讲师08','2021-09-17'),
('课程09','20210109',2 ,'讲师09','2021-09-28'),
('课程10','20210110',2 ,'讲师10','2021-10-24'),
('课程11','20210111',3 ,'讲师11','2021-10-10');
insert into 选课列表
values ('20210101','1120191525'),
('20210102','1120192421'),
('20210109','1120191011'),
('20210102','1120191011'),
('20210110','1120200046'),
('20210105','1120201516'),
('20210107','1120200046');
三、Visual Studio 页面设计与功能实现
此处一共有两个页面,分别是”登录页面“和”选课页面“。
1.登录页面
输入密码时,将密码显示为“ * ”
private void textBox2_TextChanged(object sender, EventArgs e)
{
this.textBox2.PasswordChar = '*';
}
输入完信息后,点击登录,系统在数据库中匹配信息,如果学号或密码不匹配,则返回相应提示
private void button1_Click(object sender, EventArgs e)
{
string sid = this.textBox1.Text;
string password = this.textBox2.Text;
if (sid.Equals("") || password.Equals(""))
{
MessageBox.Show("学号或密码不能为空!");
}
else
{
SqlConnection SqlCon = null;
string connectionString = "server=.;database=course;Trusted_Connection=SSPI";
SqlCon = new SqlConnection(connectionString);
SqlCon.Open();
string sql = "Select * from 学生 where 学号='" + sid + "' and 密码='" + password + "' ";
SqlCommand cmd = new SqlCommand(sql, SqlCon);
cmd.CommandType = CommandType.Text;
SqlDataReader sdr = cmd.ExecuteReader();
if ( sdr.Read() )
{
Message1 = sdr[0] + "同学,欢迎登录选课系统!";
Form2 fm2 = new Form2();
fm2.Show();
}
else
{
MessageBox.Show("学号或密码错误");
}
SqlCon.Close();
}
}
2.选课页面
成功登录后,最上方会显示“学生姓名+同学,欢迎登录选课系统!”
已选课程的dataGridView1会实时显示该同学已选择的课程,可选课程的dataGridView2会实时显示未选择的课程。
(1)退课
单击选中“已选课程”中的一门棵,再点击“退课”按钮,已选课程表中该课程消失,同时已选课程数和已选总学分也会实时刷新。
(2)选课
单击选中“可选课程”中的一门棵,再点击“选课”按钮,“可选课程”表中该课程消失,“已选课程”表中出现该门课程,同时已选课程数和已选总学分也会实时刷新。
提示:不管是选课还是退课,系统都不会对数据库进行增、删、改、查等操作,只是两个dataGridView图表会进行实时更新,只有选择的课程符合要求并点击“确认提交”,才会对数据库进行操作。
(3)提交选课结果
点击“确认提交”按钮,系统会判断所选课程是否符合要求:3-5门课、8-12学分。
如果符合选课要求,则会向数据库的“选课列表”中插入相关信息,同时弹出“提交成功”的消息框。
if (Sum_course >= 3 && Sum_credit >= 8 && Sum_course <= 5 && Sum_credit <= 12)
{
int num_lines = 0;
string sql_delete = "delete from 选课列表 where 学号 = '"+sid+"'";
sql_delete = string.Format(sql_delete, sid);
Conn.Open();
Debug.WriteLine(sql_delete);
SqlCommand cmd_delete = new SqlCommand(sql_delete, Conn);
num_lines = cmd_delete.ExecuteNonQuery();
if (num_lines == -1)
{
MessageBox.Show("删除失败");
}
Conn.Close();
for (int i = 0; i < Course_selected.Rows.Count; i++)
{
string cid = Course_selected.Rows[i]["课程编号"].ToString();
string sql_insert = "insert into 选课列表 values('"+cid+"','"+sid+"')";
sql_insert = string.Format(sql_insert, sid, cid);
Conn.Open();
Debug.WriteLine(sql_insert);
SqlCommand cmd_insert = new SqlCommand(sql_insert, Conn);
num_lines = cmd_insert.ExecuteNonQuery();
if (num_lines == -1)
{
MessageBox.Show("录入失败!");
}
Conn.Close();
}
MessageBox.Show("提交成功");
}
else if (Sum_course < 3)
{
MessageBox.Show("所选课程过少!");
}
else if (Sum_course > 3)
{
MessageBox.Show("所选课程过多!");
}
else if (Sum_credit < 8)
{
MessageBox.Show("课程总学分偏低!");
}
else if (Sum_course > 15)
{
MessageBox.Show("课程总学分过高!");
}
四、总结
…
代码包位置:
https://download.csdn.net/download/weixin_50836014/85970249
更多资源
北京理工大学—计算机专业课程资源https://blog.csdn.net/weixin_50836014/article/details/125687455
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)