数据库课程设计报告.docx
《数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告.docx(28页珍藏版)》请在冰豆网上搜索。
数据库课程设计报告
数据库课程设计报告
课题基于SQL数据库的通用成绩管理系统
设计者
专业计算机科学与技术
班级
学号
同组成员名单
指导老师______
评定成绩___________________
2010年1月8日
课程设计任务书
一、课程名称《数据库系统原理》指导教师
二、本课程设计题目《基于SQL数据库的通用成绩管理系统》
三、本设计所要达到的目的和要求1、主题明确,软体开发要有创新性,能体现SQL的存储过程、触发器、游标技术等;2、用delphi结合SQLServer数据库进行开发;
3、写出数据库关系模式及相应的数据库表关系图;
4、绘制成绩MIS相应的系统流程图、E-R图等;
5、完成成绩MIS登陆界面、账户管理、主界面、成绩录入、成绩查询和其各项设计与操作。
四、接受任务学生:
班姓名
五、开始及完成时间自2009年12月28日
至2010年1月8日
2009年12月28日
目录
1.概述1
2.系统需求分析1
2.1本系统需要管理的实体信息1
2.2本系统要管理的实体联系信息1
3.功能需求分析1
3.1系统功能的描述1
3.2系统功能模块示意图1
4.系统设计2
4.1数据概念结构设计2
4.1.1数据流程图2
4.1.2E-R图4
4.1.3功能模块设计图4
4.2数据库逻辑结构设计5
4.2.1数据库逻辑结构设计6
4.2.2数据标的设计6
4.2.3数据库二维表结构6
5.Delphi常用的几个语句及功能7
6.系统界面及主要程序9
6.1创建公用模块9
6.2登录界面及主界面9
6.3基础信息管理13
6.4账户管理18
6.5帮助信息22
7.系统测试与运行22
7.1登录测试22
7.2账户管理测试22
7.3成绩录入测试23
7.4成绩查询测试23
8.参考文献23
9.总结23
1.概述
本系统是成绩查询管理系统,主要用于学生成绩的管理,包括成绩录入、查找、添加、删除。
学生通用成绩管理是学校管理中异常重要的一个环节,它的实现关系到学校办学整体效率的高低,运用通用成绩管理系统可以减轻学院教学人员的工作量,加快查询速度,加强管理,也让同学们能在任何时候都能查阅到有关自己学科成绩有关的信息,也有利于让他们充分了解有关自己在大学期间所有课程的学习情况,提高查询速度。
学生成绩管理系统是系科综合管理信息系统中很重要的组成部分。
2.系统需求分析
成绩管理系统是面向各校的管理系统,其目的是提高学校对学生的科学化管理。
经过充分的系统调研,发现本系统主要应包括系统管理、成绩管理、成绩查询管理,进一步还发现各需管理的信息有:
添加或者删除用户,密码修改,各系学生基本信息,学生选课信息等。
本系统的具体要求为:
(1)能管理学生的基本成绩信息,可录入,修改,查询。
(2)通过使用计算机能方便地维护各信息表。
(3)方便同时查出总成绩和平均成绩,实现表的统计功能。
(4)需要时能即时进行输出与打印。
(5)系统具有操作方便、简捷等特点。
2.1本系统需要管理的实体信息
(1)账户管理:
用户名、密码
(2)系别:
机电系、文法系、经管系
(3)成绩录入:
机电系成绩录入、文法系成绩录入、经管系成绩录入
(4)成绩查询:
机电系成绩查询、文法系成绩查询、经管系成绩查询
(5)学生基本信息:
学号、姓名、性别、年龄、籍贯、原高中
(6)学生选课信息:
学号、课程号、成绩
(7)成绩查询:
总成绩、平均成绩
2.2本系统要管理的实体联系信息
(1)学生登陆系统时要输入用户名和密码
(2)学生的选课情况,信息要根据不同情况而添加、删除、修改信息,还有可以做密码修改等。
3.功能需求分析
3.1系统功能的描述
经过调研分析,通用成绩管理系统共可分为系统对用户的添加,删除,修改,各系成绩的录入,各系成绩的分类查询,查询学生的基本信息,选课情况。
系统的维护用于用户的维护及用户权限的设置等。
3.2系统功能模块示意图
4.系统设计
4.1数据概念结构设计
4.1.1数据流程图
系统0级图
成绩管理1级图
成绩查询1级图
4.1.2E-R图
4.1.3功能模块设计图
通用成绩管理系统总模块图
系统管理子模块图
成绩管理子模块图
成绩查询子模块图
帮助信息子模块图
4.2数据库逻辑结构设计
4.2.1数据库逻辑结构设计
学生信息(编号,学号,姓名,年龄,性别,籍贯,原就读高中)
选修信息(学号,课程号,成绩)
用户登陆信息(姓名,密码,权限)
4.2.2数据标的设计
学生成绩
学生信息
登陆信息
4.2.3数据库二维表结构
登录信息表
机电系学生信息
机电系学生选课及成绩
经管系学生信息
经管系学生选课及成绩
文法系学生信息
文法系学生选课及成绩
5.Delphi常用的几个语句及功能
(a)输入语句
InputBox函数和InputQuery函数用于显示一个带有编辑组件的消息对话框,该提示框中有一个文本输入框和两个命令按钮,为用户提供输入文本的功能。
1)InputBox函数
(InputBox返回值是字符串,也就是输入的字符串)
语法:
functionInputBox(constACaption,APrompt,ADefault:
String):
String;
ACaption,消息对话框的标题。
APrompt,消息对话框的提示信息。
ADefault,消息对话框首次出现时编辑框中显示的信息
2)InputQuery函数
显示一个带有编辑组件的对话框,为用户提供输入文本的功能,并判断用户是否按下了Ok按钮。
(InputQuery返回值为是否点了OK输入的字符串放在了变量Value中)
语法:
functionInputQuery(constACaption,APrompt:
string;varValue:
string):
Boolean;
ACaption,消息对话框的标题。
APrompt,消息对话框的提示信息。
Value,对话框首次出现在编辑框中显示的字符串,并得到用户在消息对话框中输入的字符串。
(b)输出语句
MessageDlg函数可以将信息以对话框的形式输出并显示。
语法:
functionMessageDlg(constMsg:
string;DlgType:
TMsgDlgType;Buttons:
TMesgDlgButtons;HelpCtx:
Longint):
Integer;
Msg,显示消息的内容。
Dlgtype,指定消息对话框的类型。
Buttons,指定消息对话框显示的按钮
HelpCtx,指定应显示帮助标题的正文ID
DlgType参数的取值:
mtInfromation,显示带感叹号图标的信息框。
mtWarnging,显示一个带有提醒符号图标的信息框。
mtCustom,无显示图标。
mtError,显示一个带有停止符号图标的信息框。
mtConfirmation,显示一个带有问好图标的信息框。
(c)条件判断语句
1)使用if...then语句
语法:
if条件then
begin
语句
end;
if...then...else语句
语法:
if条件then
语句1
else
语句2
2)case...of条件分支语句
case...of语句提供了一个可读性更好的多重if嵌套的解决方案。
语法:
case条件表达式of
条件1:
语句1;
....
条件n:
语句n;
else
其他语句;
end;
6.系统界面及主要程序
6.1创建公用模块
本系统有一个公用模块,FormData,内有一个Connection控件,用于连接数据库,若数据库改变,只要修改Connection控件的Connection属性即可。
另外,所有的窗体都可以被其他窗体引用。
6.2登录界面及主界面
uses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
Dialogs,ExtCtrls,StdCtrls,DB,ADODB,jpeg,Buttons;
var
Formlogin:
TFormlogin;
implementation
usesdataconn,mainform;
{$R*.dfm}
procedureTFormlogin.Button3Click(Sender:
TObject);
begin
application.Terminate;
end;
procedureTFormlogin.Button2Click(Sender:
TObject);
begin
edit1.Text:
='';
edit2.Text:
='';
end;
procedureTFormlogin.FormClose(Sender:
TObject;varAction:
TCloseAction);
begin
Application.Terminate;
end;
var
i:
integer=0;//定义i作用是查看用户是否输入时有三次错误
procedureTFormlogin.SpeedButton1Click(Sender:
TObject);
Varuser,pass:
string;
begin
user:
=Trim(edit1.Text);
pass:
=Trim(Edit2.Text);
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Text:
='select*fromloginwhereusername='''+user+'''andpassword='''+pass+'''';
//当变量user和pass的内容和‘login’表中的一致时,显示主窗体
adoquery1.Open;
ifadoquery1.Recordset.RecordCount=0then//未找到用户,提示用户输入错误
begin
Application.MessageBox('用户名或密码不正确!
请重新输入!
','^_^注意!
',MB_OK);
edit1.Text:
='';
edit2.Text:
='';
i:
=i+1;
if(i>=3)then
begin
showmessage('密码错误三次,系统退出!
');
application.Terminate;
end;
end
else
begin
formlogin.Hide;//隐藏formlogin窗体
//或者用formlogin.visible:
=false;
formmain.Show;//显示formmain主窗体
//或者用formmain.visible:
=true;
end;
end;
procedureTFormlogin.SpeedButton2Click(Sender:
TObject);
begin
application.Terminate;
end;
end.
uses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
Dialogs,StdCtrls,ExtCtrls,Menus;
var
Formmain:
TFormmain;
implementation
usesusersinfo,jdxio,jdxgrade,helpform,jgxgrade,jgxio,wfxgrade,wfxio;
{$R*.dfm}
procedureTFormmain.N10Click(Sender:
TObject);
begin
hide;
formusersinfo.Show;
end;
procedureTFormmain.N5Click(Sender:
TObject);
begin
formmain.Hide;
formjdxio.Show;
end;
procedureTFormmain.N6Click(Sender:
TObject);
begin
hide;
formjdxgrade.Show;
end;
procedureTFormmain.N4Click(Sender:
TObject);
begin
Application.Terminate;
end;
procedureTFormmain.N11Click(Sender:
TObject);
begin
formhelp.Show;
end;
procedureTFormmain.FormClose(Sender:
TObject;varAction:
TCloseAction);
begin
Application.Terminate;//退出程序
end;
procedureTFormmain.RadioButton1Click(Sender:
TObject);
begin
hide;//隐藏当前窗体
formjdxio.Show;//显示jdxioform窗体
end;
procedureTFormmain.RadioButton2Click(Sender:
TObject);
begin
hide;
formjdxgrade.Show;
end;
procedureTFormmain.RadioButton4Click(Sender:
TObject);
begin
hide;
formjgxgrade.Show;
end;
procedureTFormmain.RadioButton3Click(Sender:
TObject);
begin
hide;
formjgxio.Show;
end;
procedureTFormmain.RadioButton6Click(Sender:
TObject);
begin
hide;
formwfxgrade.Show;
end;
procedureTFormmain.RadioButton5Click(Sender:
TObject);
begin
hide;
formwfxio.Show;
end;
procedureTFormmain.N8Click(Sender:
TObject);
begin
formmain.Hide;
formjgxio.Show;
end;
procedureTFormmain.N9Click(Sender:
TObject);
begin
hide;
formjgxgrade.Show;
end;
procedureTFormmain.N13Click(Sender:
TObject);
begin
formmain.Hide;
formwfxio.Show;
end;
procedureTFormmain.N14Click(Sender:
TObject);
begin
hide;
formwfxgrade.Show;
end;
end.
6.3基础信息管理
机电系成绩管理:
主要代码
var
Formjdxgrade:
TFormjdxgrade;
implementation
usesdataconn,mainform;
{$R*.dfm}
procedureTFormjdxgrade.SpeedButton1Click(Sender:
TObject);
Begin//查询符合相关学号的记录
adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.sql.text:
='select学号,课程号,成绩fromjdxgradewhere学号='''+Trim(edit1.Text)+'''';
adoquery1.open;
//求出平均成绩和总分,分别赋值给edit
adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.sql.text:
='selectsum(成绩)as求和,avg(成绩)as平均值fromjdxgradewhere学号='''+Trim(edit1.Text)+'''';
adoquery1.open;
Edit2.Text:
=ADOQuery1.FieldByName('求和').AsString;
Edit3.Text:
=ADOQuery1.FieldByName('平均值').AsString;
//重新恢复SQL数据显示
adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.sql.text:
='select学号,课程号,成绩fromjdxgradewhere学号='''+Trim(edit1.Text)+'''';
adoquery1.open;
ifadoquery1.Recordset.RecordCount=0then
//未找到用户,提示用户输入错误
begin
Application.MessageBox('学号输入不正确!
请重新输入!
','▲注意!
',MB_OK);
edit1.Text:
='';
adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.sql.text:
='select学号,课程号,成绩fromjdxgrade';
adoquery1.open;
end
end;
procedureTFormjdxgrade.Button1Click(Sender:
TObject);
begin
edit1.Text:
='';//清空edit1.text记录
formmain.Show;
close;//关闭当前窗体
end;
procedureTFormjdxgrade.FormCreate(Sender:
TObject);
Begin//在窗体创建时显示SQL数据
adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.sql.text:
='select学号,课程号,成绩fromjdxgrade';
adoquery1.open;
end;
procedureTFormjdxgrade.FormClose(Sender:
TObject;
varAction:
TCloseAction);
begin
edit1.Text:
='';//清空edit1.text的值
formmain.Show;
end;
end.
经管系成绩管理(代码同上)
文法系成绩管理(代码同上)
6.4账户管理
uses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
Dialogs,DB,ADODB,StdCtrls,Grids,DBGrids,Buttons;
var
formusersinfo:
Tformusersinfo;
procedureTformusersinfo.SpeedButton1Click(Sender:
TObject);
begin
adoquery1.Close;
formmain.Show;
formusersinfo.Hide;
end;
procedureTformusersinfo.FormClose(Sender:
TObject;
varAction:
TCloseAction);
begin
formmain.Show;
formusersinfo.Hide;
end;
procedureTformusersinfo.Button1Click(Sender:
TObject);
begin
inherited;
ifTextIsNull=Falsethen//判断编辑框文本是否为空
begin
WithDataModule1.Query2do//判断用户名称是否重复
begin
CLose;
SQL.Clear;
End;
Try
withDataModule1.adddo//向数据表中插入数据
begin
Close;
SQL.Clear;
SQL.Add('Insertintologinvalues(:
username,:
password)');
Parameters.ParamByName('username').Value:
=Trim(edit1.Text);
Parameters.ParamByName('password').Value:
=Trim(edit2.Text);
ExecSQL;
end;
Application.MessageBox('操作成功.','提示',64);
button4.Click;
Except
OnE:
Exceptiondo//产生异常则抛出异常信息
ShowMessage(E.Message);
End;
end
else
begin
Application.MessageBox('用户名或密码不能为空.','提示',64);
end;
end;
//自定义函数,判断编辑框是否为空
functiontformusersinfo.TextIsNull:
Boolean;
begin
Result:
=False;
if(Trim(edit1.Text)='')or(Trim(edit2.Text)='')then
Result:
=True;
end;
procedureTformusersinfo.Button2Click(Sender:
TObject);
begin
inherited;
ifDataModule1.Query1.Activethen//存在可删除的数据
Begin//提示是否删除数据
ifApplication.MessageBox(Pchar('确实要删除库存名称为:
'+Trim(DataMo