数据库应用开发课程设计报告.doc

上传人:仙人指路1688 文档编号:2395494 上传时间:2023-02-17 格式:DOC 页数:31 大小:13.18MB
返回 下载 相关 举报
数据库应用开发课程设计报告.doc_第1页
第1页 / 共31页
数据库应用开发课程设计报告.doc_第2页
第2页 / 共31页
数据库应用开发课程设计报告.doc_第3页
第3页 / 共31页
数据库应用开发课程设计报告.doc_第4页
第4页 / 共31页
数据库应用开发课程设计报告.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《数据库应用开发课程设计报告.doc》由会员分享,可在线阅读,更多相关《数据库应用开发课程设计报告.doc(31页珍藏版)》请在三一办公上搜索。

1、课程设计报告院 系: 城市学院 专 业: 计算机应用 课 程: 数据库应用开发 2009年 5 月 21 日一、 需求分析 数据库应用系统的设计与开发一直以来都是计算机应用的重要应用领域之一。在该应用领域中,PowerBuilder无疑是具有相当代表性的一种数据库前端开发工具。PowerBuilder完全基于客户/服务器体系结构,并且采用面向对象和可视化开发技术。另外,随着其自身的多次升级换代,PowerBuilder的功能也在不断强大,因此它除了可以设计传统的基于客户/服务器体系结构的应用之外,也能够构建和实现分布式系统的应用。该项目主要是服务于教学方面,进一步方便教师的工作和学生的学习,从

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

3、次之,学生最少。二、 模块功能分析本次实验主要模块及功能分别为:管理员模块,功能:管理员账号维护,班级管理,教师管理,(学生管理),课程管理,(开课管理)。教师模块,功能:(学生管理) ,成绩输入,个人信息修改,密码管理。学生模块,功能:成绩查询,课程选修,个人信息修改,密码管理。 (开课管理模块,意味着某名教师只能输入其执教班级的成绩,课程选修模块,则在学生未选修课程前教师不能输入成绩。)三、 数据库表结构1.学生表xs字段名字段类型字段说明xhChar(6)学生学号(主键)xmvarchar(8)姓名xbChar(2)性别bjhchar(6)班级号xs_pwdChar(16)登录密码2教师

4、表js字段名字段类型字段说明jshChar(6)教师号(主键)jsmVarchar(16)教师名js_pwdvarChar(16)登陆密码js_bzvarChar(16)备注js_xbChar(4)性别3.管理员表gl字段名字段类型字段说明glhChar(6)管理员号(主键)gl_pwdvarChar(16)登陆密码4.成绩表cj字段名字段类型字段说明xhChar(6)学号(主键)cj整型成绩kchchar(6)课程号(主键)5.课程表kc字段名字段类型字段说明kchChar(6)课程号(主键)kcmchar(16)课程名6班级表bj字段名字段类型字段说明bjhChar(6)班级号(主键)bj

5、mchar(16)班级名7.教师开课表jsk字段名字段类型字段说明kchChar(6)课程号(主键)jshchar(6)教师号bjhchar(6)班级号(主键)关系视图四、 详细模块界面、代码及注释1、登陆界面(1) 在“登陆”中加入代码:user=sle_user.textstring temp,temp1temp=temp1=if ddlb_role.text= thenmessagebox(error,请选择登陆身份)end ifif ddlb_role.text=管理员 thenselect glh,gl_pwd into :temp,:temp1from glwhere glh=:s

6、le_user.text; if temp= thenmessagebox(error,没有该帐号) elseif temp1sle_pwd.text thenmessagebox(error,密码输入错误) elseopen(adminmain)close(winlogin)returnend ifend ifif ddlb_role.text=学生 thenselect xh,xs_pwd into :temp,:temp1from xswhere xh=:sle_user.text;if temp= thenmessagebox(error,没有该帐号) elseif temp1sle_

