delphi 7.0中做一个学生信息管理系统 如何制作打印预览包表呢?本人菜鸟求大神指点!!

如题所述

学校学生管理信息系统的简介
学校学生管理信息系统是针对学校人事处的大量业务处理工作而开发的管理软件,是典型的管理信息系统(Management Information System)。它是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,它能够为用户提供充足的信息和快捷的查询手段。能有效的帮助学校和老师掌握学生的情况,为学生提供成绩跟课程方面的查询。功能基本符合根据张波尔老师的要求。
学生用户通过输入学生基本信息、课程基本信息等,由系统自行生成相应的数据以供学生查询,另外人事处的管理用户还可以对这些基本信息进行更新和删除, 学校学生管理信息系统力求给用户方便快捷的途径去管理这些繁琐的数据。
具体系统功能需求描述如下:

(1) 学籍信息管理
每年的大量新生入学,老生毕业都需要处理大量的学生信息。通过这一模块,可以实现学生基本情况的添加、删除、更新。还能查询各个学生的情况,姓名、家庭电话、家庭住址、学号等各个消息

(2) 班级信息管理
实现班级的添加、删除、更新。查询班级的所在系别,辅导员等。

(3)课程信息管理
每个学期都会增加一些新的科目,通过本模块可以轻松的添加以及更新课程。可以根据
学期条件或者班级条件的选择,也可根据课程名、课程号或者班级的选择,并对值的输入,可以看到数据集中显示符合条件的课程数据信息,而且可以根据教工的修改要求进行数据的添加、删除、修改的操作。
该项管理对课程的属性进行了具体化的分类,比如可以分辨是考试科还是考察课,而且根据条件的选择大大得提高了对各学期课程数据的记录操作,很大得帮助了教工们工作效率的提高。

(4)成绩信息管理
本模块实现了成绩的输入、删除、更新。还能查询到平均成绩以及单科最高最低成绩以及个人成绩。把成绩统计这个繁琐的工作简单化,为学生成绩的管理方面提高工作效率。

(5)系统管理
因为本系统是供多人一起使用的,必须对某一些人进行限制。于是设置了管理员,非管理员只能进行查询操作,不能进行更改。

三、学校学生管理信息系统的分析和设计
(1)开发环境的简介
设计平台: DELPHI6.0
Delphi是一个对象导向设计的应用程序语言,是开发数据库前端的优秀工具,它的编程语言简洁明快、组件功能强大和编程环境灵活方便。采用Delphi来开发数据库应用程序具有更大的灵活性和可扩展性。

数据库: Microsoft Access
Access 是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Access 的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。另外,Access 允许创建自定义报表用于打印或输出数据库中的信息。Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。Access 是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。Access 多用于中小型企业来设计中小型数据库,一般的学校教务系统的数据库用Access 来设计完全能达到要求。由于考虑到本系统是应用在单机系统上,只建立起一个数据库。

数据库访问方式:ADO
ADO(Active Data Objects)实际是一种提供访问各种数据类型 的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种ODBC数据源,即不止适合于SQL Server、Oracle、Access 等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE-DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。

(2)学校学生管理信息系统数据库设计
由于考虑到本系统是应用在单机系统上,另外根据学校人员规模,我只建立起一个数据库,在此数据库基础上建立起如下八个基本表:

学生:学号,姓名,出生年月,性别,籍贯,联系地址,联系电话,班级

班级:系名,班级,主要教室,辅导员,班长

系表:系名,系办公室,联系电话

课程表:课程号,课程号,班级,类别,学时,学名

平均成绩表:班级,学号,姓名,平均成绩

单科成绩表:学号,姓名,课程表,课程名,成绩

选课表:班级,课程号,学期

用户名:用户,密码

(3)窗体设计:

班级管理(banjigl.dfm)

班级查询(banjicx.dfm)

学籍管理(xuejigl.dfm)

学籍查询(xuejicha.dfm)

