课程设计报告范文

课程设计报告

院 系: 城市学院

专 业:

课 程: 数据库应用开发

班 级: 07计算机应用专2

学 号: 04306116

姓 名: 刘莹佳

指导老师:

2009年 5 月 21 日

一、 需求分析

数据库应用系统的设计与开发一直以来都是计算机应用的重要应用领域之

一。在该应用领域中,PowerBuilder无疑是具有相当代表性的一种数据库前端开发工具。PowerBuilder完全基于客户/服务器体系结构,并且采用面向对象和可视化开发技术。另外,随着其自身的多次升级换代,PowerBuilder的功能也在不断强大,因此它除了可以设计传统的基于客户/服务器体系结构的应用之外,也能够构建和实现分布式系统的应用。

该项目主要是服务于教学方面,进一步方便教师的工作和学生的学习,从而从侧面达到提高学校的教学方面‘软件’质量。可以说它适用于每一所高校,因此很有开发价值。

它具有使用范围广,实用性强,使用简单,所花经费少等优点。可以肯定的说它将在高校的教学的使用过程中其优点将得到最充分的体现。它的功能就是教师通过输入用户名和口令登陆到教学管理数据库中,从而实现成绩摄入,对教师信息的维护等。学生则通过输入学号与口令进行登陆,进去以后可以对自己的信息进行查询,并且也可以进行选课与退课;这当中学生对自己的成绩只能看,不能删除和修改。当然还要有一个管理员,他在整体上能实现对系统进行维护与保护。该系统主要包括学生信息查询,教务信息维护,和学生选课三大部分功能。在这当中管理员的权限最大,教师次之,学生最少。

二、 模块功能分析

本次实验主要模块及功能分别为:

管理员模块,功能:管理员账号维护,班级管理,教师管理,(学生管理),课程管理,(开课管理)。

教师模块,功能:(学生管理) ,成绩输入,个人信息修改,密码管理。

学生模块,功能:成绩查询,课程选修,个人信息修改,密码管理。

(开课管理模块,意味着某名教师只能输入其执教班级的成绩,课程选修模块,则在学生未选修课程前教师不能输入成绩。)

三、 数据库表结构

6.班级表bj

关系视图

四、 详细模块界面、代码及注释

1、登陆界面

(1) 在“登陆”中加入代码: user=sle_user.text

string temp,temp1

temp=""

temp1=""

if ddlb_role.text="" then

messagebox("error","请选择登陆身份") end if

if ddlb_role.text="管理员" then

select glh,gl_pwd into :temp,:temp1 from gl

where glh=:sle_user.text;

if temp="" then

messagebox("error","没有该帐号") elseif temp1sle_pwd.text then

messagebox("error","密码输入错误") else

open(adminmain)

close(winlogin)

return

end if

end if

if ddlb_role.text="学生" then

select xh,xs_pwd into :temp,:temp1 from xs

where xh=:sle_user.text;

if temp="" then

messagebox("error","没有该帐号") elseif temp1sle_pwd.text then

messagebox("error","密码输入错误") else

open(xsmain)

close(winlogin)

return

end if

end if

if ddlb_role.text="教师" then

select jsh,js_pwd into :temp,:temp1 from js

where jsh=:sle_user.text;

if temp="" then

messagebox("error","没有该帐号") elseif temp1sle_pwd.text then

messagebox("error","密码输入错误") else

open(jsmain)

close(winlogin)

return

end if

end if

(2)在“取消”中加入代码:

close(parent)

设置一全局变量:

2、管理员模块

adminmain窗口类型设置为mdi!

(1)帐号维护

在菜单点击事件中加入代码:

opensheet(adminzhwh,parentwindow)

在窗口的open事件中加入代码:

dw_1.settransobject(sqlca)

dw_1.retrieve()

保存按钮中加入代码:

dw_1.update()

新增按钮中加入代码:

dw_1.insertrow(0)

删除按钮中加入代码:

integer row

row=dw_1.getrow()

if dw_1.getitemstring(row,"glh")=user then

messagebox("error","不能删除本人帐号") else

