Oracle数据库综合实验.doc
华北科技学院计算机系综合性实验实 验 报 告 课程名称 Oracle数据库 实验学期 2010 至 2011 学年 第 2 学期学生所在系部 基础部 年级 2008 专业班级 计算B082 学生姓名 范玉文 学号 2 任课教师 郭慧 实验成绩 计算机系制 Oracle数据库 课程综合性实验指导单适用专业:计算机相关专业一、 实验题目:Oracle数据库的管理和应用程序的开发二、 实验目的:掌握Oracle数据库的对象的创建和管理方法,巩固对Oracle数据库基本原理和基础理论的理解。掌握使用ODBC开发Oracle数据库应用程序的技术,巩固对Oracle数据库基本原理和基础理论的理解。三、 实验设备及环境:硬件:多媒体计算机软件:Windows 2003操作系统,Oracle 9i 数据库管理系统四、 实验内容及要求: 1. 设计教务管理系统数据库,要求:(1)建立不少于四个数据表,建立各表的主键和外键约束;(2)建立至少一个视图;(3)数据表和视图的名称和字段自行设定;(4)各数据表和视图存储的表空间为Student,方案为Student2. 开发应用程序(1)使用ODBC或其他方法连接数据库(2)通过应用程序向各数据表中插入若干条记录(3)通过应用程序对各表和视图进行记录的查询和修改五、 考核标准:综合实验说明书一般不少于1500字,说明书除了在封面中应有题目、班级、姓名、学号和实验日期外,其正文一般包括需求分析、概念设计、逻辑设计、测试、用户使用说明,参考文献等,综合实验课程成绩占10%。撰写人:杜杏菁 撰写时间: 2007.11.25 Oracle数据库课程综合性实验报告开课实验室: 基础实验室一 2011年5 月18日实验题目Oracle数据库的管理和应用程序的开发一、 实验目的掌握Oracle数据库的对象的创建和管理方法,巩固对Oracle数据库基本原理和基础理论的理解。掌握开发Oracle数据库应用程序的技术,巩固对Oracle数据库基本原理和基础理论的理解。二、 设备与环境硬件:多媒体计算机软件:Windows 2003操作系统,Oracle 9i 数据库管理系统,应用程序开发环境visual c+ 6.0 三、 实验内容1. 设计教务管理系统数据库(1)创建用户 CREATE USER "STUDENT" PROFILE "DEFAULT" IDENTIFIED BY "student" DEFAULT TABLESPACE "USERS" QUOTA UNLIMITED ON "SYSTEM" QUOTA UNLIMITED ON "TEMP" QUOTA UNLIMITED ON "USERS" QUOTA UNLIMITED ON "XDB" ACCOUNT UNLOCK; GRANT "CONNECT" TO "STUDENT" WITH ADMIN OPTION; GRANT "DBA" TO "STUDENT"(2)创建表空间 CREATE TABLESPACE "STUDENT" LOGGING DATAFILE 'C:ORACLEORADATADATABASESTUDENT.ora' SIZE 5M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO (3)创建学生表 CREATE TABLE "STUDENT"."STU" ("SID" VARCHAR2(10) NOT NULL, "SNAME" VARCHAR2(10) NOT NULL, "SSEX" VARCHAR2(10) NOT NULL, "SPSW" VARCHAR2(10) NOT NULL, CONSTRAINT "A1" PRIMARY KEY("SID"), CONSTRAINT "A2" CHECK(SSEX IN('男','女') TABLESPACE "STUDENT" STORAGE ( INITIAL 1M NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 11) 修改一下 ALTER TABLE "STUDENT"."STU" MODIFY("SNAME" NULL, "SSEX" NULL, "SPSW" NULL)(4)创建老师表 CREATE TABLE "STUDENT"."TEA" ("TID" VARCHAR2(10) NOT NULL, "TNAME" VARCHAR2(10) NOT NULL, "TSEX" VARCHAR2(4) NOT NULL, "TPSW" VARCHAR2(10) NOT NULL, CONSTRAINT "T1" PRIMARY KEY("TID"), CONSTRAINT "T2" CHECK(TSEX IN ('男','女') TABLESPACE "STUDENT" STORAGE ( INITIAL 1M NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 11) 修改一下 ALTER TABLE "STUDENT"."STU" MODIFY("SNAME" NULL, "SSEX" NULL, "SPSW" NULL)(5)创建课程表 CREATE TABLE "STUDENT"."COU" ("CID" VARCHAR2(10) NOT NULL, "CNAME" VARCHAR2(10) NOT NULL, "CGRADE" VARCHAR2(10) NOT NULL, CONSTRAINT "C1" PRIMARY KEY("CID") TABLESPACE "STUDENT" STORAGE ( INITIAL 1M NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 11) 修改一下 ALTER TABLE "STUDENT"."COU" MODIFY("CNAME" NULL, "CGRADE" NULL)(6)创建缺课表 CREATE TABLE STUDENT.ABS (ATID VARCHAR2(10) NOT NULL, ASID VARCHAR2(10) NOT NULL, ATIME VARCHAR2(10) NOT NULL, AKIND VARCHAR2(10) NOT NULL, ACID VARCHAR2(10) NOT NULL, CONSTRAINT "A11" PRIMARY KEY("ATID", "ASID", "ACID" ), CONSTRAINT "A22" CHECK(AKIND IN('旷课','迟到','早退','请假'), CONSTRAINT "A3" FOREIGN KEY(ATID) REFERENCES STUDENT.TEA(TID) ON DELETE CASCADE, CONSTRAINT "A4" FOREIGN KEY(ASID) REFERENCES STUDENT.STU(SID) ON DELETE CASCADE, CONSTRAINT "A5" FOREIGN KEY(ACID) REFERENCES STUDENT.COU(CID) ON DELETE CASCADE ) TABLESPACE STUDENT修改一下缺课表 ALTER TABLE "STUDENT"."ABS" MODIFY("ATIME" VARCHAR2(10) NULL)(7)迟到视图创建 CREATE VIEW "STUDENT"."LATE" AS SELECT * FROM ABS WHERE AKIND='迟到' WITH READ ONLY2 开发应用程序(1) 登录界面代码:void CFYWDlg:OnOK() UpdateData(TRUE);m_leixing="管理员"if(m_leixing="管理员"&&m_name="sa"&&m_psw="sa")CManagermain Man;Man.DoModal();elseMessageBox("用户名不存在,请重新输入!", "用户名错误", MB_ICONINFORMATION);m_name = ""m_psw = ""UpdateData(FALSE);/将空值赋给窗口中变量GetDlgItem(IDC_EDIT1)->SetFocus();return;CDialog:OnOK();(2) 管理界面 代码:a.其中添加功能 void CManagermain:OnButton1() UpdateData(true);if(m_tid!=""&&m_cid!=""&&m_sid!="")/连接数据库ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();/ 设置INSERT语句_bstr_t vSQL;vSQL = "INSERT INTO ABS (ATID,ASID,AKIND,ACID) VALUES('" + m_tid + "','" + m_sid + "','" + m_kind + "','" + m_cid+ "') "/执行INSERT语句m_AdoConn.ExecuteSQL(vSQL);/断开与数据库的连接m_AdoConn.ExitConnect();MessageBox("添加成功!");m_Adodc.Refresh();else MessageBox("主键不能为空");b.修改功能 void CManagermain:OnButton2() UpdateData(true);/连接数据库ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();/设置UPDATE语句_bstr_t vSQL;/MessageBox("as1");vSQL = "UPDATE ABS SET AKIND = '" + m_kind + "' WHERE ATID = '" + m_tid + "' AND ACID = '" + m_cid + "' AND ASID = '" + m_sid + "'" ;/执行UPDATE语句MessageBox("恭喜您修改成功!");m_AdoConn.ExecuteSQL(vSQL);/断开与数据库的连接m_Adodc.Refresh();m_AdoConn.ExitConnect();c.删除功能代码 void CManagermain:OnButton4() UpdateData(true);/ 连接数据库ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();/ 设置Delete语句_bstr_t vSQL;vSQL = "DELETE FROM ABS WHERE ATID = '" + m_tid + "' AND ACID = '" + m_cid + "' AND ASID = '" + m_sid + "'" ;/ 执行SQL语句m_AdoConn.ExecuteSQL(vSQL);m_Adodc.Refresh();/ 断开与数据库的连接m_AdoConn.ExitConnect();d.其中查询、高级添加、高级删除的窗口转换代码void CManagermain:OnButton3() CChaxun cha;cha.DoModal();void CManagermain:OnButton6() Csenadd sen;sen.DoModal();void CManagermain:OnButton7() Cdel de;de.DoModal();(3)查询窗口代码其中按学生、课程、老师和种类查询的代码如下void CChaxun:OnButton1() UpdateData(true);CString cSource = "SELECT * FROM ABS WHERE ASID = '" + m_a + "'" ;/刷新ADO Data控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();void CChaxun:OnButton2() UpdateData(true);CString cSource = "SELECT * FROM ABS WHERE ATID = '" + m_a + "'" ;/刷新ADO Data控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();void CChaxun:OnButton5() UpdateData(true);CString cSource = "SELECT * FROM ABS WHERE ACID = '" + m_a + "'" ;/刷新ADO Data控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();void CChaxun:OnButton3() UpdateData(true);CString cSource = "SELECT * FROM ABS WHERE AKIND = '" + m_a + "'" ;/刷新ADO Data控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();(4)高级添加窗口其中加学生,加老师,加课程的代码如下void CChaxun:OnButton1() UpdateData(true);CString cSource = "SELECT * FROM ABS WHERE ASID = '" + m_a + "'" ;/刷新ADO Data控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();void CChaxun:OnButton2() UpdateData(true);CString cSource = "SELECT * FROM ABS WHERE ATID = '" + m_a + "'" ;/刷新ADO Data控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();void CChaxun:OnButton5() UpdateData(true);CString cSource = "SELECT * FROM ABS WHERE ACID = '" + m_a + "'" ;/刷新ADO Data控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();void CChaxun:OnButton3() UpdateData(true);CString cSource = "SELECT * FROM ABS WHERE AKIND = '" + m_a + "'" ;/刷新ADO Data控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();(5)删除窗口其中删除学生,老师,课程的代码如下void Cdel:OnButton1() UpdateData(true);/ 连接数据库ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();/ 设置Delete语句_bstr_t vSQL;vSQL = "DELETE FROM STU WHERE SID = '" + m_del + "'" ;/ 执行SQL语句m_AdoConn.ExecuteSQL(vSQL);/m_Adodc.Refresh();/ 断开与数据库的连接m_AdoConn.ExitConnect();MessageBox("恭喜您删除成功!");void Cdel:OnButton2() UpdateData(true);/ 连接数据库ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();/ 设置Delete语句_bstr_t vSQL;vSQL = "DELETE FROM TEA WHERE TID = '" + m_del + "'" ;/ 执行SQL语句m_AdoConn.ExecuteSQL(vSQL);/m_Adodc.Refresh();/ 断开与数据库的连接m_AdoConn.ExitConnect();MessageBox("恭喜您删除成功!");void Cdel:OnButton3() UpdateData(true);/ 连接数据库ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();/ 设置Delete语句_bstr_t vSQL;vSQL = "DELETE FROM COU WHERE CID = '" + m_del + "'" ;/ 执行SQL语句m_AdoConn.ExecuteSQL(vSQL);/m_Adodc.Refresh();/ 断开与数据库的连接m_AdoConn.ExitConnect();MessageBox("恭喜您删除成功!");四、 实验结果及分析 登录名和登录密码都是“sa”成功后进入主界面,可以添加考勤记录,要求学生号,老师号,课程号分别在学生,老师,课程表中存在,要求缺课类型为“请假,迟到,早退,旷课”中的一种。添加成功后会弹出成功提示窗口如下:可以根据需要删除记录,可以根据需要修改记录,修改成功会弹出如下提示窗口:可以查询任意存在的记录,并即时显示在窗口中。可以点击“高级添加”,“高级删除”弹出添加或删除学生,老师,课程窗口以实现对学生,老师,课程表的修改。教 师 评 价评定项目ABCD评定项目ABCD算法正确界面美观,布局合理程序结构合理操作熟练语法、语义正确解析完整实验结果正确文字流畅报告规范题解正确其他:评价教师签名:年 月 日