7、pwd.text thenmessagebox(error,密码输入错误) elseopen(xsmain)close(winlogin)returnend ifend ifif ddlb_role.text=教师 thenselect jsh,js_pwd into :temp,:temp1from jswhere jsh=:sle_user.text;if temp= thenmessagebox(error,没有该帐号)elseif temp1sle_pwd.text thenmessagebox(error,密码输入错误) elseopen(jsmain)close(winlogin)

8、returnend ifend 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 rowrow=dw_1.getrow()if dw_1.getitemstrin

9、g(row,glh)=user thenmessagebox(error,不能删除本人帐号)elsedw_1.deleterow(0)dw_1.update()end if退出按钮中加入代码:close(parent)(2)教师管理删除按钮中加入代码:dw_1.deleterow(0)dw_1.update()重置按钮中加入代码:integer rowrow=dw_1.getrow()dw_1.setitem(row,js_pwd,)dw_1.enabled=true(3)班级管理(4)学生管理(5)课程管理(5)开课管理新增按钮中加入代码:insert into jsk(kch,jsh,bj

10、h)values(:ddlb_1.text,:ddlb_2.text,:ddlb_3.text);if sqlca.sqlcode0 thenmessagebox(erreor,sqlca.sqlerrtext)end ifdw_1.retrieve()此窗口open时间中加入代码:dw_1.settransobject(sqlca)dw_1.retrieve()string kk,kk1,kk2declare cursor_kk cursor forselect kchfrom kc;open cursor_kk;do while truefetch cursor_kk into :kk;i

11、f sqlca.sqlcode = 100 or sqlca.sqlcode = -1 thenexitend ifddlb_1.additem(kk)loopclose cursor_kk;declare cursor_kk1 cursor forselect jshfrom js;open cursor_kk1;do while truefetch cursor_kk1 into :kk1;if sqlca.sqlcode = 100 or sqlca.sqlcode = -1 thenexitend ifddlb_2.additem(kk1)loopclose cursor_kk1;de

12、clare cursor_kk2 cursor forselect bjhfrom bj;open cursor_kk2;do while truefetch cursor_kk2 into :kk2;if sqlca.sqlcode = 100 or sqlca.sqlcode = -1 thenexitend ifddlb_3.additem(kk2)loopclose cursor_kk2;3、教师模块(1) 学生管理新建实例变量:窗口open事件中加入代码:st_1.text=user+号教师,欢迎您dw_1.settransobject(sqlca)dw_1.retrieve()in

