数据库实验五 编程实施学生、选课、成绩简易管理系统

实验五  编程实施学生、选课、成绩简易管理系统

 

 

 

一.实验目的

1.通过编程扩展示例程序“学生选课系统”功能。

2.进一步掌握调试程序的基本步骤和方法。

二.实验要求

1.使学生、教师和课程表具有增加、修改、删除和查询数据的功能。

2.学生根据开设课程进行选课。

3.教师根据学生所选课程进行成绩登录。

4.各类统计分析。

5.其他辅助功能。

三.实验报告要求

1.系统说明。

2.程序脚本。

3.调试报告。

4.上机体会。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

系统说明

本系统系学生、选课、成绩简易管理系统。完成学生通过学号、密码、课程号选课和退课,以及教师通过密码维护学生表,课程表和登陆成绩等功能。

程序脚本:

--------------------主界面--------------------

//查询按钮

if sle_1.text="" then

       MessageBox("出错","请输入学号!")

else

       sle_1.text=upper(sle_1.text)

       if trim(sle_1.text)<>trim(s_info) then

              s_info=sle_1.text                        

              dw_2.reset()                              

              dw_2.settransobject(SQLCA)      

              dw_2.retrieve(s_info)          

              dw_2.object.datawindow.readonly="yes"    

              dw_3.reset()                              

              dw_3.settransobject(SQLCA)

              dw_3.retrieve(s_info)          

              dw_3.object.datawindow.readonly="yes"    

       end if

end if

//选课按钮

string cnumber,kk1,kk2,kk3,pwd,tmppwd

sle_1.text=upper(sle_1.text)

sle_2.text=upper(sle_2.text)

kk1=upper(s_info)

if trim(sle_1.text)<>trim(kk1) then

       dw_2.settransobject(SQLCA)

       s_info=trim(sle_1.text)

       dw_2.retrieve(s_info)

       dw_2.object.datawindow.readonly="yes"

       dw_3.settransobject(SQLCA)

       dw_3.retrieve(s_info)

       dw_3.object.datawindow.readonly="yes"

end if

if sle_2.text="" or sle_3.text="" then

       MessageBox("错误","起输入课程号和密码!")

end if

if sle_2.text<>"" then

       pwd=sle_3.text

       select password into :tmppwd from s

              where s.sno=:sle_1.text ;

       if pwd=tmppwd then

              cnumber=sle_2.text

              select c.cname into :kk2 from c where c.cno=:cnumber;

              if kk2="" then

                     MessageBox("出错","此课程号不存在!")

              end if

              select sc.cno into :kk3 from sc where (sc.cno=:sle_2.text and sc.sno=:s_info);

              if SQLCA.SQLCODE=0 then

                     MessageBox(出错","此课程已选!")

              else

                     insert into sc(sno,cno) values(:s_info,:sle_2.text);

              end if

              dw_2.reset()

              sle_2.text=""

              dw_2.settransobject(SQLCA)

              dw_2.retrieve(s_info)

              dw_2.object.datawindow.readonly="yes"

        

       else

              MessageBox("出错","密码错误!")

       end if

end if

//退课按钮

string cnumber,kk1,kk2,kk3,pwd,tmppwd

sle_1.text=upper(sle_1.text)

sle_2.text=upper(sle_2.text)

kk1=upper(s_info)

if trim(sle_1.text)<>trim(kk1) then

       dw_2.settransobject(SQLCA)

       s_info=trim(sle_1.text)

       dw_2.retrieve(s_info)

       dw_2.object.datawindow.readonly="yes"

       dw_3.settransobject(SQLCA)

       dw_3.retrieve(s_info)

       dw_3.object.datawindow.readonly="yes"

end if

if sle_2.text="" or sle_3.text="" then

       MessageBox("出错","请输入课程号和密码!")

end if

if sle_2.text<>"" then

       pwd=sle_3.text

       select password into :tmppwd from s

              where s.sno=:sle_1.text ;

       if pwd=tmppwd then

              cnumber=sle_2.text

              select c.cname into :kk2 from c where c.cno=:cnumber;

              if kk2="" then

                     MessageBox("出错","此课程号不存在!")

              end if

              select sc.cno into :kk3 from sc where (sc.cno=:sle_2.text and sc.sno=:s_info);

              if SQLCA.SQLCODE=0 then

                     MessageBox("出错","未选该课程!")

              else

                     insert into sc(sno,cno) values(:s_info,:sle_2.text);

              end if

              dw_2.reset()

              sle_2.text=""

              dw_2.settransobject(SQLCA)

              dw_2.retrieve(s_info)

              dw_2.object.datawindow.readonly="yes"

        

       else

              MessageBox("出错","密码错误!")

       end if

end if

//关闭按钮

Close(parent)

 

 

 

--------------------学生表和课程表界面--------------------

其代码与书中一致

 

 

 

--------------------成绩表界面--------------------

//保存按钮

int tt,hascol

string kk,grade

tt=dw_1.getrow()

s_info=sle_1.text

c_info=sle_2.text

grade=sle_3.text

update sc set grade=:sle_3.text where (sc.sno=:s_info and sc.cno=:c_info);

if s_info=kk and pb_1.enabled=false then

       messagebox("出错","此学号已存在!")

else

       dw_1.update()

       hascol=dw_1.retrieve()

       st_2.text=string(hascol)

end if

 

 

 

调试报告:

       调试用未遇到语法错误,遇到过变量未定义的问题。无大碍。

 

 

 

上机体会:

       本次实验是基于实验四的。在实验的程序的基础上添加了些其他功能,如:成绩的统计和修改,需要通过密码选课,管理学生表、课程表和成绩表时都需要教师先通过密码登陆。且密码不是写在程序中,是一起放在数据库表中,起初认为很难,可是通过一段时间的PB实践后,对PB的变成语言和SQL语句都比较掌握了,没花多少时间便实现了设想的功能。至此PB的有关实验已经完成了,从中学到了很多,今后会继续研究下去。

你可能感兴趣的:(数据库实验五 编程实施学生、选课、成绩简易管理系统)