dw_1.deleterow(0)

dw_1.update()

end if

退出按钮中加入代码:

close(parent)

(2)教师管理

删除按钮中加入代码:

dw_1.deleterow(0)

dw_1.update()

重置按钮中加入代码:

integer row

row=dw_1.getrow()

dw_1.setitem(row,"js_pwd","")

dw_1.enabled=true

(3)班级管理

(4)学生管理

(5)课程管理

(5)开课管理

新增按钮中加入代码:

insert into jsk(kch,jsh,bjh)

values(:ddlb_1.text,:ddlb_2.text,:ddlb_3.text); if sqlca.sqlcode0 then

messagebox("erreor",sqlca.sqlerrtext)

end if

dw_1.retrieve()

此窗口open时间中加入代码:

dw_1.settransobject(sqlca)

dw_1.retrieve()

string kk,kk1,kk2

declare cursor_kk cursor for

select kch

from kc;

open cursor_kk;

do while true

fetch cursor_kk into :kk;

if sqlca.sqlcode = 100 or sqlca.sqlcode = -1 then exit

end if

ddlb_1.additem(kk)

loop

close cursor_kk;

declare cursor_kk1 cursor for

select jsh

from js;

open cursor_kk1;

do while true

fetch cursor_kk1 into :kk1;

if sqlca.sqlcode = 100 or sqlca.sqlcode = -1 then exit

end if

ddlb_2.additem(kk1)

loop

close cursor_kk1;

declare cursor_kk2 cursor for

select bjh

from bj;

open cursor_kk2;

do while true

fetch cursor_kk2 into :kk2;

if sqlca.sqlcode = 100 or sqlca.sqlcode = -1 then exit

end if

ddlb_3.additem(kk2)

loop

close cursor_kk2;

3、教师模块

(1) 学生管理

新建实例变量:

窗口open事件中加入代码:

st_1.text=user+"号教师,欢迎您"

dw_1.settransobject(sqlca)

dw_1.retrieve()

insert_bool=false

delete_bool=false

update_bool=false

declare cursor_xs cursor for

select bjm

from bj;

open cursor_xs;

do while true

fetch cursor_xs into :cursor_class;

if sqlca.sqlcode = 100 or sqlca.sqlcode = -1 then exit

end if

loop

close cursor_xs;

修改按钮中加入代码:

dw_1.update()

新增按钮中加入代码:

integer i

dw_1.scrolltorow(dw_1.insertrow(dw_1.rowcount() + 1)) for i=1 to dw_1.rowcount()

dw_1.selectrow(i,false)

next

dw_1.selectrow(dw_1.rowcount(),true)

删除按钮中加入代码:

dw_1.deleterow(0)

dw_1.update()

按学号升序按钮中加入代码:

dw_1.setsort("xh A")

dw_1.sort()

按学号降序按钮中加入代码: dw_1.setsort("xh D") dw_1.sort()

(2) 成绩输入

在窗口的open事件中加入代码:

st_4.text=user+"号教师,欢迎您"

dw_1.settransobject(sqlca)

dw_1.retrieve()

string temp

declare mycur cursor for

select kcm

from kc,jsk

where jsh=:user and kc.kch=jsk.kch;

do while true

fetch mycur into :temp;

if sqlca.sqlcode0 then exit

ddlb_2.additem(temp)

loop

close mycur;

string temp1

declare mycur1 cursor for

select xh

from xs;

open mycur1;

do while true

fetch mycur1 into :temp1;

if sqlca.sqlcode0 then exit

ddlb_1.additem(temp1)

loop

close mycur1;

在修改按钮中加入代码:

string kcno,xh

select kc.kch into :kcno

from kc,jsk

where kcm=:ddlb_2.text and jsh=:user and kc.kch=jsk.kch; if kcno="" then

messagebox("error","您没有修改权限")

end if

integer score

score=integer(sle_1.text)

update cj

set cj=:score,xh=:ddlb_1.text

where kch=:kcno

and xh=:ddlb_1.text;

dw_1.retrieve()

在新增按钮中加入代码:

