用C#和SQL实现课程信息管理系统(华工软院复试题练习)
来源:互联网 发布:佳明软件下载 编辑:程序博客网 时间:2024/05/01 17:56
环境:win7,VS 2010和SQL server2008
我是17年考研,第一志愿华南理工大学电子与通信工程,但排名不太理想,于是在院线出来之前就开始准备调剂,目标是华工软院。之前完全没有接触过数据库和C#,学了一周的时间,参考了网上的数据库教学视频和《C# 2012数据库编程入门经典》(第5版),做了如下一个简单的数据库管理系统。
数据库编程(不限语言)
自己创建表:
学生表:学号,姓名,性别
课程表:课程号,课程名
选课表:学号,课程号,分数
(1) 根据姓名查找所选课程名
(2) 根据课程名查找选课人数,平均分数
(一)创建数据库
第一步:建立数据库,命名为2016ke_cheng
第二部:建立数据表,并设置主键(见图)
学生表STUDENTS:学号,姓名,性别
课程表LESSONS:课程号,课程名
选课表CLASS_SHEET:学号,课程号,分数
第三步:写入数据。由于本次练习是根据网上的试题回忆版来做的,所以具体数据就自己编了。此处建议用INSERT语句,复制粘贴后直接改数据即可,个人感觉比手动填表要快。
学生表STUDENTS:
课程表LESSONS:
选课表CLASS_SHEET:
到此,数据库部分就基本完成了。
(二)C#编写窗体程序
分析需求:
(1) 根据姓名查找所选课程名
需要一个文本框来输入姓名,一个查询按键,一个结果展示区。我的设计如下:
编程思路:按下按键->读入文本框信息->链接数据库,执行SQL语句->关闭数据库链接
代码如下:
//页面1 private void textBox1_TextChanged(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { string connstring = @"server=.\sqlexpress;database = 2016ke_cheng;integrated security = true"; SqlConnection conn = new SqlConnection(connstring); textBox1_TextChanged(sender, e);//读取学生名字 //SQL语句,查找某人的选课情况 string sql2 = @"Select STUDENTS.student_name,LESSONS.lesson_name,CLASS_SHEET.score from CLASS_SHEET , STUDENTS , LESSONS where STUDENTS.student_name='" + textBox1.Text + "'and CLASS_SHEET.student_id=STUDENTS.student_id and CLASS_SHEET.lesson_id=LESSONS.lesson_id"; SqlDataAdapter da1 = new SqlDataAdapter(sql2, conn); DataSet ds1 = new DataSet(); da1.Fill(ds1, "CLASS_SHEET,STUDENTS,LESSONS"); dataGridView1.DataSource = ds1.Tables["CLASS_SHEET,STUDENTS,LESSONS"]; try { conn.Open(); } finally { conn.Close(); } }注意:
- 写SQL语句时最好先在SQL server上试一下,能得出正确结果后再复制到VS里
- 在VS上写SQL语句时要把所有内容写在一行里,不要有换行(网上说换行的地方用双引号和加号连接就行,但我之前这么写,编译没有报错,就是执行的时候会出错,后来我把所有语句写在同一行就没有这种问题,我也不太清楚为什么……)
(2) 根据课程名查找选课人数,平均分数
需要一个文本框来输入姓名,两个查询按键,一个结果展示区。我的设计如下:
编程思路与之前类似,代码如下:
//页面2 private void button2_Click(object sender, EventArgs e) { string connstring = @"server=.\sqlexpress;database = 2016ke_cheng;integrated security = true"; SqlConnection conn = new SqlConnection(connstring); //SQL语句,查找某课的选课人数 string sql2 = @"select count(STUDENTS.student_name) as student_count from LESSONS,CLASS_SHEET,STUDENTS where LESSONS.lesson_name='"+ textBox2.Text + "'and LESSONS.lesson_id=CLASS_SHEET.lesson_id and STUDENTS.student_id=CLASS_SHEET.student_id" ; textBox2_TextChanged(sender, e);//读取课程名 SqlDataAdapter da = new SqlDataAdapter(sql2, conn); DataSet ds = new DataSet(); da.Fill(ds, "LESSONS"); dataGridView2.DataSource = ds.Tables["LESSONS"]; try { conn.Open(); } finally { conn.Close(); } } private void textBox2_TextChanged(object sender, EventArgs e) { } private void button3_Click(object sender, EventArgs e) { string connstring = @"server=.\sqlexpress;database = 2016ke_cheng;integrated security = true"; SqlConnection conn = new SqlConnection(connstring); //SQL语句,查找某课的平均分 string sql3 = @"select avg(CLASS_SHEET.score) as average_score from LESSONS,CLASS_SHEET,STUDENTS where LESSONS.lesson_name='"+textBox2.Text+"'and LESSONS.lesson_id=CLASS_SHEET.lesson_id and STUDENTS.student_id=CLASS_SHEET.student_id"; textBox2_TextChanged(sender, e);//读取课程名 SqlDataAdapter da = new SqlDataAdapter(sql3, conn); DataSet ds = new DataSet(); da.Fill(ds, "LESSONS"); dataGridView2.DataSource = ds.Tables["LESSONS"]; try { conn.Open(); } finally { conn.Close(); } }
执行结果:
(1) 根据姓名查找所选课程名
(2) 根据课程名查找选课人数,平均分数
我的课程信息管路系统大致如上所述了。总的来说,编程还是比较简单,倒是花了大量的时间解决一些软件配置上的问题。还有就是涉及数据库查询语句的问题,一定要弄清查询的逻辑和不同表之间的约束关系。我用的语句非常简单,像查询课程信息这里,本想把选课人数和平均分放在一个表里,但不知道怎么写SQL语句,最后只能用两个按键分别执行不同的功能了。
- 用C#和SQL实现课程信息管理系统(华工软院复试题练习)
- c#学生信息管理系统
- 小试牛刀-教务信息管理系统(SQL)
- 学生信息管理系统--(Java+MySQL实现)
- 学生信息管理系统--(Java+MySQL实现)
- 学生信息管理系统(C实现)
- 学生信息管理系统之年级课程设置
- 华工腾讯俱乐部新生练习赛(二)解题报告
- 【实现】最大连续子序列和——第7周《算法》课程提到的 google笔试题/浙大研究生复试机试题
- C# WinForm考勤信息管理系统
- 学生信息管理系统--SQL注入
- 达内课程-安卓页面和组件练习项目(航空订票系统)
- java.swing和Java.awt实现学生信息管理系统
- 学生信息管理系统---SQL语句的中的符号有什么用(一)
- 学生信息管理系统---SQL语句的中的符号有什么用(二)
- 医院信息管理系统-链式实现
- 学生信息管理系统C实现
- 学生信息管理系统汇编实现
- OpenGL概述
- 编译器的工作过程
- golang线程同步WaitGroup简介
- 射频识别技术漫谈(12)——三次相互认证
- webpack 浅析 --命令行安装编译
- 用C#和SQL实现课程信息管理系统(华工软院复试题练习)
- 解决公务车Bug:公安违章管理中编辑新增的公安违章记录,点击保存按钮报:数据库操作异常,null
- 题目1079:手机键盘答案
- 『mysql』mysql 练习题
- PackageManagerService启动流程
- 单例模式的写法(看完这个就够了)
- 随手记录
- 动态规划-矩阵链乘法
- Jvm类加载机制理解