课程管理(kechenggl.dfm)

课程查询(kechengcha.dfm)

成绩管理(chengjigl.dfm)

成绩查询(chengjicha.dfm)

(4)系统流程图(Data Flow Diagram):

(5)数据库概念结构设计


(6)数据库逻辑结构设计
学生基本情况表:
字段名 数据类型 是否可空 说明
班级 文本 否 外关键字
学号 文本 否 主关键字
姓名 文本 否 无
性别 文本 否 无
出生年月 日期 否 无
籍贯 文本 否 无
联系电话 文本 是 无
联系地址 文本 是 无
班级情况表:
系名 文本 否 外关键字
班级 文本 否 关键字
主要教室 文本 是 无
辅导员 文本 是 无
系名 文本 否 外关键字
班级 文本 否 关键字
系表:
系名 文本 否 关键字
系办公室 文本 是 无
联系电话 文本 是 无
课程表:
课程号 文本 否 关键字
课程名 文本 否 无
班级 文本 是 外关键字
类别 文本 是 无
平均成绩表:
班级 文本 否 外关键字
学号 文本 否 关键字
姓名 文本 是 无
平均成绩 长整型 是 无
单科成绩表:
学号 文本 否 关键字
姓名 文本 否 无
课程号 文本 否 外关键字
课程名 文本 否 无
成绩 长整型 是 无
班级选课表:
班级 文本 否 组合关键字
课程号 文本 否 组合关键字
课程名 文本 是 无
学期 文本 否 组合关键字

(6)课程管理部分的代码:
选课管理:
begin
ComboBox1.Items.Append(adoquery1.FieldValues['系名']); //ComboBox1连到系表的 系名 字段
adoquery1.Next;
end; end;
procedure TForm11.ComboBox1Select(Sender: TObject);
begin
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select * from class where 系名='+''''+ComboBox1.Text+'''');//查询系名是否符合
adoquery2.ExecSQL;
adoquery2.Open;
while not adoquery2.Eof do
begin
ComboBox2.Items.Append(adoquery2.FieldValues['班级']);//符合就调用班级表的字段 班级
adoquery2.Next;
end;
end;