string kcno,xscj,xsno,kcmz

select kc.kch,kcm into :kcno,:kcmz

from kc,jsk

where kcm=:ddlb_2.text and jsh=:user and kc.kch=jsk.kch; if kcno="" then

messagebox("error","您没有新增权限")

end if

integer score

if trim(sle_1.text)="" then

messagebox("出错","成绩不能为空")

else

score=integer(sle_1.text)

select cj into :xscj

from cj

where xh=:ddlb_1.text and kch=:kcno;

select xh into :xsno

from cj

where kch=:kcno and cj=:score;

if ddlb_1.text=xsno and ddlb_2.text=kcmz and sle_1.text=xscj then messagebox("error","不能重复输入")

end if

insert into cj(xh,cj,kch)

values(:ddlb_1.text,:score,:kcno);

end if

if sqlca.sqlcode0 then

messagebox("erreor",sqlca.sqlerrtext)

end if

dw_1.retrieve()

在删除按钮中加入代码:

string kcno

select kc.kch into :kcno

from kc,jsk

where kcm=:ddlb_2.text and jsh=:user and kc.kch=jsk.kch; if kcno="" then

messagebox("error","您没有权限删除")

end if

delete from cj

where xh=:ddlb_1.text and kch=:kcno;

if sqlca.sqlcode0 then

messagebox("erreor",sqlca.sqlerrtext)

end if

dw_1.retrieve()

(3) 个人信息修改

在窗口的open事件中加入代码:

st_7.text=user+"号教师,欢迎您"

string name,xb,bz

select jsm,js_xb,js_bz into :name,:xb,:bz

from js

where jsh=:user;

sle_1.text=name

mle_1.text=bz

if xb="男" then

rb_1.checked=true

else

rb_2.checked=true

end if

cb-1修改按钮中加入代码:

string sex

if rb_1.checked=true then

sex="男"

else

sex="女"

end if

update js

set jsm=:sle_1.text,js_xb=:sex,js_bz=:mle_1.text

where jsh=:user;

if sqlca.sqlcode 0 then

messagebox("错误提示",sqlca.sqlerrtext)

else

messagebox("成功提示","修改成功")

end if

在cb-2重置按钮中加入代码:

sle_1.text=""

mle_1.text=""

sle_1.enabled=true

mle_1.enabled=true

cb-3修改按钮中加入代码:

string temp

select js_pwd into :temp

from js where

jsh=:user and js_pwd=:sle_3.text;

if sqlca.sqlcode0 then

messagebox("error","原密码不正确!")

return

end if

if sle_4.textsle_5.text then

messagebox("error","新密码输入不一致!")

return

end if

update js

set js_pwd=:sle_4.text

where jsh=:user;

if sqlca.sqlcode=0 then

messagebox("成功提示","修改成功")

end if

在cb-4重置按钮中加入代码:

sle_3.text=""

sle_4.text=""

sle_5.text=""

sle_3.enabled=true

sle_4.enabled=true

sle_5.enabled=true

在cb-5退出按钮中加入代码:

close(parent)

4、学生模块

(1) 成绩查询

窗口open事件中加入代码:

st_1.text=user+"号学生,欢迎你"

dw_1.settransobject(sqlca)

dw_1.retrieve(user)

查询按钮代码如下:

if sle_1.text"" and cbx_1.checked=false then

dw_1.setfilter("kc_kcm='"+sle_1.text+"'")

elseif sle_1.text"" and cbx_1.checked=true then

dw_1.setfilter("kc_kcm like'%"+sle_1.text+"%'")

else

dw_1.setfilter("")

end if

dw_1.filter()

在退出按钮中加入代码:

if messagebox("确定关闭","确定关闭",StopSign!,OKCancel! )=1 then close(parent)

end if

(2) 课程选修

新建一实例变量:

在窗口的open事件中加入代码:

st_2.text=user+"号学生,欢迎你"

dw_1.settransobject(sqlca)

dw_1.retrieve()

declare cursor_xk cursor for

select kch

from kc;

open cursor_xk;

do while true

fetch cursor_xk into :xk;

