数据库课程设计报告8164175.docx
《数据库课程设计报告8164175.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告8164175.docx(32页珍藏版)》请在冰豆网上搜索。
![数据库课程设计报告8164175.docx](https://file1.bdocx.com/fileroot1/2023-1/10/575ab2da-3745-470e-8765-b02e67c801ff/575ab2da-3745-470e-8765-b02e67c801ff1.gif)
数据库课程设计报告8164175
(此文档为word格式,下载后您可任意编辑修改!
)
XX大学
数据库课程设计报告
题目:
学生学籍管理子系统
设计者:
XX
专业班级:
学号:
指导教师:
所属院系:
信息科学与工程学院
2011年12月25日
摘要
本课程设计是一个学生信息管理系统的后台数据库的设计。
由于时间和精力的限制本设计仅实现学生信息管理系统基本功能的设计与实现。
通过本次课程设计,达到了了解数据库应用系统的开发过程,熟悉了系统分析和设计的过程和方法的目的。
在实践中掌握了知识,达到了学以致用的目标。
本次设计首先通过查阅资料对学生各方面信息的管理的基本知识有一定的认识,了解用户各个方面的需求,包括现有的以及将来的可能增加的需求。
然后按照数据库设计的六个阶段进行了设计与实现:
需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库的运行和维护。
数据库在各种信息的提供、保存、更新和查询方面都要求满足各种信息的输出和输入,符合用户的基本需求。
实现这些需要持久的学习和研发。
应用sql建立数据库,选用Delphi作为开发工具,完成了对图书管理系统的实现。
索引关键词:
数据库设计sql数据库应用Delphi设计
目录
1课题的基本内容和要求4
2总体方案的设计说明5~7
2.1学生成绩管理模块的分析6
2.2学生选课模块的分析6~7
3数据库设计8~9
3.1数据库需求分析8
3.2数据库概念结构设计8~9
4学籍管理子系统运行和代码10~36
5课程设计总结37~38
5.1设计制作过程中遇到问题及解决37
5.2总体总结38
1、课程的基本内容和要求
设计本系统模拟学校学籍管理内容,包括学生入学登记、学生选课、考试成绩登记、补考处理及教师教学质量分析统计等,简化的系统需要管理的情况如下:
1、可随时查询出不同系及各系教师与各系学生情况,系、教师与学生各反映如下情况:
系:
系号(dno)、系名(dna)、系负责人(deo)、专业数(dso)等。
教师:
工号(gh)、姓名(xm)、性别(xb)、职称(zc)、工龄(gl)、出生年月(csrq)、基本工资(jbgz)等。
学生:
学号(xh)、姓名(xm)、性别(xb)、年龄(nl)等。
2、为简单起见教师与学生区分系别,而课程不分系,课程需反映如下信息:
课程代号(kcdh)、课程名(kcm)、课时数(kss)、必修课(bxk)、学分(xf)。
3、学生入学时新生需录入登记,登记后即可选课学习课程(一学期约20学分)。
4、一门只由一位教师上,一位教师可上多门课,满30人才开课。
5、学生选每门课有个成绩(cj),若成绩不及格则补考后还需记录补考成绩(bkcj)。
根据以上信息完成如下要求:
1、请认真作系统需求分析,设计出反映本系统的E-R图(需求分析、概念设计)。
2、写出相应已设计的E-R图的关系模式,根据设计所需也可增加辅助关系模式,并找出各关系模式的关键字(逻辑设计)。
3、在已设计的关系模式基础上开发设计功能子系统,要求子系统能完成如下功能要求(物理设计、设施与试运行):
1)在某数据库管理系统中建立各关系模式对应的库表,并设计所需的视图、索引等。
2)能对各库表进行输入、修改、删除、添加、查询、打印等基本操作。
3)新生入校登记后可即时选课,老生每学期开始前可选课或作选课调整,一般要选共约20学分的若干门课程。
4)能明细查询某学生的选课情况及某课程的选修学生情况。
5)能统计查询出某学生的成绩单(包括总成绩、平均成绩、不及格门数等)及某门课的选课人数、最高分、最低分、平均成绩等统计信息。
6)能分析出某教师的教学质量情况(可根据该教师所任所有课优良数平均超过一定百分比来粗略评定)。
7)其他你认为子系统应有的查询、统计功能。
8)要求子系统设计得界面友好,功能选择方便合理,并适当考虑子系统在其安全性、完整性、备份、恢复等方面的功能要求。
4、子系统设计完成后请书写课程设计报告,设计报告要围绕数据库应用系统开发设计的步骤来考虑书写,力求清晰流畅。
最后根据所设计子系统、书写报告及出勤等综合评定成绩。
2、总体方案的设计说明
2.1学生成绩管理模块分析
学生成绩管理模块设计的目标的分析
(1)管理员能够实现对整个学生信息的添加,修改,删除,查询等操作,对教师用户的添加,删除,修改等操作,对留言信息的添加,删除,修改查询等操作.
(2)可以将学生成绩的数据库发布到网上,教师的信息发布的网上,方便学生教师进行查询,达到资源共享的目的.
(3)教师能够在一定的权限内对所有学生成绩的查询,所有教师信息的查询,留言信息的添加,删除,修改是,查看等,对的自己的联系信息进行更新,登录密码的修改.
(4)学生可以在自己的权限内对对自己成绩的查询,以及个人信息的查询,登录密码的修改,留言的查看,提交留言信息的相关操作.
学生成绩管理模块的功能需求分析
学生成绩管理系统主要提供成绩查询,方便管理的网上的信息查阅平台,,查看留言,提交留言.教师可以通过成绩管理系统查阅学生成绩信息,教师信息,查看教师留言,学生留言,提交留言,留言的管理等相关操作.系统管理员可以学生可以通过该系统查阅与自己相关信息实现以上的所有功能,还有对学生的添加,删除,修改,教师的添加,删除,修改,数据库的备份,数据库的还原等相关操作.
2.2学生选课管理模块分析
学生选课管理模块设计的需求的分析
(1)信息需求
学生信息:
学号、姓名、性别、专业、地址、电话等。
课程信息:
课程名、课时、学分、类型、授课老师等。
专业信息:
专业名称、所属学院等。
学生选课信息:
学号、姓名、专业、所选课程等。
用户信息:
用户登录名,用户口令,用户权限,用户全名,用户身份等。
(2)处理需求
学生信息的维护。
课程信息的维护。
专业信息的维护。
学生选课的处理.
信息查询和统计处理。
用户管理模块。
学生选课管理模块的功能需求分析
(1)教学管理人员可以通过该系统的权限管理模块对不同职责的人员进行功能分配,也可以对读者所具有的的查询权限进行分配,从而实现资源最大程度的利用。
(2)教学管理人员可以通过该系统管理学生信息,如对学生信息的添加、修改及删除等,对学生选课进行监控。
(3)学生可以通过该系统对自己的各种信息进行查询、修改,并完成选课。
综上所述,该系统的主要功能如下:
(4)学生管理:
主要管理学生的添加、修改、删除。
(5)课程信息管理:
主要对课程进行添加、修改、删除。
(6)专业信息管理:
主要对专业进行添加、修改、删除。
(7)学生选课管理:
主要包含学生管理个人信息,并选课。
(8)用户权限管理:
主要用于管理员管理各个不同职能的用户的权限分配。
系统的详细功能划分如下
3、数据库设计
3.1数据库需求分析
根据系统的特点归纳总结出以下规律:
●一个专业可以有多个学生。
●一个学生可以选多门课程
根据上述数据之间的对应以及依赖关系,可以确定出数据库中所必备的信信有以下几方面:
●学生信息:
学号、姓名、性别、专业、地址、电话等。
●课程信息:
课程名、课时、学分、类型、授课老师等。
●专业信息:
专业名称、所属学院等。
●学生选课信息:
学号、姓名、专业、所选课程等。
●用户信息:
用户登录名,用户口令,用户权限,用户全名,用户身份等。
3.2数据库概念结构的设计
根据上述需求分析的结果,可以确定并概括出程序中所包含的实体及实体之间的关系。
则可归纳出的实体包括学生信息实体、专业新信息实体、课程信息实体,其中各实体的关系分别如下:
学生信息实体如图3-1:
图3-1学生信息实体
专业类别实体如图3-2:
图3-2专业类别实体
课程信息实体如图3-3:
图3-3课程信息实体
各个实体间的关系如图3-4:
图3-4各个实体间的关系
4学籍管理子系统运行和代码
(一)登陆界面
procedureTForm2.SpeedButton4Click(Sender:
TObject);
begin
application.Createform(Tform3,form3);
form3.showmodal;
end;
procedureTForm2.SpeedButton2Click(Sender:
TObject);
begin
application.Createform(Tform4,form4);
form4.showmodal;
end;
procedureTForm2.SpeedButton3Click(Sender:
TObject);
begin
application.CreateForm(Tform5,form5);
form5.showmodal;
end;
procedureTForm2.SpeedButton1Click(Sender:
TObject);
var
results:
variant;
begin
ADOTable1.Close;
ADOTable1.Open;
ADOTable1.Active;
results:
=ADOTable1.Lookup('用户名',edit1.text,'密码');{检索数据库中对应用户名的密码项}
ifedit1.Text=''then
application.MessageBox('用户名不能为空!
','提示',mb_ok)
elseifedit2.Text=''then
application.messagebox('密码不能为空!
','警告',mb_ok)
else
ifresults=edit2.Textthen
begin
application.CreateForm(Tform10,form10);
form10.ShowModal;
end
else
showmessage('密码错误或用户不存在!
');
edit1.Visible:
=true;
edit2.Visible:
=true;
edit1.Text:
='';
edit2.Text:
='';
end;
end.
(二)主窗体界面
进入窗口
procedureTForm1.FormCreate(Sender:
TObject);
begin
brush.Style:
=bsclear;
inherited;
end;
procedureTForm1.Timer1Timer(Sender:
TObject);
begin
ifform1.panel2.Leftbegin
form1.panel2.Left:
=form1.panel2.Left+5;
exit;
end;
timer1.Enabled:
=false;
flag:
=true;
end;
end.
退出窗口
procedureTForm3.SpeedButton1Click(Sender:
TObject);
begin
application.ProcessMessages;
form2.Close;
form3.Close;
end;
end.
添加学生信息
procedureTForm6.SpeedButton3Click(Sender:
TObject);
begin
edit1.Text:
='';
edit2.Text:
='';
edit3.Text:
='';
edit4.Text:
='';
edit5.Text:
='';
edit6.Text:
='';
edit7.Text:
='';
edit8.Text:
='';
edit9.Text:
='';
edit10.Text:
='';
edit11.Text:
='';
edit12.Text:
='';
edit13.Text:
='';
edit14.Text:
='';
edit15.Text:
='';
memo1.Text:
='';
memo2.Text:
='';
end;
procedureTForm6.SpeedButton4Click(Sender:
TObject);
begin
self.Close;
end;
procedureTForm6.Edit9KeyPress(Sender:
TObject;varKey:
Char);
begin
ifnot(keyin['0'..'9',#8])then
begin
key:
=#0;
Application.MessageBox('邮政编码只能用数字表示,请重新输入!
','警告',0+64)
end;
end;
procedureTForm6.Edit1KeyPress(Sender:
TObject;varKey:
Char);
begin
ifnot(keyin['0'..'9',#8])then
begin
key:
=#0;
Application.MessageBox('学号只能用数字表示,请重新输入!
','警告',0+64)
end;
end;
procedureTForm6.Edit10KeyPress(Sender:
TObject;varKey:
Char);
begin
ifnot(keyin['0'..'9',#8])then
begin
key:
=#0;
Application.MessageBox('联系电话只能用数字表示,请重新输入!
','警告',0+64)
end;
end;
procedureTForm6.SpeedButton2Click(Sender:
TObject);
begin
withADOQuery1do
begin
close;
SQL.Clear;
SQL.Add('select*from学生基本信息表where学生基本信息表.学号=:
a');
parameters.ParamByName('a').Value:
=Trim(Edit1.Text);
Open;
end;
if(edit1.Text='')or(edit2.Text='')or(edit3.Text='')or(edit4.Text='')or(edit5.Text='')or(edit6.Text='')or(edit7.Text='')or(edit8.Text='')or(edit9.Text='')or(edit10.Text='')or(combobox4.Text='')then
begin
application.MessageBox('信息不完整!
','错误操作',mb_ok);
exit;
end
elseifADOQuery1.Eof=falsethen
begin
ShowMessage('该学生已经存在,请重新填写');
Edit1.Clear
end
else
begin
adoquery1.close;
adoquery1.sql.clear;
Adoquery1.sql.add('insertinto学生基本信息表(学号,姓名,民族,出生年,出生月,贯籍,性别,所在系别,所在专业,所在班级,政治面目,家庭住址,邮政编码,联系电话,身份证号码,毕业学校,现在学历,个人特长,电子邮箱,学制,外语,个人备注)'
+'values(:
1,:
2,:
3,:
4,:
5,:
6,:
7,:
8,:
9,:
10,:
11,:
12,:
13,:
14,:
15,:
16,:
17,:
18,:
19,:
20,:
21,:
22)');
Adoquery1.parameters.parambyname('1').value:
=''+Edit1.Text+'';
Adoquery1.parameters.parambyname('2').value:
=''+Edit2.Text+'';
Adoquery1.parameters.parambyname('3').value:
=''+Edit3.Text+'';
Adoquery1.parameters.parambyname('4').value:
=''+combobox1.Text+'';
Adoquery1.parameters.parambyname('5').value:
=''+combobox2.Text+'';
Adoquery1.parameters.parambyname('6').value:
=''+Edit4.Text+'';
Adoquery1.parameters.parambyname('7').value:
=''+combobox3.Text+'';
Adoquery1.parameters.parambyname('8').value:
=''+combobox4.Text+'';
Adoquery1.parameters.parambyname('9').value:
=''+Edit5.Text+'';
Adoquery1.parameters.parambyname('10').value:
=''+Edit6.Text+'';
Adoquery1.parameters.parambyname('11').value:
=''+Edit7.Text+'';
Adoquery1.parameters.parambyname('12').value:
=''+Edit8.Text+'';
Adoquery1.parameters.parambyname('13').value:
=''+Edit9.Text+'';
Adoquery1.parameters.parambyname('14').value:
=''+Edit10.Text+'';
Adoquery1.parameters.parambyname('15').value:
=''+Edit11.Text+'';
Adoquery1.parameters.parambyname('16').value:
=''+Edit12.Text+'';
Adoquery1.parameters.parambyname('17').value:
=''+Edit13.Text+'';
Adoquery1.parameters.parambyname('18').value:
=''+memo1.Text+'';
Adoquery1.parameters.parambyname('19').value:
=''+Edit16.Text+'';
Adoquery1.parameters.parambyname('20').value:
=''+Edit14.Text+'';
Adoquery1.parameters.parambyname('21').value:
=''+Edit15.Text+'';
Adoquery1.parameters.parambyname('22').value:
=''+memo2.Text+'';
Adoquery1.execsql;
application.MessageBox('数据已录入,请查看!
','完成提示',mb_ok);
edit1.Text:
='';
edit2.Text:
='';
end;
end;
end.
成绩的录入
procedureTForm9.SpeedButton3Click(Sender:
TObject);
begin
self.Close;
end;
procedureTForm9.SpeedButton2Click(Sender:
TObject);
begin
edit1.Text:
='';
edit2.Text:
='';
edit3.Text:
='';
edit4.Text:
='';
edit5.Text:
='';
edit6.Text:
='';
edit7.Text:
='';
edit8.Text:
='';
end;
procedureTForm9.Edit1KeyPress(Sender:
TObject;varKey:
Char);
begin
ifnot(keyin['0'..'9',#8])then
begin
key:
=#0;
Application.MessageBox('学号只能用数字表示,请重新输入!
','警告',0+64)
end;
end;
procedureTForm9.SpeedButton1Click(Sender:
TObject);
begin
begin
withADOQuery1do
begin
close;
SQL.Clear;
SQL.Add('select*from成绩信息表where成绩信息表.学号=:
a');
parameters.ParamByName('a').Value:
=Trim(Edit1.Text);
Open;
end;
if(edit1.Text='')or(edit2.Text='')or(edit3.Text='')or(edit4.Text='')or(edit5.Text='')or(edit6.Text='')or(edit7.Text='')or(edit8.Text='')or(combobox1.Text='')or(combobox2.Text='')then
begin
application.MessageBox('信息不完整!
','错误操作',mb_ok);
exit;
end
elseifADOQuery1.Eof=falsethen
begin
ShowMessage('该学生已经存在,请重新填写');
Edit1.Clear
end
else
begin
adoquery1.close;
adoquery1.sql.clear;
Adoquery1.sql.add('insertinto成绩信息表(学号,姓名,性别,所在系别,所在专业,所在班级,课程名称,课程代号,学期,成绩,备注内容)'
+'values(:
1,:
2,:
3,:
4,:
5,:
6,:
7,:
8,:
9,:
10,:
11)');
Adoquery1.parameters.parambyname('1').value:
=''+Edit1.Text+'';
Adoquery1.parameters.parambyname('2').value:
=''+Edit2.Text+'';
Adoquery1.parameters.parambyname('3').value:
=''+combobox1.Text+'';
Adoquery1.parameters.parambyname('4').value:
=''+combobox2.Text+'';
Adoquery1.parameters.parambyname('5').value:
=''+Edit3.Text+'';