procedure TForm11.ComboBox2Select(Sender: TObject);
begin
adoquery4.Close;
adoquery4.SQL.Clear;
adoquery4.SQL.Add('select * from kecheng where 班级='+''''+ComboBox2.Text+'''');//查询课程表中字段 班级 是否符合,符合就调到
adoquery4.ExecSQL; //DBgiid1
adoquery4.Open;
end;

procedure TForm11.ComboBox3Select(Sender: TObject);
begin
adoquery4.Close;
adoquery4.SQL.Clear;
adoquery4.SQL.Add('select * from kecheng where 班级='+''''+ComboBox2.Text+''' and 学期='+''''+ComboBox3.Text+''''); //判断学期是否符合
adoquery4.ExecSQL;
adoquery4.Open;
end;

procedure TForm11.SpeedButton1Click(Sender: TObject);
begin
while not adoquery4.Eof do
begin
if (adoquery4.FieldValues['课程号']=adoquery3.FieldValues['课程号']) and (adoquery4.FieldValues['班级']=Combobox2.Text) and (adoquery4.FieldValues['学期']=Combobox3.Text) then
break;
adoquery4.Next;
end;
if adoquery4.Eof then
begin
adoquery4.Insert; //把选课内容添加到选课表中。
adoquery4.FieldValues['课程号']:=adoquery3.FieldValues['课程号'];
adoquery4.FieldValues['班级']:=Combobox2.Text;
adoquery4.FieldValues['课程名']:=adoquery3.FieldValues['课程名'];
adoquery4.FieldValues['学期']:=Combobox3.Text;
adoquery4.Post;
end
else
begin
showmessage('本课程此班级已经选过'); //如果已经选过,弹出对话框“本课程此班级已经选过”
end;
end;
procedure TForm11.SpeedButton2Click(Sender: TObject);
begin
if not adoquery4.Eof then
adoquery4.Delete;
end;
end.

课程管理:
procedure TForm9.FormCreate(Sender: TObject);
begin
ADOQuery3.Close; //关闭数据库
ADOQuery3.SQL.Clear; //清空
ADOQuery3.SQL.Add('select * from kechengbiao');
ADOQuery3.ExecSQL;
ADOQuery3.Open;
dbedit1.DataField:='课程号';
dbedit2.DataField:='课程名';
dbedit3.DataField:='课时';
dbedit4.DataField:='学分';
//DBComboBox1.DataField:='学期';
DBComboBox2.DataField:='类型';

end;

procedure TForm9.SpeedButton1Click(Sender: TObject);
begin
if SpeedButton1.Caption='添加' then
begin
adoquery3.Insert; //添加到课程表
SpeedButton1.Caption:='确定';
SpeedButton4.Enabled:=true;
SpeedButton2.Enabled:=false;
SpeedButton3.Enabled:=false;
end
else
if SpeedButton1.Caption='确定' then
begin
if dbedit1.Text='' then
begin
showmessage('请输入课程号!'); //如果课程号没输入,弹出对话框
end
else
begin
adoquery3.Post;
SpeedButton1.Caption:='添加';
SpeedButton4.Enabled:=false;
SpeedButton2.Enabled:=true;
SpeedButton3.Enabled:=true;
end;
end;
end;

procedure TForm9.SpeedButton2Click(Sender: TObject);
begin
if adoquery3.Eof then
begin
SpeedButton2.Enabled:=false;
SpeedButton3.Enabled:=false;
end;
if SpeedButton2.Caption='删除' then
begin
SpeedButton2.Caption:='确定';
SpeedButton4.Enabled:=true;
SpeedButton1.Enabled:=false;
SpeedButton3.Enabled:=false;
end
else
begin
adoquery3.Delete; //从数据表中删掉所选记录
SpeedButton2.Caption:='删除';
SpeedButton4.Enabled:=false;
SpeedButton1.Enabled:=true;
SpeedButton3.Enabled:=true;
end;
end;

procedure TForm9.SpeedButton4Click(Sender: TObject);
begin
adoquery3.Cancel;
SpeedButton1.Caption:='添加';
SpeedButton2.Caption:='删除';
SpeedButton3.Caption:='修改';
SpeedButton4.Enabled:=false;
SpeedButton1.Enabled:=true;
SpeedButton2.Enabled:=true;
SpeedButton3.Enabled:=true;
end;

procedure TForm9.SpeedButton3Click(Sender: TObject);
begin
if SpeedButton3.Caption='修改' then
begin
adoquery3.Edit; //修改课程表中的记录
SpeedButton3.Caption:='确定';
SpeedButton4.Enabled:=true;
SpeedButton2.Enabled:=false;
SpeedButton1.Enabled:=false;
end
else
begin
adoquery3.Post;
SpeedButton3.Caption:='修改';
SpeedButton4.Enabled:=false;
SpeedButton2.Enabled:=true;
SpeedButton1.Enabled:=true;
end;

end;

procedure TForm9.Label1DblClick(Sender: TObject);
begin
form11:=tform11.Create(application);
form11.ShowModal;

end;
end.

课程查询部分:
procedure Tform4.ComboBox1Select(Sender: TObject);

begin
edit1.Text:='';
button1.Enabled:=false;
end;

procedure Tform4.Button1Click(Sender: TObject);
begin
if CheckBox1.Checked=true then
begin
ADOQuery1.Close; //先将数据库关闭
ADOQuery1.SQL.Clear; //清空ADOQuery1内的SQL值清空
ADOQuery1.SQL.Add('select * from kecheng where '+ComboBox1.text+' = '+''''+edit1.Text+''' and 学期 = '+''''+ComboBox2.Text+''''); //合并查询,符合的话在DBGrid中显示出来
ADOQuery1.ExecSQL;
ADOQuery1.Open;
end
else
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from kecheng where '+ComboBox1.text+' = '+''''+edit1.Text+'''');//单个条件查询
ADOQuery1.ExecSQL;
ADOQuery1.Open;
end;
end;

procedure Tform4.N2Click(Sender: TObject);
begin //开启其他管理界面
form2.show;
form4.Close;
end;

procedure Tform4.N3Click(Sender: TObject);
begin
form3.show;
form4.Close;
end;

procedure Tform4.N4Click(Sender: TObject);
begin
form5.show;
form4.Close;
end;

procedure Tform4.N6Click(Sender: TObject);
begin
form1.show;
form4.Close;
end;

procedure Tform4.N7Click(Sender: TObject);
begin

form4.Close;
end;

procedure Tform4.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
button1.Enabled:=true; //当输入条件后,“确定”按钮为有效状态
end;

procedure Tform4.CheckBox1Click(Sender: TObject);
begin
ComboBox2.Enabled:=CheckBox1.Checked;//把查询到的数据放在DBGrid上显示出来
end;

end.

四、学校学生管理信息系统的使用说明
本系统分为学生用户和管理用户,如果你不是管理员,那只能进行查询,对数据没有修改权力。只能进行查询,里面有各个方面的,如成绩查询,课程查询,班级查询,学籍查询。各个界面都简单明了,只要输入你所需要的条件,系统自动调出数据。
管理员登陆点系统,点系统,输入管理员用户及密码,跟数据库的用户表比较。如果通过
则能进行课程,学籍,成绩,班级的管理。

五、结束语
学生信息管理系统有利于学校对学生资料的查询,具有可使用性和可维护性,利于学校在需要之时快速了解学生的情况。并可以让具有最高权限的管理员更新、修改信息,已经具备了一定的功能。但由于时间关系和其它原因,本系统还有些不足之处, 如本系统没有实现报表打印的功能等等, 还有待于完善。
在张波尔老师的指导下,经过一段时间的讨论和上机的不断调试,我顺利的完成了开发任务。在开发过程中,我不仅增强了自学的能力和开发软件的能力。对一些软件开发模式有了更加深刻的认识,对应用软件的熟练程度有所提高,已经能运用这项开发过程,学会了如何进行小组式的开发一个综合系统。还从张老师身上学到了很多东西。张老师认真负责的态度严谨治治学精神都使我收益非浅。在此我特向给了很多指导和提供我们开发小组宝贵意见的张波尔老师表示感谢!因为本系统所涉及的内容非常广泛并且比较复杂,加上时间的仓促,尽管我竭尽全力来保证系统的可靠性,但是肯定还有不足之处,恳请用户批评指正。谢谢!

参考文献:(1)Delphi6数据库系统开发实例子导航 人民邮电出版社
(2)程序设计从入门到精通 科学出版社
(3)Delphi6.0程序设计教程 冶金工业出版社
(4)Delphi数据库开发自学教程 人民邮电出版社

各模块主要代码
1、成绩管理模块
⑴ 成绩管理
procedure TForm8.Button1Click(Sender: TObject);
var
i:boolean;
begin
i:=false;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select * from pjcj where '+edit2.Text+'');
ADOQuery2.ExecSQL;
ADOQuery2.Open;
if not ADOQuery2.Eof then ( 判断是否数据库最后一项)
i:=true;
if i then
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from dkcj where 学号 ='+''''+ADOQuery2.FieldValues['学号']+''''); (使用SQL进行查询)
ADOQuery1.ExecSQL;
ADOQuery1.Open;
button1.Enabled:=false;
end
else
begin
showmessage('没有符合查询条件的记录!!'); (如果没有符合条ComboBox1.Text:='';
ComboBox2.Text:=''; 件的,显示该语句)
ComboBox3.Text:='';
edit1.Text:='';
edit2.Text:='';
adoquery1.Close;
adoquery2.Close;
ComboBox1.Enabled:=true;
end;
dbedit6.DataField:='学号';
dbedit7.DataField:='姓名';
dbedit8.DataField:='班级';
dbedit1.DataField:='学号';
dbedit2.DataField:='姓名';
dbedit3.DataField:='课程号';
dbedit4.DataField:='课程名';
dbedit5.DataField:='成绩';
end;
(2)成绩查询
procedure Tform3.Button1Click(Sender: TObject);
var
i:boolean;
begin
i:=false;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select * from pjcj where '+edit2.Text+'');
ADOQuery2.ExecSQL; (根据SQL进查询)
ADOQuery2.Open;
if not ADOQuery2.Eof then
i:=true;
if i then
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from dkcj where 学号 ='+''''+ADOQuery2.FieldValues['学号']+'''');
ADOQuery1.ExecSQL;
ADOQuery1.Open;
button1.Enabled:=false;
end
else
begin
showmessage('没有符合查询条件的记录!!');
ComboBox1.Text:=''; (当没有符合条件的记录,自动
ComboBox2.Text:=''; 清空选择框里的查询条件)
ComboBox3.Text:='';
edit1.Text:='';
edit2.Text:='';
adoquery1.Close;
adoquery2.Close;
ComboBox1.Enabled:=true;

end;
end;

procedure Tform3.DBGrid2CellClick(Column: TColumn);
var
str:string;
begin
str:=ADOQuery2.FieldValues['学号'];
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from dkcj where 学号 ='+''''+str+'''');
ADOQuery1.ExecSQL;
ADOQuery1.Open;
end;

procedure Tform3.N4Click(Sender: TObject); (管理界面的切换)
begin
form5.show;
form3.Close;
end;

procedure Tform3.N6Click(Sender: TObject);
begin
form1.show;
form3.Close;
end;
procedure Tform3.Edit1Exit(Sender: TObject);
begin
if ComboBox1.Text='平均成绩' then (根据平均成绩查询)
begin
edit2.Text:=edit2.Text+edit1.Text;
end
else
begin
edit2.Text:=edit2.Text+#39;
edit2.Text:=edit2.Text+edit1.Text;
edit2.Text:=edit2.Text+#39;
end;
end;

procedure Tform3.Button2Click(Sender: TObject);
begin (本段为对查询条件的刷新,进
ComboBox1.Text:=''; 行不同条件的输入)
ComboBox2.Text:='';
ComboBox3.Text:='';
edit1.Text:='';
edit2.Text:='';
adoquery1.Close;
adoquery2.Close;
button1.Enabled:=false;
ComboBox1.Enabled:=true;
end;

2、 班级管理模块
(1)班级管理
procedure TForm9.ComboBox1Select(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from class where 系名 = '+''''+ComboBox1.Text+'''');
ADOQuery1.ExecSQL;
ADOQuery1.Open; (根据系别显示班级信息)
dbedit1.DataField:='系名'; (这五项为表的数据项名)
dbedit2.DataField:='班级';
dbedit3.DataField:='辅导员';
dbedit4.DataField:='班长';
dbedit5.DataField:='专业';
button1.Enabled:=true;
button2.Enabled:=true;
button3.Enabled:=true;
button4.Enabled:=true;
end;
procedure TForm9.Button2Click(Sender: TObject); (记录的删除操作)《修改与添加操作与这类似》
begin
if button2.Caption='删除' then
begin
button2.Caption:='确定';
button1.Enabled:=false;
button3.Enabled:=false;
button4.Enabled:=true;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-11
fastreport或者reportmachine
第2个回答  2013-09-11
使用报表控件
第3个回答  2013-09-12
需要帮忙写吗?我可以帮你。出点辛苦费即可
相似回答