if sqlca.sqlcode = 100 or sqlca.sqlcode = -1 then exit

end if

ddlb_1.additem(xk)

loop

close cursor_xk;

确定按钮中加入代码:

string temp

select kch into :temp

from cj

where xh=:user and kch=:ddlb_1.text; if sqlca.sqlcode = 0 then

messagebox("错误提示","你已经选择过该课程") elseif sqlca.sqlcode = 100 then

insert into cj(xh,kch)

values(:user,:ddlb_1.text);

if sqlca.sqlcode 0 then

messagebox("错误提示",sqlca.sqlerrtext) else

messagebox("成功","插入成功")

end if

end if

退选按钮中加入代码:

string temp_cj

select cj into :temp_cj

from cj

where xh=:user and kch=:ddlb_1.text; if isnull(temp_cj) = true then

if sqlca.sqlcode = 0 then

delete from cj

where xh=:user and kch=:ddlb_1.text; if sqlca.sqlcode 0 then

messagebox("错误提示2",sqlca.sqlerrtext) else

messagebox("成功","退选成功") end if

elseif sqlca.sqlcode = 100 then

messagebox("错误提示","你未选择过该课程") end if

else

messagebox("错误提示","已经有成绩不能删除") end if

(3) 个人成绩修改

在窗口的open事件中加入代码:

st_7.text=user+"号学生,欢迎你"

string name,xsb,bj

select xm,xb,bjh into :name,:xsb,:bj

from xs

where xh=:user;

sle_1.text=name

sle_2.text=bj

if xsb="男" then

rb_1.checked=true

else

rb_2.checked=true

end if

cb-1修改按钮中加入代码:

string sex

if rb_1.checked=true then

sex="男"

else

sex="女"

end if

update xs

set xm=:sle_1.text,xb=:sex,bjh=:sle_2.text where xh=:user;

if sqlca.sqlcode 0 then

messagebox("错误提示",sqlca.sqlerrtext) else

messagebox("成功提示","修改成功") end if

cb-2重置按钮中加入代码:

sle_1.text=""

sle_2.text=""

sle_1.enabled=true

sle_2.enabled=true

cb-3修改按钮中加入代码:

string temp

select xs_pwd into :temp

from xs where

xh=:user and xs_pwd=:sle_3.text;

if sqlca.sqlcode0 then

messagebox("error","原密码不正确!") return

end if

if sle_4.textsle_5.text then

messagebox("error","新密码输入不一致!") return

end if

update xs

set xs_pwd=:sle_4.text

where xh=:user;

if sqlca.sqlcode=0 then

messagebox("成功提示","修改成功")

end if

cb-4重置按钮中加入代码:

sle_3.text=""

sle_4.text=""

sle_5.text=""

sle_3.enabled=true

sle_4.enabled=true

sle_5.enabled=true

在退出按钮中加入代码:

close(parent)

五、 心得体会

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.回顾起此次数据库开发课程设计之学生成绩管理系统,我仍感慨颇多,的确,从构思到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为日后的工作服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次自己做的综合性系统,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说游标的具体使用,全局变量、实例变量的使用,单步调试的使用„„把这个问题解决了,另一个新的问题又来了。这不能不说是对知识的欠缺。通过这次的程序设计,我懂得了无论什么事都要去做才会发现问题,才有可能去解决问题。对知识的学习,不能潜偿辄止,要深入去学习,去了解,这样才会有所收获。有许多东西,许多事,不是想像中的那么容易,不去实践,永远也不会有提高,尤其是学习计算机,不能只是学习和重视书本上的理论知识,所以日后在学习过程中,我会更加注视实践操作。我也深刻感受到,一定把以前所学过的知识好好地温故以知新。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,但都在陈胜凯老师的耐心指导下解决了。

这个设计虽然没有毕业设计那么繁杂和困难,但给我毕业设计和毕业以后的工作打下了基础。什么事都不是那么容易的,有了这一点点的困难做基础,让我深深的明白以后的工作将会是那么的困难,所以说这次课程设计在很大意义上给了我良好的启示。


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn