数据库课程设计.doc
《数据库课程设计.doc》由会员分享,可在线阅读,更多相关《数据库课程设计.doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 1 页 共 18 页数据库课程设计数据库课程设计 数据库课程设计是在学生系统学习了数据库原理课程以及数据库设计与应用课程之后, 按照关系型数据库的基本原理,综合运用所学的知识,以小组为单位,设计开发一个小型 的数据库管理系统。通过对一个实际问题的分析、设计与实现,将原理与应用相结合,学 会如何把书本上学到的知识用于解决实际问题;另一方面,能深入理解和灵活掌握教学内 容。 一.设计题目:C/S 模式下的学籍管理系统开发“学生信息管理”模块 二.课程设计环境:基于 Windows 操作系统环境的 C/S 模式的 Delphi7 开发工具, MS SQL Server2000 数据库, 截图软件
2、,ODBC 数据源管理器。 注意:注意:Delphi7 和和 MS SQL Server2000 数据库采用数据库采用 ODBC 建立连接建立连接三.需求分析1. 问题的提出:为了高效率的完成学生信息的管理,决定开发学生信息管理 系统。2.需完成的功能:对学生基本信息的录入,删除,修改等操作。 四. 设计内容 1.主窗体设计和窗体初始化以及数据库连接。 2.主要的数据表 学生信息牵涉到 3 个表,分别是 student, studclass, department。 3.主要功能模块1)实现修改学生信息功能。 2)删除学生资料。3)关闭学生管理窗体。 五建表和数据表(包括 student, s
3、tudclass, department 三个表的内容)创建新数据源到 MS SQL Server2000 数据库中,命名数据源(stu) ,指定数据库服务 器;指定连接数据库服务器的验证方式,更改默认数据库为 student;指定要访问的数据库; 完成数据源的创建后还要测试所创建的数据源;完成以上设计前的准备工作,然后在创建 的数据库中建表 student, studclass, department,建表如下(表的具体内容根据数据库导 入可以得到): 院系院系设设置置create table 院系设置( 院系号 char(6) primary key, 院系名 char(10) not n
4、ull, 负责人 char(10), 联系电话 char(15),) 班班级级管理管理create table 班级管理( 班级编号 char(6) primary key, 班级名称 char(30) not null, 所属院系 char(40), 入学日期 datetime not null,第 2 页 共 18 页班主任 char(10), 联系电话 char(15),) 学生管理学生管理 create table 学生管理( 学号 char(10) primary key, 姓名 char(20) not null, 性别 char(4) not null, 出生日期 datetim
5、e not null, 籍贯 char(30), 所属班级 char(15), constraint sex check(性别 in(男,女),) DepatmentColumn Name Date Type Width空值情况DIDChar 6主关键字Dname Char 10不为空DheadChar 10可为空DtelephoneChar15可为空StudclassColumn Name Date Type Width空值情况SCIDChar6主关键字SCnameChar30不为空SCdepartChar 40可为空BegindateChar 10不为空MasterChar 10可为空SC
6、telephoneChar 15可为空StudentColumn Name Date Type Width 空值情况SIDChar 10主关键字SnameChar 20不为空CnameChar15可为空BirthNumber20不为空NativeChar30可为空SexChar 4不为空六程序代码以及相关描述1)“学生信息管理”模块第一部分是院系设置和本窗口的“退出”键,该部分包括了院系 号,系名,负责人,联系电话等几小部分。具有删除,修改的功能,例如对院系以 及所管班级编号,名称的修改和删除,并且说明了在哪些情况下不能执行这两个功 能。要求对信息录入完全,已存在的信息将不再承认,需确认后重新
7、输入。第 3 页 共 18 页在 Delphi 软件中的运行代码如下:(程序包括窗体的设计和其中内容的填写) unit department; interface usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, DBCtrls, DB, DBTables, Grids, DBGrids, Buttons,ExtCtrls, Mask; typeTfrmdepartment = class(TForm)Label1: TLabel;Label2: TL
8、abel;Label3: TLabel;Label4: TLabel;dbedepartmentID: TDBEdit;dbedepartmentName: TDBEdit;dbehead: TDBEdit;dbetelephone: TDBEdit;GroupBox1: TGroupBox;dbndepartment: TDBNavigator;btnquit: TBitBtn;dbgdepartment: TDBGrid;tbldepartment: TTable;tblvalid: TTable;dsdepartment: TDataSource;dbmDesc: TDBMemo;pro
9、cedure btnquitClick(Sender: TObject);procedure dbndepartmentClick(Sender: TObject; Button: TNavigateBtn);procedure tbldepartmentAfterScroll(DataSet: TDataSet);procedure FormShow(Sender: TObject);procedure FormClose(Sender: TObject; var Action: TCloseAction);procedure tbldepartmentBeforePost(DataSet:
10、 TDataSet);procedure tbldepartmentBeforeDelete(DataSet: TDataSet);private第 4 页 共 18 页procedure ToggleMode;function Hasclass(var str:string):boolean; Private declarations public Public declarations end; varfrmdepartment: Tfrmdepartment; implementation $R *.dfm procedure Tfrmdepartment.btnquitClick(Se
11、nder: TObject); begin close; end; procedure Tfrmdepartment.ToggleMode; var strmsg:string;procedure enableinput(enabled:boolean);begindbgdepartment.Enabled:=not enabled;dbedepartmentID.Enabled:=enabled;dbedepartmentname.Enabled:=enabled;dbehead.Enabled:=enabled;dbetelephone.Enabled:=enabled;dbmDesc.E
12、nabled:=enabled;end;begincase tbldepartment.State ofdsinsert,dsedit:beginenableinput(true);dbndepartment.VisibleButtons:=nbpost,nbcancel;dbedepartmentId.SetFocus;end;elseenableinput(false);dbndepartment.VisibleButtons:=nbfirst,nbprior,nbnext,nblast,nbinsert,nbdelete,nbedit,nbpost,nbcancel,nbrefresh;
13、end;if (tbldepartment.State=dsedit) and hasclass(strmsg) thenbeginshowmessage(strmsg);dbedepartmentId.Enabled:=false;end;end;第 5 页 共 18 页function Tfrmdepartment.Hasclass(var str :string):boolean;beginresult:=false;tblvalid.Active:=false;tblvalid.TableName:=class;tblvalid.Filter:=departID=+tbldepartm
14、entdepartID+;tblvalid.Filtered:=true;tblvalid.Active:=true;if not tblvalid.Eof thenbeginstr:=format(不能修改院系“%S“的编号下面的班级:#13,tbldepartmentdepartname) ;repeatstr:=str+format(%10S-%s#13,tblvalidclassID,tblvalidclassname);tblvalid.Next;until tblvalid.Eof;str:=str+隶属于该院系;result:=true;end;tblvalid.Active:=
15、false;end; procedure Tfrmdepartment.dbndepartmentClick(Sender: TObject;Button: TNavigateBtn); beginToggleMode; end; procedure Tfrmdepartment.tbldepartmentAfterScroll(DataSet: TDataSet); beginToggleMode; end; procedure Tfrmdepartment.FormShow(Sender: TObject); begin tbldepartment.Active:=true; end; p
16、rocedure Tfrmdepartment.FormClose(Sender: TObject;var Action: TCloseAction); begin tbldepartment.Active:=false; action:=cafree; end; procedure Tfrmdepartment.tbldepartmentBeforePost(DataSet: TDataSet);procedure checkfield(fieldname,fieldDesc:string ;dbtext:tcustomedit;notempty:boolean);begindbtext.T
17、ext:=trim(dbtext.Text); /除去指定字符串中不可见的字符dbtext.Text:=stringreplace(dbtext.Text,rfreplaceall); /返回替换后的字符串第 6 页 共 18 页dbtext.Text:=stringreplace(dbtext.Text,rfreplaceall);if notempty and (dbtext.Text=) thenbeginshowmessagefmt(“%S“不能为空,请从新输入足够的信息,fieldDesc);dbtext.SetFocus ;abort;endelsetbldepartment.Fi
18、eldByName(fieldname).AsString:=dbtext.Text;end;function validID :boolean;var strmsg1 :string;beginresult:=true;tblvalid.Active:=false;tblvalid.TableName:=department;tblvalid.Filter:=departID=+tbldepartmentdepartID+;tblvalid.Filtered:=true;tblvalid.Active:=true;if not tblvalid.Eof thenbeginstrmsg1:=f
19、ormat(院系编号“%S“已经存在,请从新输入!#13,tbldepartmentdepartID);strmsg1:=strmsg1+format(院系编号:%S#13,tbldepartmentdepartId);strmsg1:=strmsg1+format(院系名称:%S#13,tbldepartmentdepartname);strmsg1:=strmsg1+format(院系领导:%S#13,tbldepartmentdeparthead);showmessage(strmsg1);dbedepartmentID.SetFocus;result:=false;end;tblval
20、id.Active:=false;end; begincheckfield(departID,院系编号,dbedepartmentID,true);checkfield(departname,院系名称,dbedepartmentName,true);checkfield(departhead,负责人,dbehead,true);checkfield(telephone,联系电话,dbetelephone,true);checkfield(description,说明,dbmDesc,false);if dbedepartmentID.Modified and not validID thena
21、bort; end; procedure Tfrmdepartment.tbldepartmentBeforeDelete(DataSet: TDataSet);var strmsg :string; begin第 7 页 共 18 页if hasclass(strmsg) thenbeginshowmessage(strmsg);abort;end;strmsg:=format(确定要删除院系“%S“吗?该院系相关信息如下: #13,tbldepartmentdepartID);strmsg:=strmsg+format(院系编号:%S#13,tbldepartmentdepartId);s
22、trmsg:=strmsg+format(院系名称:%S#13,tbldepartmentdepartname);strmsg:=strmsg+format(院系领导:%S#13,tbldepartmentdeparthead);if messageDlg(strmsg,mtconfirmation,mbyes,mbno,0)mryes thenabort; end; procedure Tfrmclass.tblclassBeforePost(DataSet: TDataSet);procedure checkInput(fieldname,fieldDesc:string;dbtext:t
23、customedit;notempty:boolean);begindbtext.Text:=trim(dbtext.Text);dbtext.Text:=stringreplace(dbtext.Text,rfreplaceall);dbtext.Text:=stringreplace(dbtext.Text,rfreplaceall);if notempty and (dbtext.Text=) thenbeginshowmessagefmt(“%S”不能为空,请输入足够的信息!,fieldDesc);dbtext.SetFocus;abort;end第 11 页 共 18 页elsetb
24、lclass.FieldByName(fieldname).AsString:=dbtext.Text;end;function validID :boolean;var strmsg:string;beginresult:=true;tblvalid.Active:=false;tblvalid.TableName:=student;tblvalid.Filter:=classID=+tblclassclassID+;tblvalid.Filtered:=true;tblvalid.Active:=true;if not tblvalid.Eof thenbeginstrmsg:=forma
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计
限制150内