实验目的

通过实验,使学生掌握数据库系统设计和开发的一般方法,能够设计并实现简单的数据库系统。

实验要求

熟悉实验室实验环境,掌握实验预备知识,了解实验中故障排除的基本方法。实验中根据实验要求完成相应的任务,并独立完成实验报告。

实验内容

设计的数据库系统可从以下题目中选择,但不限定于以下题目,可自由选择。

需提供系统简要的需求分析,给出大体的功能介绍;完成数据库的概念结构设计,建议用PowerDesigner画出系统的逻辑结构图或物理结构图(也可以使用其他工具);任选自己熟悉的数据库管理系统和编程语言完成系统主要功能模块的开发。

系统题目参考:

1、学生成绩管理系统

2、网上书城系统

3、进销存系统

4、酒店客房管理系统

5、图书管理系统

选题【学生成绩管理系统】

【运行环境】windows10-VS2019-C#-windows窗体(.NET Framework 4.7.2)

【数据库】Oracle-SQL Developer(高版本JDK)

一、系统功能概述

【学生】

查询学生信息、查询个人信息、查询课程信息。

【教师】

查询教师信息、查询个人信息、学生成绩评比。

【管理员】

更新:更新学生信息、更新教师信息、更新课程信息。

添加/删除:添加学生、删除学生、添加教师、删除教师、添加课程、删除课程。

统计:统计学生信息、统计教师信息、统计课程信息、统计学生成绩信息。

二、逻辑图及部分说明

E-R图

(图是软件工程实验的建议大家自己更改一下,不要照搬)

注:在course处增加cpno(先修课程),图中未增加,自行添加

模块功能图

3.表内容:(红字为主码)

studentsno,ssex,sage,sname,pwd;

coursecno,cname,ccredit,cpno,tno;

scsno,cno,grade,tno;

teachertno,tname,tposition,tsalary,pwd;

SQL语句

/*级联删除*/

drop table teacher cascade constraints;

drop table student cascade constraints;

drop table course cascade constraints;

drop table sc cascade constraints;

/*删除同名表*/

DECLARE

tmp INTEGER DEFAULT 0;

BEGIN

SELECT

COUNT(*)

INTO tmp

FROM

user_tables

WHERE

table_name = 'SC';

IF ( tmp > 0 ) THEN

EXECUTE IMMEDIATE 'drop table SC';

END IF;

SELECT

COUNT(*)

INTO tmp

FROM

user_tables

WHERE

table_name = 'STUDENT';

IF ( tmp > 0 ) THEN

EXECUTE IMMEDIATE 'drop table STUDENT';

END IF;

SELECT

COUNT(*)

INTO tmp

FROM

user_tables

WHERE

table_name = 'COURSE';

IF ( tmp > 0 ) THEN

EXECUTE IMMEDIATE 'drop table COURSE';

END IF;

SELECT

COUNT(*)

INTO tmp

FROM

user_tables

WHERE

table_name = 'TEACHER';

IF ( tmp > 0 ) THEN

EXECUTE IMMEDIATE 'drop table TEACHER';

END IF;

END;

【建表】

/*学生信息*/

create table student

(

sno varchar2(10) primary key,

sname varchar2(20) not null unique,

ssex char(3) check(ssex in('男','女')),

sage smallint not null,

pwd varchar(20) not null

);

/*教师信息*/

create table teacher

(

tno varchar(7) primary key,

tname varchar(20) not null unique,

tposition varchar(20) not null,

tsalary smallint not null,

pwd varchar(20) not null

);

/*课程信息*/

create table course

(

cno varchar(4) primary key,

cpno varchar(10),

cname varchar(40) not null unique,

ccredit smallint not null,

tno varchar(7) not null,

foreign key (tno) references teacher(tno)

);

/*成绩信息*/

create table sc

(

sno varchar(10) not null,

cno varchar(4) not null,

grade smallint not null,

tno varchar(7) not null,

primary key(sno,cno),

foreign key (sno) references student(sno),

foreign key (cno) references course(cno),

foreign key (tno) references teacher(tno)

);

【建立视图】

/*创建视图*/

create view courseinfo as select course.cno 课程编号,course.cname 课程名称,teacher.tname 任课老师,

course.ccredit 课程学分,countnum 选修人数,avg_grade 平均分,max_grade 最高分,min_grade 最低分

from teacher,course left outer join

(select cname, count(*) countnum,avg(grade) avg_grade,max(grade) max_grade,min(grade) min_grade

from sc,course where course.cno=sc.cno group by cname)a1 on (course.cname=a1.cname)

where teacher.tno=course.tno;

create view studentinfo

as select student.sno 学号,student.sname 姓名,

(select sum(grade) from sc where sno=student.sno) 总分 ,

(select sum(ccredit) from course where cno in (select cno from sc where sno=student.sno)) 总学分

from student;

create view teacherinfo1 as select tposition 职位,count(tno) 在任人数,avg(tsalary) 平均工资 from teacher group by tposition;

create view teacherinfo2 as select tno 教师工号,tname 教师名称,

(select count(student.sno)

from student,sc,course where student.sno=sc.sno

and sc.cno=course.cno and course.tno=teacher.tno) 授课学生总人数 from teacher;

【插入数据】

/*学生数据*/

insert into student(sname,ssex,sno, sage, pwd) values('李勇','男','1906300161',20,'123456');

insert into student(sname,ssex,sno, sage, pwd) values('刘晨','女','1906300162',19,'123456');

insert into student(sname,ssex,sno, sage, pwd) values('王敏','女','1906300163',18,'123456');

insert into student(sname,ssex,sno, sage, pwd) values('张立','男','1906300164',19,'123456');

insert into student(sname,ssex,sno, sage, pwd) values('卢俊旭','男','1906300165',19,'123456');

/*教师数据*/

insert into teacher(tno,tname, tposition, tsalary, pwd) values('t001','张三','教授',20000,'123456');

insert into teacher(tno,tname, tposition, tsalary, pwd) values('t002','李四','副教授',15000,'123456');

insert into teacher(tno,tname, tposition, tsalary, pwd) values('t003','王五','教授',35000,'123456');

insert into teacher(tno,tname, tposition, tsalary, pwd) values('t004','王八蛋','副教授',38000,'123456');

insert into teacher(tno,tname, tposition, tsalary, pwd) values('t005','大铁棒','副教授',42000,'123456');

insert into teacher(tno,tname, tposition, tsalary, pwd) values('t006','小铁棒','教授',60000,'123456');

/*课程数据*/

insert into course(cno,cname,ccredit,tno,cpno) values('6','数据结构',2,'t001','2');

insert into course(cno,cname,ccredit,tno,cpno) values('2','高等数学',4,'t002',null);

insert into course(cno,cname,ccredit,tno,cpno) values('7','汇编语言',4,'t001',null);

insert into course(cno,cname,ccredit,tno,cpno) values('5','软件工程',2,'t003','7');

insert into course(cno,cname,ccredit,tno,cpno) values('1','java',3,'t004','5');

insert into course(cno,cname,ccredit,tno,cpno) values('3','数据库',3,'t005','1');

insert into course(cno,cname,ccredit,tno,cpno) values('4','操作系统',3,'t006','1');

/*SC数据*/

insert into sc values('1906300161','6',20,'t001');

insert into sc values('1906300162','2',40,'t002');

insert into sc values('1906300163','5',60,'t003');

insert into sc values('1906300164','1',80,'t004');

insert into sc values('1906300165','3',90,'t005');

数据尽量自己更改,用自己的学号或者学号基础上改几个数字。

C#窗体具体下载和使用

【下载】

如果没有该选项,则在VS installer中勾选如下:

右边的默认就行,不需要勾选太多。

【安装重要数据库连接扩展】

如果【引用】得到扩展中有Oracle.ManagedDataAccess或者其他类似此类的扩展可忽略如下步骤:

最后记得在【引用】的【添加引用】下【扩展】界面勾选上。

【数据库的连接语句】

在App.config中添加如下:

    <connectionStrings><add name ="strCon" connectionString="data source=127.0.0.1:1521/orcl;user id =system;password=Ljx"/></connectionStrings>

【说明】data source的那几个数字是端口号,‘/’后边是SID,user id是用户名(不是连接名),password是对应密码。

建立连接时,添加:

 OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);

【添加窗体和类的方式】

右键项目,点击添加

代码及截图

【登录界面】

FrmLogin.cs

using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DbApp
{public partial class FrmLogin : Form{public FrmLogin(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){string sql=""; OracleParameter[] para;if (radioButton2.Checked==true)//学生登录{sql = "select * from student where sno=:sno and pwd=:pwd";para = new OracleParameter[]{new OracleParameter(":sno",OracleDbType.Varchar2,10),new OracleParameter(":pwd",OracleDbType.Char,20)};para[0].Value = tbId.Text;para[1].Value = tbPwd.Text;}else                            //教师登录{sql = "select * from teacher where tno=:tno and pwd=:pwd";para = new OracleParameter[]{new OracleParameter(":tno",OracleDbType.Char,7),new OracleParameter(":pwd",OracleDbType.Char,20)};para[0].Value = tbId.Text;para[1].Value = tbPwd.Text;}OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();//打开链接OracleCommand cmd = new OracleCommand(sql, con);cmd.Parameters.AddRange(para);OracleDataReader odr = cmd.ExecuteReader();if (odr.Read()) //HasRows{MessageBox.Show("登录成功");this.DialogResult = DialogResult.OK;this.Close();}elseMessageBox.Show("学号/工号或密码错误");}catch (Exception ex){MessageBox.Show(ex.Message);}finally{con.Close();}}}
}

【主界面】

MainForm.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DbApp
{public partial class MainForm : Form{public MainForm(){InitializeComponent();}private void 查询学生ToolStripMenuItem_Click(object sender, EventArgs e){FrmStuQuery frm = new FrmStuQuery();frm.MdiParent = this;frm.Show();}private void 添加学生ToolStripMenuItem_Click(object sender, EventArgs e){//打开添加学生窗体FrmStuInsert frm = new FrmStuInsert();frm.MdiParent = this;frm.Show();}private void 查询课程ToolStripMenuItem_Click(object sender, EventArgs e){FrmCourseQuery frm = new FrmCourseQuery();frm.MdiParent = this;frm.Show();}private void 添加课程ToolStripMenuItem_Click(object sender, EventArgs e){FrmCourseInsert frm = new FrmCourseInsert();frm.MdiParent = this;frm.Show();}private void 统计学生ToolStripMenuItem_Click(object sender, EventArgs e){FrmStatistics frm = new FrmStatistics();frm.MdiParent = this;frm.Show();}private void MainForm_Load(object sender, EventArgs e){FrmLogin frm = new FrmLogin();if (frm.ShowDialog(this) == DialogResult.OK){ //登录成功}else{//登录失败Application.Exit();}}private void 查询成绩ToolStripMenuItem_Click(object sender, EventArgs e){FrmSCQuery frm = new FrmSCQuery();frm.MdiParent = this;frm.Show();}private void 添加成绩ToolStripMenuItem_Click(object sender, EventArgs e){FrmSCInsert frm = new FrmSCInsert();frm.MdiParent = this;frm.Show();}}
}

【学生信息板块】

【学生查询】

FrmStuQuery.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Oracle.ManagedDataAccess.Client;
using System.Configuration;namespace DbApp
{public partial class FrmStuQuery : Form{public FrmStuQuery(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){string sql = string.Format("select sno,sname,sage,ssex,Pwd from student where sname like '{0}%'",this.textBox1.Text);OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();//打开链接OracleCommand cmd = new OracleCommand(sql,con);OracleDataReader odr = cmd.ExecuteReader();if (odr.HasRows){BindingSource bs = new BindingSource();bs.DataSource = odr;this.dataGridView1.DataSource = bs;}elsethis.dataGridView1.DataSource = null;}catch(Exception ex){MessageBox.Show(ex.Message);}finally{con.Close();}}private void label1_Click(object sender, EventArgs e){}private void textBox1_TextChanged(object sender, EventArgs e){}private void button2_Click(object sender, EventArgs e){if(this.dataGridView1.SelectedRows.Count==0){MessageBox.Show("请选中后再删除");return;}if (MessageBox.Show("是否删除该数据", "confirm message", MessageBoxButtons.OKCancel) == DialogResult.Cancel) return;DataGridViewRow row = this.dataGridView1.SelectedRows[0];string sql = string.Format("delete from student where sno='{0}'", row.Cells[0].Value.ToString());OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();//打开链接OracleCommand cmd = new OracleCommand(sql, con);if(cmd.ExecuteNonQuery()==1){MessageBox.Show("删除成功");this.dataGridView1.Rows.Remove(row);}else{MessageBox.Show("没有找到学生");}}catch (Exception ex){MessageBox.Show(ex.Message);}finally{con.Close();}}private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e){if (this.dataGridView1.SelectedRows.Count == 0) return;DataGridViewRow row = this.dataGridView1.SelectedRows[0];FrmStuUpdate frm = new FrmStuUpdate();frm.tbSno.Text = row.Cells[0].Value.ToString();frm.tbSname.Text = row.Cells[1].Value.ToString();frm.tbSage.Text = row.Cells[2].Value.ToString();frm.tbSsex.Text = row.Cells[3].Value.ToString();frm.tbPwd.Text = row.Cells[4].Value.ToString();frm.ShowDialog(this);}private void FrmStuQuery_Load(object sender, EventArgs e){}}
}

【添加学生】

FrmStuInsert.cs

using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DbApp
{public partial class FrmStuInsert : Form{public FrmStuInsert(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){string sql = string.Format("insert into student(sno,sname,sage,ssex,Pwd)values('{0}','{1}',{2},'{3}','{4}')",tbSno.Text,tbSname.Text,tbSage.Text,tbSsex.Text,tbPwd.Text);OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();//打开链接OracleCommand cmd = new OracleCommand(sql, con);if (cmd.ExecuteNonQuery() == 1){MessageBox.Show("添加成功");}else{MessageBox.Show("已经存在学生");}}catch (Exception ex){MessageBox.Show(ex.Message);}finally{con.Close();}}}
}

【修改学生】

FrmStuUpdate.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Configuration;
using Oracle.ManagedDataAccess.Client;
namespace DbApp
{public partial class FrmStuUpdate : Form{public FrmStuUpdate(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){string sql = string.Format("update student set sname='{0}',sage={1},ssex='{2}',Pwd='{3}'where sno='{4}'",this.tbSname.Text, this.tbSage.Text, this.tbSsex.Text, this.tbPwd.Text, this.tbSno.Text);OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();//打开链接OracleCommand cmd = new OracleCommand(sql, con);if (cmd.ExecuteNonQuery() == 1){MessageBox.Show("更新成功");}else{MessageBox.Show("没有找到学生");}}catch (Exception ex){MessageBox.Show(ex.Message);}finally{con.Close();}}}
}

【课程信息板块】

建立课程信息类Course

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using Oracle.ManagedDataAccess.Client;
using System.Windows.Forms;namespace DbApp
{public class Course{public string Cno { get; set; }public string Cname { get; set; }public int Ccredit { get; set; }public string Tno { get; set; }public string Cpno { get; set; }public static List<Course>SelectCourse(String cname){List<Course> list = new List<Course>();string sql="select cno,cname,cpno,ccredit,tno from course where cname like:cname";OracleParameter[] para = new OracleParameter[] { new OracleParameter(":cname",OracleDbType.Varchar2,40)};para[0].Value = cname + "%";//创建连接,打开连接,创建命令对象,执行命令,关闭连接OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();OracleCommand cmd = new OracleCommand(sql,con);cmd.Parameters.AddRange(para);OracleDataReader odr = cmd.ExecuteReader();while (odr.Read()){Course c = new Course();c.Cno = odr.GetString(0);//c.Cno = odr["cno"].ToString();c.Cname = odr.GetString(1);if (odr.IsDBNull(2)) c.Cpno = null;else c.Cpno = odr.GetString(2);c.Ccredit = odr.GetInt16(3);c.Tno = odr.GetString(4);list.Add(c);}}catch(Exception ex){MessageBox.Show(ex.Message);}finally { con.Close(); }return list;}public static int DeleteCourse(string cno){int result = 0;string sql = "delete from course where cno=:cno";OracleParameter[] para = new OracleParameter[] { new OracleParameter(":cno", OracleDbType.Char, 4) };para[0].Value = cno;OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();OracleCommand cmd = new OracleCommand(sql, con);cmd.Parameters.AddRange(para);result = cmd.ExecuteNonQuery();}catch (Exception ex){MessageBox.Show(ex.Message);}finally { con.Close(); }return result;}public static int InsertCourse(Course c){int result = 0;string sql = "insert into course(cno,cname,cpno,ccredit,tno) values(:cno,:cname,:cpno,:ccredit,:tno)";OracleParameter[] para = new OracleParameter[] { new OracleParameter(":cno",OracleDbType.Char,4),new OracleParameter(":cname",OracleDbType.Char,40),new OracleParameter(":cpno",OracleDbType.Char,10),new OracleParameter(":ccredit",OracleDbType.Int16),new OracleParameter(":tno",OracleDbType.Char,7)};para[0].Value = c.Cno;para[1].Value = c.Cname;para[2].Value = c.Cpno;para[3].Value = c.Ccredit;para[4].Value = c.Tno;OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();OracleCommand cmd = new OracleCommand(sql, con);cmd.Parameters.AddRange(para);result = cmd.ExecuteNonQuery();}catch (Exception ex){MessageBox.Show(ex.Message);}finally { con.Close(); }return result;}public static int UpdateCourse(Course c){int result = 0;string sql = "update course set cname=:cname,cpno=:cpno,ccredit=:ccredit,tno=:tno where cno=:cno";OracleParameter[] para = new OracleParameter[]{new OracleParameter(":cname",OracleDbType.Char,40),new OracleParameter(":cpno",OracleDbType.Char,10),new OracleParameter(":ccredit",OracleDbType.Int16),new OracleParameter(":tno",OracleDbType.Char,7),new OracleParameter(":cno",OracleDbType.Char,4)};para[0].Value = c.Cname;para[1].Value = c.Cpno;para[2].Value = c.Ccredit;para[3].Value = c.Tno;para[4].Value = c.Cno;OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();OracleCommand cmd = new OracleCommand(sql, con);cmd.Parameters.AddRange(para);result = cmd.ExecuteNonQuery();}catch (Exception ex){MessageBox.Show(ex.Message);}finally { con.Close(); }return result;}}
}

建立教师信息类Teacher

using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DbApp
{class Teacher{public string Tno { get; set; }public string Tname { get; set; }public string Tposition { get; set; }public string Tsalary { get; set; }public string Pwd { get; set; }public static List<Teacher>SelectTeacher(string tname){List<Teacher> list = new List<Teacher>();string sql = "select tno,tname,tposition,tsalarty,pwd from teacher where tname like :tname";OracleParameter[] para = new OracleParameter[]{new OracleParameter(":tname",OracleDbType.Varchar2,7)};para[0].Value = tname + "%";OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();OracleCommand cmd = new OracleCommand(sql, con);cmd.Parameters.AddRange(para);OracleDataReader odr = cmd.ExecuteReader();while (odr.Read()){Teacher t = new Teacher();t.Tno = odr.GetString(0);t.Tname = odr.GetString(1);t.Tposition = odr.GetString(2);t.Pwd = odr.GetString(2);list.Add(t);}}catch (Exception ex){MessageBox.Show(ex.Message);}finally { con.Close(); }return list;}}
}

建立成绩信息类SC

using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DbApp
{class SC{public string Sno { get; set; }public string Cno { get; set; }public int Grade { get; set; }public string Tno { get; set; }public static List<SC> SelectSC(String sno){List<SC> list = new List<SC>();string sql = "select sno,cno,grade,tno from sc where sno like :sno";OracleParameter[] para = new OracleParameter[]{ new OracleParameter(":sno",OracleDbType.Varchar2,10)};para[0].Value = sno + "%";//创建连接,打开连接,创建命令对象,执行命令,关闭连接OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();OracleCommand cmd = new OracleCommand(sql, con);cmd.Parameters.AddRange(para);OracleDataReader odr = cmd.ExecuteReader();while (odr.Read()){SC sc = new SC();sc.Sno = odr.GetString(0);sc.Cno = odr.GetString(1);sc.Grade = odr.GetInt16(2);sc.Tno = odr.GetString(3);list.Add(sc);}}catch (Exception ex){MessageBox.Show(ex.Message);}finally { con.Close(); }return list;}public static int DeleteSC(string sno){int result = 0;string sql = "delete from sc where sno=:sno";OracleParameter[] para = new OracleParameter[] { new OracleParameter(":sno", OracleDbType.Varchar2, 10) };para[0].Value = sno;OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();OracleCommand cmd = new OracleCommand(sql, con);cmd.Parameters.AddRange(para);result = cmd.ExecuteNonQuery();}catch (Exception ex){MessageBox.Show(ex.Message);}finally { con.Close(); }return result;}public static int UpdateSC(SC sc){int result = 0;string sql = "update sc set sno=:sno,cno=:cno,grade=:grade,tno=:tno where sno=:sno";OracleParameter[] para = new OracleParameter[]{ new OracleParameter(":sno",OracleDbType.Char,10),new OracleParameter(":cno",OracleDbType.Char,4),new OracleParameter(":grade",OracleDbType.Int16),new OracleParameter(":tno",OracleDbType.Char,7)};para[0].Value = sc.Sno;para[1].Value = sc.Cno;para[2].Value = sc.Grade;para[3].Value = sc.Tno;OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();OracleCommand cmd = new OracleCommand(sql, con);cmd.Parameters.AddRange(para);result = cmd.ExecuteNonQuery();}catch (Exception ex){MessageBox.Show(ex.Message);}finally { con.Close(); }return result;}public static int InsertSC(SC sc){int result = 0;string sql = "insert into sc(sno,cno,grade,tno) values(:sno,:cno,:grade,:tno)";OracleParameter[] para = new OracleParameter[]{ new OracleParameter(":sno",OracleDbType.Char,10),new OracleParameter(":cno",OracleDbType.Char,4),new OracleParameter(":grade",OracleDbType.Int16),new OracleParameter(":tno",OracleDbType.Char,7)};para[0].Value = sc.Sno;para[1].Value = sc.Cno;para[2].Value = sc.Grade;para[3].Value = sc.Tno;OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();OracleCommand cmd = new OracleCommand(sql, con);cmd.Parameters.AddRange(para);result = cmd.ExecuteNonQuery();}catch (Exception ex){MessageBox.Show(ex.Message);}finally { con.Close(); }return result;}}
}

【插入课程】

FrmCourseInsert.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DbApp
{public partial class FrmCourseInsert : Form{public FrmCourseInsert(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){Course c = new Course();c.Cno = tbCno.Text;c.Cname = tbCname.Text;c.Cpno = tbCpno.Text;c.Ccredit = Convert.ToInt16(tbCcredit.Text);c.Tno = tbTno.Text;if (Course.InsertCourse(c)==1)MessageBox.Show("插入成功");}}
}

【查询课程】

FrmCourseQuery.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DbApp
{public partial class FrmCourseQuery : Form{public FrmCourseQuery(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){this.dataGridView1.DataSource=Course.SelectCourse(this.textBox1.Text);}private void panel1_Paint(object sender, PaintEventArgs e){}private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e){}private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e){if (this.dataGridView1.Rows.Count == 0) return;if (e.RowIndex < 0) return;DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];if(e.ColumnIndex==5){//点击删除按钮string cno = row.Cells[0].Value.ToString();if (Course.DeleteCourse(cno) == 1){MessageBox.Show("删除成功");//this.dataGridView1.Rows.Remove(row);}else MessageBox.Show("找不到数据");}else if(e.ColumnIndex==6){//点击修改按钮Course c = (Course)row.DataBoundItem;FrmCourseUpdate frm = new FrmCourseUpdate();frm.tbCno.Text = c.Cno;frm.tbCname.Text = c.Cname;frm.tbCcredit.Text = c.Ccredit.ToString();frm.tbCpno.Text = c.Cpno;frm.tbTno.Text = c.Tno;frm.ShowDialog();}}}
}

【修改课程】

FrmCourseUpdate.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DbApp
{public partial class FrmCourseUpdate : Form{public FrmCourseUpdate(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){Course c = new Course();c.Cno = tbCno.Text;//保存不变c.Cname = tbCname.Text;c.Cpno = tbCpno.Text;c.Ccredit = Convert.ToInt16(tbCcredit.Text);c.Tno = tbTno.Text;if (Course.UpdateCourse(c) == 1)MessageBox.Show("更新成功");elseMessageBox.Show("可能没有找到记录");}}
}

【成绩信息板块】

【查询成绩】

FrmSCQuery.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DbApp
{public partial class FrmSCQuery : Form{public FrmSCQuery(){InitializeComponent();}private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e){if (this.dataGridView1.Rows.Count == 0) return;if (e.RowIndex < 0) return;DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];if (e.ColumnIndex == 4){//点击删除按钮string sno = row.Cells[0].Value.ToString();if (SC.DeleteSC(sno) == 1){MessageBox.Show("删除成功");//this.dataGridView1.Rows.Remove(row);}else MessageBox.Show("找不到数据");}else if (e.ColumnIndex == 5){//点击修改按钮SC sc = (SC)row.DataBoundItem;FrmSCUpdate frm = new FrmSCUpdate();frm.tbsno.Text = sc.Sno;frm.tbcno.Text = sc.Cno;frm.tbgrade.Text = sc.Grade.ToString();frm.tbtno.Text = sc.Tno;frm.ShowDialog();}}private void button1_Click(object sender, EventArgs e){this.dataGridView1.DataSource = SC.SelectSC(this.textBox1.Text);}}
}

【插入成绩】

FrmSCInsert.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DbApp
{public partial class FrmSCInsert : Form{public FrmSCInsert(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){SC sc = new SC();sc.Sno = tbsno.Text;sc.Cno = tbcno.Text;sc.Grade = Convert.ToInt16(tbgrade.Text);sc.Tno = tbtno.Text;if (SC.InsertSC(sc) == 1)MessageBox.Show("插入成功");}}
}

【修改成绩】

FrmSCUpdate.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DbApp
{public partial class FrmSCUpdate : Form{public FrmSCUpdate(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){SC sc = new SC();sc.Sno = tbsno.Text;//保持不变sc.Cno = tbcno.Text;//保持不变sc.Grade = Convert.ToInt16(tbgrade.Text);sc.Tno = tbtno.Text;if (SC.UpdateSC(sc) == 1)MessageBox.Show("更新成功");elseMessageBox.Show("可能没有找到记录");}}
}

【信息统计板块】

【信息统计】

FrmStatistics.cs

using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DbApp
{public partial class FrmStatistics : Form{public FrmStatistics(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){string sql = "select *from studentinfo";OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();//打开链接OracleCommand cmd = new OracleCommand(sql, con);OracleDataReader odr = cmd.ExecuteReader();if (odr.HasRows){BindingSource bs = new BindingSource();bs.DataSource = odr;this.dataGridView1.DataSource = bs;}elsethis.dataGridView1.DataSource = null;}catch (Exception ex){MessageBox.Show(ex.Message);}finally{con.Close();}}private void button2_Click(object sender, EventArgs e){string sql = "select *from courseinfo";OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();//打开链接OracleCommand cmd = new OracleCommand(sql, con);OracleDataReader odr = cmd.ExecuteReader();if (odr.HasRows){BindingSource bs = new BindingSource();bs.DataSource = odr;this.dataGridView1.DataSource = bs;}elsethis.dataGridView1.DataSource = null;}catch (Exception ex){MessageBox.Show(ex.Message);}finally{con.Close();}}private void button3_Click(object sender, EventArgs e){string sql = "select *from teacherinfo1 ";OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();//打开链接OracleCommand cmd = new OracleCommand(sql, con);OracleDataReader odr = cmd.ExecuteReader();if (odr.HasRows){BindingSource bs = new BindingSource();bs.DataSource = odr;this.dataGridView1.DataSource = bs;}elsethis.dataGridView1.DataSource = null;}catch (Exception ex){MessageBox.Show(ex.Message);}finally{con.Close();}}private void button4_Click(object sender, EventArgs e){string sql = "select *from teacherinfo2 ";OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["strCon"].ConnectionString);try{con.Open();//打开链接OracleCommand cmd = new OracleCommand(sql, con);OracleDataReader odr = cmd.ExecuteReader();if (odr.HasRows){BindingSource bs = new BindingSource();bs.DataSource = odr;this.dataGridView1.DataSource = bs;}elsethis.dataGridView1.DataSource = null;}catch (Exception ex){MessageBox.Show(ex.Message);}finally{con.Close();}}}
}

课程指导视频链接:

链接:https://pan.baidu.com/s/1qwRGTLPJ3vs0F5X7L81YMA
提取码:2021

这里提供一个我在学校写的实验代码源文件下载地址:(建议桃饱下载,随便搜一个CSDN下载,大概5毛左右)

https://download.csdn.net/download/My_B0Y/20255094

广州大学数据库实验三——数据库系统设计综合实验相关推荐

  1. 数据库实验三 数据库系统设计综合实验实验报告

    广州大学学生实验报告 开课学院及实验室:计算机科学与网络工程学院   2023年5月24日 学院 计算机学院 年级.专业.班级 计科213 姓名 edw-Snow 学号 321061000** 课程实 ...

  2. 07 数据库系统设计综合实验 实验报告

    07 数据库系统设计综合实验  实验报告                                                                               广 ...

  3. 数据库原理实验三 数据库综合设计实验 实验报告

    实验三 数据库系统设计综合实验 1.实验目的通过实验,使学生掌握数据库系统设计和开发的一般方法,能够设计并实现简单的数据库系统. 2.实验要求熟悉实验室实验环境,掌握实验预备知识,了解实验中故障排除的 ...

  4. matlab语音信号处理实验_现代通信综合实验系统平台

    现代通信综合实验系统平台 近30年来,随着我国电信行业的迅猛发展,该行业的发展水平已成为衡量一个国家实力的一大关键因子.行业的发展同时,为当代相关专业大学生创造了极大的就业市场,市场对通信类人才有着极 ...

  5. 基于python的文件加密传输系统 毕业论文_20183411 李丞灏 2020-2021 《python程序设计》 实验三 加密传输文件 实验报告...

    20183411 李丞灏 2020-2021 <python程序设计> 实验三 加密传输文件 实验报告 课程:<Python程序设计> 班级: 1834 姓名: 李丞灏 学号: ...

  6. 计算机网络实验三—— Cisco Packet Tracer 实验

    计算机网络实验三-- Cisco Packet Tracer 实验 CPT 软件使用简介 一.直接连接两台 PC 构建 LAN 二.用交换机构建 LAN 机器名 IP 子网掩码 ✎ 问题 ✎ 试一试 ...

  7. 实验三 ORI指令设计实验【计算机组成原理】

    实验三 ORI指令设计实验[计算机组成原理] 前言 推荐 实验三 ORI指令设计实验 一.实验目的 二.实验环境 三.实验原理 四.实验任务 五.实验思考 实验三 代码 define IF ID EX ...

  8. 计算机组成原理微控器功能,(计算机组成原理)实验三微控器实验.ppt

    文档介绍: 计算机组成原理课程设计 实验三.微控器实验 葛扩院廖萝丽斯节宽裔萌宛敢蜘祭癌颂导罪仍囚誓棋尹侈速爹详凑移悸董(计算机组成原理)实验三微控器实验(计算机组成原理)实验三微控器实验 实验三微控 ...

  9. bpsk传输系统实验matlab,实验三 BPSK 传输系统综合实验 2

    通信原理实验 实验三 BPSK 传输系统综合实验 一.实验原理 (一)BPSK调制 理论上二进制相移键控(BPSK)可以用幅度恒定,而其载波相位随着输入信号m(1.0码)而改变,通常这两个相位相差18 ...

  10. 实验题·华为eNSP综合实验操作

    华为综合实验 文章目录 华为综合实验 实验环境 需求描述 实验步骤 1.配置二层交换机SW1 2.配置二层交换机SW2 3.配置三层交换机SW3 4.配置二层交换机SW4 5.配置路由器R1 6.PC ...

最新文章

  1. linux7设置时间,CentOS 7 设置日期和时间
  2. Java黑皮书课后题第6章:**6.34(打印日历)编程练习题3.21使用Zeller一致性原理来计算某天是星期几,使用Zeller的算法简化程序清单6-12以获得每月开始的第一天是星期几
  3. 路由交换以及其他网络名词基本概念
  4. ConcurrentHashMap 源码
  5. 图片夹_电竞游戏鼠标好伴侣,鼠标线夹,让你桌面不凌乱
  6. word无法验证服务器,windows10系统下office2010无法验证的解决方法
  7. mysql datetime 对于hbm_mysql 字段datetime Hibernate
  8. Python入门--常用的内置模块
  9. Latex 图像总是出现在目标页的下一页置顶
  10. PHP 7.1 新特性一览
  11. java 用户行为记录_大型网站用户行为记录的一个实现
  12. PyTorch中文教程 | (4) 迁移学习教程
  13. 【零基础】入门51单片机图文教程(Proteus+Keil)
  14. REMUX,1080P,720P,408P,DVDrip、HDrip、BDrip、R5rip、PPVrip知识资料汇总
  15. idea 切换工作空间
  16. 华为云服务器搭建个人网站/博客
  17. php购物商城项目总结,php商城项目总结
  18. UHL IOL NVMe测试工具安装及使用的常见问题
  19. 绿地签约十家酒店项目,轻资产输出步伐再提档
  20. 页面渲染原理,从输入url到页面展示流程

热门文章

  1. Html5常见面试题总结
  2. 设计师:设计师知识储备(硬装、软装、榻榻米、马卡龙、地台、公共空间、玄关、闭水实验)之详细攻略
  3. python开发数据管理系统客户桌面_实践是最好的老师:给中级 Python 开发人员的 13 个项目构想...
  4. Mysql 查出某个字段不包含某个值
  5. ipad文件APP连接服务器,是时候认识一下 iPad 的文件管理了
  6. JSD-2204-反射-Day17
  7. Python爬虫:爬取网页图片
  8. 论文笔记—ITS+假名管理—ASPA: Advanced Strong Pseudonym based Authentication in Intelligent Transport System
  9. SPSS 顾客购买习惯调查问卷案例分析
  10. Thor UI - 轻量简洁的免费开源移动端 UI 组件库,支持原生小程序和 uni-app