1、1教务管理系统数据库(SQL Server 2008 + delphi7)实验报告班级:7 姓名:787 学号:787 指导教师: 完成日期: 目录第一章 系统概述3第二章 系统分析32第三章 系统设计4第四章 系统功能9第五章 系统实现9第六章 源程序附录15第七章 参考文献73第一章 系统概述学校学生管理信息系统是针对学校人事处的大量业务处理工作而开发的管理软件,是典型的管理信息系统(Management Information System) 。它是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,它能够为用户提供充足的信息和快捷的查询手段。能有效的帮助学校和老
2、师掌握学生的情况,为学生提供成绩跟课程方面的查询。本系统是以 delphi7 编辑用户界面,以 SQL server 2008 为数据源后台而成的学生信息管理系统。本系统是以计算机为基础,由人和计算机结合的对信息进行收集、存储、维护、加工、传递和使用的一种管理系统,其目的是使人流、物流、资金流和信息流处于最佳状态,以最少的资源投入获得最佳的综合效益。本系统主要包括学生信息管理模块、教师信息管理模块、课程信息管理模块、成绩信息管理模块和系统维护模块等部分。在校务管理中,为有关部门提供完整、综合、共享的信息,对于学校的教育管理、教务和科研等都有很大的实用价值。3第二章 系统分析1、问题定义随着科学
3、技术的不断提高,计算机科学日渐成熟,其强大功能已为人们深刻认识,它已进入人们生活的各个领域,并发挥了越来越重要的作用,针对人工管理的缺点,最好的解决办法就是借助计算机技术提供一个电子化的学生信息管理平台。为了更好地管理学生和教职工的资料文档,我开发一个软件工程学生信息管理系统。教师和学生可以应用该系统实现如下功能:1、可随时查询出不同系及各系教师与各系学生情况,系、教师与学生各反映如下情况:系:系号、系名、系负责人、专业数等。教师:工号、姓名、性别、职称、工龄、出生年月、基本工资等。学生:学号、姓名、性别、年龄等。2、为简单起见教师与学生区分系别,而课程不分系,课程需反映如下信息:课程代号、课
4、程名、课时数、必修课、学分。3、学生入学时新生需录入登记,登记后即可选课学习课程(一学期约 20 学分)。4、一门只由一位教师上,一位教师可上多门课,满 30 人才开课。5、学生选每门课有个成绩,若成绩不及格则补考后还需记录补考成绩。1)在某数据库管理系统中建立各关系模式对应的库表,并设计所需的视图、索引等。2)能对各库表进行输入、修改、删除、添加、查询、打印等基本操作。3)新生入校登记后可即时选课,老生每学期开始前可选课或作选课调整,一般要选共约 20 学分的若干门课程。4)能明细查询某学生的选课情况及某课程的选修学生情况。5)能统计查询出某学生的成绩单(包括总成绩、平均成绩、不及格门数等)
5、及某门课的选课人数、最高分、最低分、平均成绩等统计信息。6)能分析出某教师的教学质量情况(可根据该教师所任所有课优良数平均超过一定百分比来粗略评定)。7)其他你认为子系统应有的查询、统计功能。8)要求子系统设计得界面友好,功能选择方便合理,并适当考虑子系统在其安全性、完整性、备份、恢复等方面的功能要求2、可行性分析1项目目标:学生和老师可以方便的进行各自所需要的信息管理活动,同时可以查询和修改各自的信息,以便学校管理。2运行环境:(1)以 Windows98 以上/ME/2000/XP 作为学生选课管理系统的后台操作系统。(2)前台开发程序为 DELPHI,SQL Server 2008。(3
6、)后台数据 SQL Server 2008。(4)主要硬件设备:PC 机一台。 。3技术可行性:本系统仅仅简单的实现了教务管理系统的基本功能和需求,具有一定的实用性。但真正意义上的大型信息管理存储还是不太现实。对于大量信息的维护也不具有很强的稳定性。但是操作简单,适合小型的学生信息管理,维护也更为方便。技术要求也不是很高,4有一点 delphi 和 SQL server 技术基础就行了。4.总体分析:成本低,出错率低,使学校实现现代化网络教学管理。第三章 系统设计根据该系统的需求,数据库采用 Microsoft SQL Server 2008 ,它完全设和本系统的工作需求,它所支持的字段数据类
7、型包括数值、字符、日期时间及二进制和图片等类型,是当前的主流数据库产品之一。它还具有性能稳定、便于操作维护和具有较好的安全可靠性等特点,是作为服务器端数据库平台的理想选择。根据系统的需求,系统用到的各种数据表如下图所示。学生信息表教师信息表课程信息表5管理信息表教师课程表6成绩信息表表与表之间的关系如下图所示:7E-R 关系图学生 管理员 教职工删除新增修改 修改删除新增开通选课网上选课个人信息个人信息 个人信息修改密码修改密码 修改密码查询 查询修改查询 删除新增课程查询查询成绩成绩评定8第四章 系统功能1. 学生模块此模块为学生操作模块。学生可以通过此模块实现查看个人信息、修改密码、查看课
8、程信息、才查看成绩信息、网上选课(在管理员开通选课前提下)诸多功能。2. 教职工模块此模块为教职工操作模块。教职工可以通过此模块实现查看个人信息、修改密码、查看课程信息、输入学生平时成绩和期末成绩诸多功能。3. 系统管理员模块此模块为系统管理员操作模块。系统管理员可以通过此模块实现查看管理员信息、修改密码、查看、新增、修改、删除学生信息、查看、新增、删除、修改教职工信息、查看、新增、删除、修改课程信息、开通、关闭选课诸多功能。第五章 系统实现1.主界面2.登陆界面93.学生界面(1)查看个人信息(2)修改密码(3)成绩查询(4)课程查询10(5)网上选课选课提示选课界面已选提示 成功提示 11
9、删除提示4. 教职工界面(1) 个人信息(同学生界面)(2) 修改密码(同学生界面)(3) 课程查询(同学生界面)(4) 成绩评定125. 管理员界面(1) 个人信息(同学生界面)(2) 修改密码(同学生界面)(3) 学生查询管理 (4) 学生信息修改13(5) 教师信息查询(6) 教师信息修改(7) 课程信息查询14(8) 课程信息修改(9) 成绩查询第六章 源程序附录unit Unit1;interface15usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ExtC
10、trls, StdCtrls,Unit2, jpeg, DB, ADODB;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;Panel1: TPanel;Image1: TImage;Label1: TLabel;Label2: TLabel;ADOConnection1: TADOConnection;Timer1: TTimer;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Timer1T
11、imer(Sender: TObject);private Private declarations public Public declarations end;varForm1: TForm1;implementation$R *.dfmprocedure TForm1.Button1Click(Sender: TObject);beginForm2.ManualDock(Form1.Panel1,nil,alNone);Form2.Show;Panel1.Visible :=True;end;procedure TForm1.Button2Click(Sender: TObject);b
12、eginif MessageDlg(确认退出整个系统吗? ,mtConfirmation,mbYes,mbNo,0)=mrYes thenbeginApplication.Terminate;end;16end;procedure TForm1.Timer1Timer(Sender: TObject);beginLabel2.Caption:=DateTimeToStr(Now);end;end.unit Unit2;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Di
13、alogs, StdCtrls, DB, ADODB,Unit3;typeTForm2 = class(TForm)Label1: TLabel;Label2: TLabel;Label3: TLabel;ComboBox1: TComboBox;Edit1: TEdit;Edit2: TEdit;Button1: TButton;Button2: TButton;ADOConnection1: TADOConnection;ADOQuery1: TADOQuery;Label4: TLabel;Button3: TButton;Label5: TLabel;Edit3: TEdit;proc
14、edure ComboBox1Change(Sender: TObject);procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure FormCreate(Sender: TObject);procedure Button3Click(Sender: TObject);procedure FormShow(Sender: TObject);private Private declarations public Public declarations end;17varFo
15、rm2: TForm2;implementationusesUnit1,Unit8,Unit12;$R *.dfmprocedure TForm2.ComboBox1Change(Sender: TObject);begincase ComboBox1.ItemIndex of0:Label2.Caption:=账 号 ;1:Label2.Caption:=工 号 ;elseLabel2.Caption:=学 号 ;end;end;procedure TForm2.Button1Click(Sender: TObject);beginif Edit3.Text=Label4.Caption t
16、henbegincase ComboBox1.ItemIndex of0:beginADOQuery1.Close;ADOQuery1.SQL.Clear;ADOQuery1.SQL.Text:=select * from 管理信息表 where 账号=+Edit1.Text+ AND 密码=+Edit2.Text+ AND 用户名=+ComboBox1.Text+;ADOQuery1.Open;if ADOQuery1.RecordCount=0 thenbeginShowMessage(用户名或密码错误,请重新登录);endelsebeginForm12.Show;Form2.Close;
17、Form1.Panel1.Visible:=False;end;end; 1:beginADOQuery1.Close;ADOQuery1.SQL.Clear;18ADOQuery1.SQL.Text:=select * from 管理信息表 where 账号=+Edit1.Text+and 密码 =+Edit2.Text+and 用户名 =+ComboBox1.Text+;ADOQuery1.Open;if ADOQuery1.RecordCount=0 thenbeginShowMessage(用户名或密码错误,请重新登录);endelsebeginForm8.Show;Form2.Clo
18、se;Form1.Panel1.Visible:=False;end;end; 2:beginADOQuery1.Close;ADOQuery1.SQL.Clear;ADOQuery1.SQL.Text:=select * from 管理信息表 where 账号=+Edit1.Text+and 密码 =+Edit2.Text+and 用户名 =+ComboBox1.Text+;ADOQuery1.Open;if ADOQuery1.RecordCount=0 thenbeginShowMessage(用户名或密码错误,请重新登陆);endelsebeginForm3.Show;Form2.Cl
19、ose;Form1.Panel1.Visible:=False;end;end;elseShowMessage(请选择身份);end;endelseShowMessage(验证码错误);end;procedure TForm2.Button2Click(Sender: TObject);beginForm2.Close;19Form1.Panel1.Visible:=False;end;procedure TForm2.FormCreate(Sender: TObject);beginRandomize;end;procedure TForm2.Button3Click(Sender: TOb
20、ject);vari,j:Integer;c:Char;beginLabel4.Caption:=; /这个是标签for j:=0 to 3 do /随机生成 4 个 a 到 z 的字符串begini:=Random(24);c:=chr(ord(a) + i);Label4.Caption:=Label4.Caption + c;end;beginRandomize;end;end;procedure TForm2.FormShow(Sender: TObject);vari,j:Integer;c:Char;beginLabel4.Caption:=; /这个是标签for j:=0 to
21、3 do /随机生成 4 个 a 到 z 的字符串begini:=Random(24);c:=chr(ord(a) + i);Label4.Caption:=Label4.Caption + c;end;end;end.unit Unit3;20interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls, jpeg, DB, ADODB, DBCtrls;typeTForm3 = class(TForm)Button1: TB
22、utton;Button2: TButton;Button3: TButton;Button4: TButton;Panel1: TPanel;Image1: TImage;DBText1: TDBText;DataSource1: TDataSource;ADOQuery1: TADOQuery;ADOConnection1: TADOConnection;Label1: TLabel;Timer1: TTimer;Label2: TLabel;procedure Button1Click(Sender: TObject);procedure Button3Click(Sender: TOb
23、ject);procedure Button2Click(Sender: TObject);procedure Button4Click(Sender: TObject);procedure Image1Click(Sender: TObject);procedure Timer1Timer(Sender: TObject);private Private declarations public Public declarations end;varForm3: TForm3;implementationusesUnit4,Unit5,Unit6,Unit7,Unit19,Unit2;$R *
24、.dfmprocedure TForm3.Button1Click(Sender: TObject);begin21Form5.Close;Form6.Close;Form7.Close;Form4.ManualDock(Form3.Panel1,nil,alNone);Form4.Show;Panel1.Visible:=True;end;procedure TForm3.Button3Click(Sender: TObject);beginForm4.Close;Form6.Close;Form7.Close;Form5.ManualDock(Form3.Panel1,nil,alNone
25、);Form5.Show;Panel1.Visible:=True;end;procedure TForm3.Button2Click(Sender: TObject);beginForm4.Close;Form5.Close;Form7.Close;Form6.ManualDock(Form3.Panel1,nil,alNone);Form6.Show;Panel1.Visible:=True;end;procedure TForm3.Button4Click(Sender: TObject);beginif Form19.Label11.Caption=已开通选课 thenbeginFor
26、m4.Close;Form5.Close;Form6.Close;Form7.ManualDock(Form3.Panel1,nil,alNone);Form7.Show;Panel1.Visible:=True;endelseShowMessage(选课系统已关闭!); end;procedure TForm3.Image1Click(Sender: TObject);22beginADOQuery1.Close;ADOQuery1.SQL.Clear;ADOQuery1.SQL.Add(select 姓名 from 学生信息表 where 学号=+Form2.Edit1.Text+);AD
27、OQuery1.Open;end;procedure TForm3.Timer1Timer(Sender: TObject);beginLabel1.Caption:=DateTimeToStr(Now);end;end.unit Unit4;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls;typeTForm4 = class(TForm)DBGrid1: TDBGrid;ADOQ
28、uery1: TADOQuery;DataSource1: TDataSource;Button1: TButton;Button2: TButton;Button3: TButton;GroupBox1: TGroupBox;Label1: TLabel;Label2: TLabel;Label3: TLabel;Label4: TLabel;Edit1: TEdit;Edit2: TEdit;Edit3: TEdit;Edit4: TEdit;Label5: TLabel;Button4: TButton;Button5: TButton;Button6: TButton;23proced
29、ure Button1Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure GroupBox1Click(Sender: TObject);procedure Button6Click(Sender: TObject);procedure Button4Click(Sender: TObject);procedure Button5Click(Sender: TObject);private Private declarat
30、ions public Public declarations end;varForm4: TForm4;implementationusesUnit2;$R *.dfmprocedure TForm4.Button1Click(Sender: TObject);beginGroupBox1.Visible:=False;DBGrid1.Visible:=True;ADOQuery1.Close;ADOQuery1.SQL.Clear;beginADOQuery1.SQL.Add(select * from 学生信息表 where 学号=+Form2.Edit1.Text+);ADOQuery
31、1.Open;end;end;procedure TForm4.Button3Click(Sender: TObject);beginADOQuery1.Close;DBGrid1.Visible:=False;GroupBox1.Visible:=False; end;procedure TForm4.Button2Click(Sender: TObject);beginDBGrid1.Visible:=False;24GroupBox1.Visible:=True;end;procedure TForm4.GroupBox1Click(Sender: TObject);vari,j:Int
32、eger;c:Char;beginLabel5.Caption:=; /这个是标签for j:=0 to 3 do /随机生成 4 个 a 到 z 的字符串begini:=Random(24);c:=chr(ord(a) + i);Label5.Caption:=Label5.Caption + c;end;beginRandomize;end;end;procedure TForm4.Button6Click(Sender: TObject);beginGroupBox1.Visible:=False;end;procedure TForm4.Button4Click(Sender: TOb
33、ject);vari,j:Integer;c:Char;beginLabel5.Caption:=; /这个是标签for j:=0 to 3 do /随机生成 4 个 a 到 z 的字符串begini:=Random(24);c:=chr(ord(a) + i);Label5.Caption:=Label5.Caption + c;end;beginRandomize;end;end;procedure TForm4.Button5Click(Sender: TObject);begin25if MessageDlg(确认修改吗? ,mtConfirmation,mbYes,mbNO,0)=m
34、rYes thenbeginif Edit4.Text=Label5.Caption thenbeginADOQuery1.Close;ADOQuery1.SQL.Clear;ADOQuery1.SQL.Text:=select * from 管理信息表 where 账号=+Form2.Edit1.Text+and 密码 =+Edit1.Text+;ADOQuery1.Open;if ADOQuery1.RecordCount=1 thenbeginif Edit2.Text=Edit3.Text thenbeginADOQuery1.Close;ADOQuery1.SQL.Clear;ADO
35、Query1.SQL.Add(Update 管理信息表 SET 密码=:A where 账号=+Form2.Edit1.Text+);ADOQuery1.Parameters.ParamByName(A).Value:=Edit2.Text;ADOQuery1.ExecSQL;ShowMessage(修改成功);endelseShowMessage(新密码不一致)endelseShowMessage(原密码错误);endelseShowMessage(验证码错误);end;Edit1.Text:=;Edit2.Text:=;Edit3.Text:=;Edit4.Text:=;end;end.u
36、nit Unit5;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,26Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids;typeTForm5 = class(TForm)DBGrid1: TDBGrid;Button1: TButton;Button2: TButton;ADOQuery1: TADOQuery;DataSource1: TDataSource;procedure Button1Click(Sender: TOb
37、ject);procedure Button2Click(Sender: TObject);private Private declarations public Public declarations end;varForm5: TForm5;implementationusesUnit2;$R *.dfmprocedure TForm5.Button1Click(Sender: TObject);beginDBGrid1.Visible:=True;ADOQuery1.Close;ADOQuery1.SQL.Clear;beginADOQuery1.SQL.Add(select * fro
38、m 成绩信息表 where 学号=+Form2.Edit1.Text+);ADOQuery1.Open;end;end;procedure TForm5.Button2Click(Sender: TObject);beginADOQuery1.Close;DBGrid1.Visible:=False; end;end.27unit Unit6;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, DB, ADODB, StdCtrls, Grids, DBG
39、rids;typeTForm6 = class(TForm)DBGrid1: TDBGrid;Button1: TButton;Button2: TButton;ADOQuery1: TADOQuery;DataSource1: TDataSource;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);private Private declarations public Public declarations end;varForm6: TForm6;implementationus
40、esUnit2;$R *.dfmprocedure TForm6.Button1Click(Sender: TObject);beginDBGrid1.Visible:=True;ADOQuery1.Close;ADOQuery1.SQL.Clear;beginADOQuery1.SQL.Add(select * from 课程信息表 where 学号=+Form2.Edit1.Text+);ADOQuery1.Open;end;end;28procedure TForm6.Button2Click(Sender: TObject);beginADOQuery1.Close;DBGrid1.V
41、isible:=False;end;end.unit Unit7;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB;typeTForm7 = class(TForm)Button1: TButton;ADOQuery1: TADOQuery;DataSource1: TDataSource;DBGrid1: TDBGrid;Label1: TLabel;Edit1: TEdit;Bu
42、tton2: TButton;Button3: TButton;DBGrid2: TDBGrid;Button4: TButton;ADOQuery2: TADOQuery;ADOQuery3: TADOQuery;ADOQuery4: TADOQuery;DataSource2: TDataSource;ADOQuery5: TADOQuery;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button4Click(Sender: TObject);proce
43、dure Button3Click(Sender: TObject);private Private declarations public Public declarations end;var29Form7: TForm7;implementationusesUnit2;$R *.dfmprocedure TForm7.Button1Click(Sender: TObject);beginADOQuery3.Close;ADOQuery3.SQL.Clear;ADOQuery3.SQL.Add(select * from 教师课程表);ADOQuery3.Open;end;procedur
44、e TForm7.Button2Click(Sender: TObject);beginADOQuery1.Close;ADOQuery1.SQL.Clear;ADOQuery1.SQL.Text:=select * from 教师课程表 where 课程号=+Edit1.Text+;ADOQuery1.Open;if ADOQuery1.RecordCount=0 thenbeginShowMessage(此课程不存在);endelseADOQuery1.Close;ADOQuery1.SQL.Clear;ADOQuery1.SQL.Text:=select * from 课程信息表 whe
45、re 课程号=+Edit1.Text+and 学号=+Form2.Edit1.Text+;ADOQuery1.Open;if ADOQuery1.RecordCount=0 thenbeginif MessageDlg(确认选课吗? ,mtConfirmation,mbYes,mbNo,0)=mrYes thenbeginADOQuery2.Close;ADOQuery2.SQL.Clear;ADOQuery2.SQL.Add(select * from 教师课程表 where 课程号=+Edit1.Text+);ADOQuery2.Open;ADOQuery1.Close;ADOQuery1
46、.SQL.Clear;ADOQuery1.SQL.Add(insert into 课程信息表 values(:A,:B,:C,:D,:E,:F,:G,:H,:I);ADOQuery1.Parameters.ParamByName(A).Value:=Form2.Edit1.Text;30ADOQuery1.Parameters.ParamByName(B).Value:=ADOQuery2.FieldByName(课程号).AsString;ADOQuery1.Parameters.ParamByName(C).Value:=ADOQuery2.FieldByName(课程名).AsStrin
47、g;ADOQuery1.Parameters.ParamByName(D).Value:=ADOQuery2.FieldByName(学时).AsString;ADOQuery1.Parameters.ParamByName(E).Value:=ADOQuery2.FieldByName(学分).AsString;ADOQuery1.Parameters.ParamByName(F).Value:=ADOQuery2.FieldByName(开课时间).AsString;ADOQuery1.Parameters.ParamByName(G).Value:=ADOQuery2.FieldByNa
48、me(教师工号).AsString;ADOQuery1.Parameters.ParamByName(H).Value:=ADOQuery2.FieldByName(教师姓名).AsString;ADOQuery1.Parameters.ParamByName(I).Value:=ADOQuery2.FieldByName(备注).AsString;ADOQuery1.ExecSQL;ADOQuery5.Close;ADOQuery5.SQL.Clear;ADOQuery5.SQL.Add(select * from 学生信息表 where 学号=+Form2.Edit1.Text+);ADOQuery5.Open;ADOQuery1.Close;ADOQuery1.SQL.Clear;ADOQuery1.SQL.Add(insert into 成绩信息表 values(:J,:K,:L,:M,:N,:O,:P,:Q,:R,:S)