13、sert_bool=falsedelete_bool=falseupdate_bool=falsedeclare cursor_xs cursor forselect bjmfrom bj;open cursor_xs;do while truefetch cursor_xs into :cursor_class;if sqlca.sqlcode = 100 or sqlca.sqlcode = -1 thenexitend ifloopclose cursor_xs;修改按钮中加入代码:dw_1.update()新增按钮中加入代码:integer idw_1.scrolltorow(dw_1

14、.insertrow(dw_1.rowcount() + 1)for i=1 to dw_1.rowcount()dw_1.selectrow(i,false)nextdw_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.settr

15、ansobject(sqlca)dw_1.retrieve()string tempdeclare mycur cursor forselect kcmfrom kc,jskwhere jsh=:user and kc.kch=jsk.kch;do while truefetch mycur into :temp;if sqlca.sqlcode0 then exitddlb_2.additem(temp)loopclose mycur;string temp1declare mycur1 cursor forselect xhfrom xs;open mycur1;do while true

16、fetch mycur1 into :temp1;if sqlca.sqlcode0 then exitddlb_1.additem(temp1)loopclose mycur1;在修改按钮中加入代码:string kcno,xhselect kc.kch into :kcnofrom kc,jskwhere kcm=:ddlb_2.text and jsh=:user and kc.kch=jsk.kch;if kcno= thenmessagebox(error,您没有修改权限)end ifinteger scorescore=integer(sle_1.text)update cjset

17、 cj=:score,xh=:ddlb_1.textwhere kch=:kcnoand xh=:ddlb_1.text;dw_1.retrieve()在新增按钮中加入代码:string kcno,xscj,xsno,kcmzselect kc.kch,kcm into :kcno,:kcmzfrom kc,jskwhere kcm=:ddlb_2.text and jsh=:user and kc.kch=jsk.kch;if kcno= thenmessagebox(error,您没有新增权限)end ifinteger scoreif trim(sle_1.text)= then mes

18、sagebox(出错,成绩不能为空)elsescore=integer(sle_1.text)select cj into :xscjfrom cjwhere xh=:ddlb_1.text and kch=:kcno;select xh into :xsnofrom cjwhere kch=:kcno and cj=:score;if ddlb_1.text=xsno and ddlb_2.text=kcmz and sle_1.text=xscj then messagebox(error,不能重复输入)end ifinsert into cj(xh,cj,kch)values(:ddlb

19、_1.text,:score,:kcno);end if if sqlca.sqlcode0 thenmessagebox(erreor,sqlca.sqlerrtext)end ifdw_1.retrieve()在删除按钮中加入代码:string kcnoselect kc.kch into :kcnofrom kc,jskwhere kcm=:ddlb_2.text and jsh=:user and kc.kch=jsk.kch;if kcno= thenmessagebox(error,您没有权限删除)end ifdelete from cjwhere xh=:ddlb_1.text

20、and kch=:kcno;if sqlca.sqlcode0 thenmessagebox(erreor,sqlca.sqlerrtext)end ifdw_1.retrieve()(3) 个人信息修改在窗口的open事件中加入代码:st_7.text=user+号教师,欢迎您string name,xb,bzselect jsm,js_xb,js_bz into :name,:xb,:bz from js where jsh=:user;sle_1.text=namemle_1.text=bzif xb=男 thenrb_1.checked=trueelserb_2.checked=tru

21、eend ifcb-1修改按钮中加入代码:string sexif rb_1.checked=true thensex=男elsesex=女end ifupdate jsset jsm=:sle_1.text,js_xb=:sex,js_bz=:mle_1.textwhere jsh=:user;if sqlca.sqlcode 0 thenmessagebox(错误提示,sqlca.sqlerrtext)elsemessagebox(成功提示,修改成功)end if在cb-2重置按钮中加入代码:sle_1.text=mle_1.text=sle_1.enabled=truemle_1.ena

22、bled=truecb-3修改按钮中加入代码:string tempselect js_pwd into :tempfrom js wherejsh=:user and js_pwd=:sle_3.text;if sqlca.sqlcode0 thenmessagebox(error,原密码不正确!)returnend ifif sle_4.textsle_5.text thenmessagebox(error,新密码输入不一致!)returnend ifupdate jsset js_pwd=:sle_4.textwhere jsh=:user;if sqlca.sqlcode=0 then

23、messagebox(成功提示,修改成功)end if在cb-4重置按钮中加入代码:sle_3.text=sle_4.text=sle_5.text=sle_3.enabled=truesle_4.enabled=truesle_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 t

24、hendw_1.setfilter(kc_kcm=+sle_1.text+)elseif sle_1.text and cbx_1.checked=true thendw_1.setfilter(kc_kcm like%+sle_1.text+%)else dw_1.setfilter()end ifdw_1.filter()在退出按钮中加入代码:if messagebox(确定关闭,确定关闭,StopSign!,OKCancel! )=1 thenclose(parent)end if(2) 课程选修新建一实例变量:在窗口的open事件中加入代码:st_2.text=user+号学生,欢迎你

25、dw_1.settransobject(sqlca)dw_1.retrieve()declare cursor_xk cursor forselect kchfrom kc;open cursor_xk;do while truefetch cursor_xk into :xk;if sqlca.sqlcode = 100 or sqlca.sqlcode = -1 thenexitend ifddlb_1.additem(xk)loopclose cursor_xk;确定按钮中加入代码:string tempselect kch into :tempfrom cjwhere xh=:user

26、 and kch=:ddlb_1.text;if sqlca.sqlcode = 0 thenmessagebox(错误提示,你已经选择过该课程)elseif sqlca.sqlcode = 100 theninsert into cj(xh,kch)values(:user,:ddlb_1.text);if sqlca.sqlcode 0 thenmessagebox(错误提示,sqlca.sqlerrtext)elsemessagebox(成功,插入成功)end ifend if退选按钮中加入代码:string temp_cjselect cj into :temp_cjfrom cjwh

27、ere xh=:user and kch=:ddlb_1.text;if isnull(temp_cj) = true thenif sqlca.sqlcode = 0 thendelete from cjwhere xh=:user and kch=:ddlb_1.text;if sqlca.sqlcode 0 thenmessagebox(错误提示2,sqlca.sqlerrtext)elsemessagebox(成功,退选成功)end ifelseif sqlca.sqlcode = 100 thenmessagebox(错误提示,你未选择过该课程)end ifelsemessagebo

28、x(错误提示,已经有成绩不能删除)end if(3) 个人成绩修改在窗口的open事件中加入代码:st_7.text=user+号学生,欢迎你string name,xsb,bjselect xm,xb,bjh into :name,:xsb,:bj from xs where xh=:user;sle_1.text=namesle_2.text=bjif xsb=男 thenrb_1.checked=trueelserb_2.checked=trueend ifcb-1修改按钮中加入代码:string sexif rb_1.checked=true thensex=男elsesex=女end

29、 ifupdate xsset xm=:sle_1.text,xb=:sex,bjh=:sle_2.textwhere xh=:user;if sqlca.sqlcode 0 thenmessagebox(错误提示,sqlca.sqlerrtext)elsemessagebox(成功提示,修改成功)end ifcb-2重置按钮中加入代码:sle_1.text=sle_2.text=sle_1.enabled=truesle_2.enabled=truecb-3修改按钮中加入代码:string tempselect xs_pwd into :tempfrom xs wherexh=:user a

30、nd xs_pwd=:sle_3.text;if sqlca.sqlcode0 thenmessagebox(error,原密码不正确!)returnend ifif sle_4.textsle_5.text thenmessagebox(error,新密码输入不一致!)returnend ifupdate xsset xs_pwd=:sle_4.textwhere xh=:user;if sqlca.sqlcode=0 thenmessagebox(成功提示,修改成功)end ifcb-4重置按钮中加入代码:sle_3.text=sle_4.text=sle_5.text=sle_3.ena

31、bled=truesle_4.enabled=truesle_5.enabled=true在退出按钮中加入代码:close(parent)五、 心得体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.回顾起此次数据库开发课程设计之学生成绩管理系统,我仍感慨颇多,的确,从构思到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是

32、远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为日后的工作服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次自己做的综合性系统,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说游标的具体使用,全局变量、实例变量的使用,单步调试的使用把这个问题解决了,另一个新的问题又来了。这不能不说是对知识的欠缺。通过这次的程序设计,我懂得了无论什么事都要去做才会发现问题,才有可能去解决问题。对知识的学习,不能潜偿辄止,要深入去学习,去了解,这样才会有所收获。有许多东西,许多事,不是想像中的那么容易,不去实践,永远也不会有提高,尤其是学习计算机,不能只是学习和重视书本上的理论知识,所以日后在学习过程中,我会更加注视实践操作。我也深刻感受到,一定把以前所学过的知识好好地温故以知新。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,但都在陈胜凯老师的耐心指导下解决了。这个设计虽然没有毕业设计那么繁杂和困难,但给我毕业设计和毕业以后的工作打下了基础。什么事都不是那么容易的,有了这一点点的困难做基础,让我深深的明白以后的工作将会是那么的困难,所以说这次课程设计在很大意义上给了我良好的启示。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号