用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(); }        }        
注意:

  1. 写SQL语句时最好先在SQL server上试一下,能得出正确结果后再复制到VS里
  2. 在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语句,最后只能用两个按键分别执行不同的功能了。







3 0
原创粉丝点击