PB课程设计学生选课管理系统.doc

上传人:文库蛋蛋多 文档编号:2396030 上传时间:2023-02-17 格式:DOC 页数:21 大小:7.90MB
返回 下载 相关 举报
PB课程设计学生选课管理系统.doc_第1页
第1页 / 共21页
PB课程设计学生选课管理系统.doc_第2页
第2页 / 共21页
PB课程设计学生选课管理系统.doc_第3页
第3页 / 共21页
PB课程设计学生选课管理系统.doc_第4页
第4页 / 共21页
PB课程设计学生选课管理系统.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《PB课程设计学生选课管理系统.doc》由会员分享,可在线阅读,更多相关《PB课程设计学生选课管理系统.doc(21页珍藏版)》请在三一办公上搜索。

1、课程名称: PowerBuilder10.5程序设计基础 设计题目: 学生选课管理系统 专 业:信息与计算科学 班级: 信122 姓 名: 学号:2012314203指导教师: 河北建筑工程学院数理系 2015年 1月课程设计题目(问题)描述现代的社会是信息化的社会,信息无所不在。在生产领域、流通领域、各个部门每天都和信息打交道,如何处理如此多的信息成为了一个重要的课题。学生在学期开始选课是教学活动中的一个重要环节,该环节如果能管理好,它不仅能加快学生的选课速度,也提高了整个教学活动的效率。 大学一般都有上万名学生,每学期开始学生都要选课,因而产生了大量的课程信息。通过学习powerbuild

2、er10.5程序设计基础,利用powerbuilder10.5软件开发学生选课管理系统程序。考虑到用户使用的方便和处理的信息量系统要完成录入,保存,查询,修改和删除课程信息的各种过程,所以系统的基本体系结构采用C/S模式。以便能够使学生更好的完成选课,让老师更好的完成管理。本 组 成 员 情 况姓 名学号承 担 的 任 务成 绩崔永翠2012314202登陆界面、密码修改、窗口管理、查询子窗口的创建、设计、属性的设置,并编写相应的脚本、调试。郭倩2012314203数据库的建立与连接,查询子窗口,数据管理子系统的创建、设计、属性的设置,并编写相应的脚本、调试教 师 评 语签名: 一、本 组 设

3、 计 的 功 能 描 述学生选课管理系统功能如下:教师功能:1)对学生成绩的录入2)对课程信息的管理:添加、删除、刷新、查找以及数据的恢复和修改、另存为等等3)对学生信息的管理:添加、删除、查找、刷新以及数据的恢复4)密码的修改学生功能1)课程信息的查询2)个人信息的查看3)个人成绩的查询4)选课退课的实现5)密码的修改 二、本 组 设 计 的 主 要 特 色菜单是在窗口中与用户直接接触的一个重要对象,菜单必须依附于窗口,除了子窗口和响应窗口外,其他类型的窗口都可以带有菜单。窗口是应用程序的图形用户界面的基本元素,其他的应用程序组件往往是通过窗口联系起来的,所以对于一个应用程序来说,创建窗口对

4、象是极其基本的一步工作。继承是面向对象编程的一个重要概念,它是自动共享各个类、子类中的方法和数据的有效机制。作为过程式系统所没有的一个有力机制,继承使得我们可以通过从父类中继承公共方法和数据,进而通过添加新的数据和方法定义一个新的类。在此程序设计中,设计了一些窗口和数据窗口,还有2个菜单对象。数据窗口的显示风格是Grid和freedom,数据源类型有Quick Select,SQL Select等。在生成数据窗口时,还定义了String型检索参数变量来分别表示其中的内容,在数据窗口中还改变了一些控件的编辑风格和属性并在其中添加了图片控件和文本控件。在设计窗口时,用到了窗口直接创建的方法,减少了

5、与其他窗口的关联,创建窗口或者窗口有所改变后不会影响其他的窗口,各自保持相互独立性。三、系 统 分 析 与 设 计3.1业务流程分析1)学生选课前要登录系统,查看所有课程的详细信息,包括课程代号、授课教师、教室、上课时间、学分、剩余名额等。根据课程代号,学生可以查询相应的课程,并添加课程(即选课)。并能发现是否存在冲突课程,如果存在,可以删除该课程,并重新选择。最后所有课程无冲突之后完成选课。学生选课的数据基本流程如图所示老师首先也要登录系统,完成对已选课程信息的查询,以及对学生成绩的录入,对学生个人信息情况的浏览等等操作,更好的完成学生选课后的工作。3.2各部分功能简要说明1、w_login

6、登录窗口1)“登录”代码:String xusername,xpassword,ls_username,ls_password,xl_js,xl_xsxusername=Trim(sle_1.Text)xpassword=Trim(sle_2.Text)xl_js=教师xl_xs=学生if sle_1.text= or sle_2.text= thenmessagebox(错误!,用户名或密码不能为空!)elseif rb_1.checked = true then SELECT 用户名,密码 INTO :ls_username,:ls_password FROM 登录表 WHERE (用户名

7、 = :xusername ) AND (密码 = :xpassword ) AND (权限代号 = :xl_js); if xusername=trim(ls_username) and xpassword=trim(ls_password) then messagebox(通过验证!,用户名和密码正确,欢迎您使用本系统!)open(w_login1) close(w_login) else messagebox(错误!,用户名或密码错误,请重新输入!) end ifelseif rb_2.checked=true then SELECT 用户名,密码 INTO :ls_username,:

8、ls_password FROM 登录表 WHERE (用户名 = :xusername ) AND (密码 = :xpassword ) AND (权限代号 = :xl_xs); if xusername=trim(ls_username) and xpassword=trim(ls_password) then messagebox(通过验证!,用户名和密码正确,欢迎您使用本系统!) gs_xh = trim(ls_username) as_name=trim(ls_username) open(w_login2) close(w_login) else messagebox(错误!,用户

9、名或密码错误,请重新输入!) end if end if end if2)“退出”代码:close(w_login)3)“帮助”代码:open(w_bz)“帮助”即为登陆者答疑解惑,图示如下:2主菜单(此系统分教师和学生登录两部分)不同的菜单界面如下:教师菜单界面:学生菜单界面:3.老师菜单下的功能1)课程信息管理A.“添加”代码:int g1g1=dw_1.InsertRow(0)dw_1.ScrollToRow(g1)B.“删除”代码:dw_1.DeleteRow(0)C.“保存修改”代码:if messagebox(提示信息,是否保存修改?,Question!,YesNo!,1)=1 t

10、hendw_1.update()messagebox(提示信息,保存完成)else messagebox(提示信息,保存失败)end ifD.“另存为”代码:dw_1.SaveAs()E.“刷新”代码:dw_1.retrieve()F.“退出”代码:close(jsckggxxkcxxb)G.“查询”代码:string ls_course_id,ls_course_name/变量定义ls_course_id=sle_course_id.textls_course_name=sle_course_name.textif sle_course_id.text= and sle_course_nam

11、e.text= thenmessagebox(提示信息,请输入课程代码或者课程名称) elseif sle_course_id.text and sle_course_name.text= thendw_1.setfilter(kcdh=+ls_course_id+ )dw_1.filter()elseif sle_course_name.text and sle_course_id.text= thendw_1.setfilter(kcmc=+ls_course_name+ )dw_1.filter()elseif sle_course_id.text and sle_course_name

12、.text thendw_1.setfilter(kcmc=+ls_course_name+ and kcdh=+ls_course_id+ )dw_1.filter()end ifH.“显示全部”代码:dw_1.setfilter()dw_1.filter()与之相连的数据窗口:2)学生信息管理A.“查找”代码:string ls_stu_id,ls_stu_name/变量定义ls_stu_id=sle_8.textls_stu_name=sle_9.textif sle_8.text= and sle_9.text= thenmessagebox(提示信息,请输入学号或者姓名) elsei

13、f sle_8.text and sle_9.text= thendw_1.setfilter(xh=+ls_stu_id+ )dw_1.filter()elseif sle_9.text and sle_8.text= thendw_1.setfilter(xm=+ls_stu_name+ )dw_1.filter()elseif sle_8.text and sle_9.text thendw_1.setfilter(xm=+ls_stu_name+ and xh=+ls_stu_id+ )dw_1.filter()end ifB.“显示全部”代码:dw_1.setfilter()dw_1

14、.filter()C.“刷新数据”代码:dw_1.retrieve()D.“添加”代码:if(sle_1.text= or sle_2.text= or sle_3.text= or sle_4.text= or sle_5.text= or sle_6.text= or sle_7.text=) thenmessagebox(提示信息,信息未填完整)else if messagebox(提示信息,是否添加此学生?,Question!,YesNo!,1)=1 theninsert into 学生基本信息表(学生基本信息表.xh,学生基本信息表.xm,学生基本信息表.xb,学生基本信息表.bj,

15、学生基本信息表.zy,学生基本信息表.zzmm,学生基本信息表.zw)values(:sle_1.text,:sle_2.text,:sle_3.text,:sle_4.text,:sle_5.text,:sle_6.text,:sle_7.text);commit;messagebox(提示信息,添加完成) else messagebox(提示信息,添加失败) end ifend ifE.“删除”代码:dw_1.DeleteRow(0)F.“修改”代码:if messagebox(提示信息,是否保存修改?,Question!,YesNo!,1)=1 thendw_1.update()mess

16、agebox(提示信息,保存完成)else messagebox(提示信息,保存失败)end ifG.“退出”代码:close(w_xsxxgl)与之相连的数据窗口:3)成绩录入“保存”代码:if messagebox(提示信息,是否保存录入?,Question!,YesNo!,1)=1 thendw_1.update()messagebox(提示信息,保存完成)else messagebox(提示信息,保存失败)end if“退出”代码:close(w_cjlr)与之相连的数据窗口:4)修改密码:“确认”代码:string ll_password,ll_passwordold,ll_user

17、name,ll_usernameoldll_password=trim(sle_1.text)Select 密码into :ll_passwordoldFrom 登录表where 密码=:ll_password;if trim(sle_1.text)trim(ll_passwordold)thenmessagebox(提示,原密码错误)else if trim(sle_2.text)=(sle_3.text) then ll_password=trim(sle_2.text) UPDATE 登录表 SET 密码 = :ll_password WHERE (密码 = :ll_passwordol

18、d); if sqlca.sqlcode0 then messagebox(提示,密码修改不成功)elseclose(parent)messagebox(提示,密码修改完成)end ifelse messagebox(提示,两次密码不相同)end if end if4.学生菜单下的功能1)课程查询A.“查找”代码:string ss=sle_1.textchoose case ddlb_1.textcase 课程代号dw_1.setfilter(kcdh=+sle_1.text+)dw_1.filter()case 课程名称dw_1.setfilter(kcmc=+sle_1.text+)en

19、d choosedw_1.retrieve()B.选课按钮即连接选课功能的窗口,使之能较快的跳转至“选课”界面。代码为:open(w_xsxk)C.“确定”代码:close(w_xsckkcxx)与之相连的数据窗口:2)查看个人信息“确定”代码:close(w_xsgrxx)与之相连的数据窗口:3)查询成绩“确定”代码:close(w_cjck)与之相连的数据窗口:4)选课退课A.查找或预览要选择的课程,相应代码:string as_dhas_dh=trim(ddlb_1.text)if as_dh= then messagebox(提示,请输入正确的查询条件!)elsedw_1.retrie

20、ve(as_dh)end ifB.其次进入选课阶段,代码:int li_sqlca=0int rntstring user_name,cour_no,student_no,cour_name,cour_sel_leastnornt=messagebox(注意!,你是否确定选择该课程?,Information!,YesNo! )if rnt = 1 and ddlb_1.text then /根据登录的用户名,检索出用户的学号 SELECT 登录表.学号 INTO :student_no FROM 登录表 WHERE ( 登录表.用户名 = :as_name ); li_sqlca=li_sql

21、ca+sqlca.sqlcode;/查询选课信息表,看是否此学生已经选择这门课程 SELECT 选课信息表.kcdh INTO :cour_no FROM 选课信息表 WHERE ( 选课信息表.xh = :student_no) AND ( 选课信息表.kcdh= :ddlb_1.text ) ; /li_sqlca=li_sqlca+sqlca.sqlcode; SELECT 公共选修课程信息表.syme INTO :cour_sel_leastno FROM 公共选修课程信息表, 选课信息表 WHERE ( 公共选修课程信息表.kcdh = 选课信息表.kcdh ) and ( ( 公共

22、选修课程信息表.kcdh = :ddlb_1.text ) ) ;li_sqlca=li_sqlca+sqlca.sqlcode; if cour_no thenmessagebox(提示,你已经选择过此门课程) elseif cour_sel_leastno =0 then messagebox(提示,该课程的剩余名额为0,请选择其他课程!)else /插入用户选择课程到stu_select表 INSERT INTO 选课信息表2 ( xh, xm, kcdh ) VALUES ( :student_no, :as_name , :ddlb_1.text); / messagebox(提示,

23、恭喜你,添加课程成功!); li_sqlca=li_sqlca+sqlca.sqlcode; /学生选定该课程后,在该课程的剩余名额中减少一人 int li_number li_number=integer(cour_sel_leastno) - 1 UPDATE 公共选修课程信息表 SET syme = :li_numberwhere 公共选修课程信息表.kcdh=:ddlb_1.text;li_sqlca=li_sqlca+sqlca.sqlcode; if li_sqlca=0 thencommit;messagebox(提示,恭喜你,添加课程成功!);elserollback;mess

24、agebox(提示,很遗憾,添加课程失败!);end ifend ifelseif ddlb_1.text= then messagebox(提示,你还没有选课!)end ifC.选择完课程后可以浏览自己的选课情况,相应代码如下:open(dw_tuike)close(w_xsxk2)D.浏览完毕此页,即点击确定退出,相应代码:close(w_xsxk2)与选课相连的数据窗口:在浏览自己选课情况时如有需要也可以完成退课E.“退课”代码:int ll_sqlca=0string ls_kcdh,cour_sel_leastno select kcdhinto :ls_kcdhfrom 选课信息表

25、2where xm=:as_name;ll_sqlca=ll_sqlca+sqlca.sqlcode SELECT 公共选修课程信息表.syme INTO :cour_sel_leastno FROM 公共选修课程信息表 WHERE kcdh=:ls_kcdh;ll_sqlca=ll_sqlca+sqlca.sqlcodeint li_renshuli_renshu=integer(cour_sel_leastno )+1 update 公共选修课程信息表 set syme=:li_renshuwhere kcdh=:ls_kcdh;ll_sqlca=ll_sqlca+sqlca.sqlcod

26、edelete from 选课信息表2where xm=:as_name;ll_sqlca=ll_sqlca+sqlca.sqlcodeif ll_sqlca=0 then commit;messagebox(提示,恭喜你,退课成功!)dw_1.settransobject(sqlca)dw_1.retrieve()dw_1.setfilter(xm=+as_name+)dw_1.filter()elserollback;messagebox(提示,不好意思,退课失败!)end if与之相连的数据窗口:5)密码修改学生修改密码同老师相同,相应密码同上四、系 统 调 试 出 现 的 问 题 及

27、解 决 情 况1.学生按照各自的用户名登陆之后查询自己成绩或者个人信息无法显示,始终显示表中第一个人的信息。如下图(用户名为“崔永翠”,显示的却为表中第一个人的信息)解决方法:询问老师得知在登录时没有根据用户名检索到相关的个人身份信息,通过在数据窗口中做相应的操作以及定义全局变量之后问题得以解决,可以根据登陆者的用户名查询到相关信息。改正后:2.选课按钮下的代码正确,但是学生选课后的数据无法更新到相应的表中。(在程序运行中以及显示“选课成功”,但是表中未更新。如下图)解决方法:通过咨询以及请教同学,得知代码中存在缺陷,确实相应更新的内容,补充相应的代码后功能得以实现。改正后:3开始在登录时无论

28、老师还是学生选择任意一个身份按钮后都可以进入系统。如下图(“崔永翠”为学生身份,点击教师按钮也可以登录系统)解决方法:请教咨询以及查询书籍得知在登录按钮下的代码中没有限定登陆者的权限,添加限定以及改正后程序得以正确运行。改正后:4简单代码编写错误解决方法:认真检查后改正。改正后:五、系统运行报告(测试的结果)学生选课管理系统运行结果如下:登录之后会出现用户准则:教师功能运行:1.课程信息管理1)查询(输入“课程代号”、“课程名称”中的任意一个或者输入两个都可以查到相应的课程。如下图)2)显示全部3)刷新顺序4)添加5)删除6)另存为2学生信息管理1)查找(输入姓名、学号中的一个或者输入两个都查

29、找到相应的个人信息,如下图)2)显示全部3)顺序数据顺序4)添加(添加后刷新数据即会在表中显示添加之人)5)删除(删除之后保存修改即会删除此人)3成绩录入学生功能运行1.课程信息查询2.个人信息查询3.个人成绩查询4选课5.查看选课情况6.退课7密码修改 六总 结学生选课管理系统是我和同伴在PB课程设计期间完成,编写耗时一周。程序虽然可以正常运行,但难免有些不近人意之处,虽然实现的只是普通简单的功能,但是对于从事程序编写工作不多并且水平和时间有限的我们来说,还是觉得无比欣慰,我相信,这是我们成功的良好开端,在今后的学习过程中一定会取得更大的进步。在此次设计的过程中我们遇到了各种各样的麻烦,焦头

30、烂额,曾经一度想要放弃,但是烦躁之后我们还是依然的决定继续坚持下去。我们通过请教老师和同学以及查阅相关书籍的方式来解决我们编写过程中的麻烦,最后终于在我们的辛勤努力下完成了我们的学生选课管理系统的课程设计。通过对该系统的设计、开发和调试,一方面让我熟悉了数据库的使用方法,另一方面,让我熟练掌握了PowerBuilder开发工具的使用方法,熟悉了窗口、菜单以及一些可视化控件的使用方法。通过使用还了解到窗口对象、数据窗口对象、各类控件的属性与方法。建立一个工作空间以及应用是必要的。窗口是应用程序的图形用户界面的基本元素,其他的应用程序组件往往是通过窗口联系起来的,所以对于一个应用程序来说,创建窗口对象是极其基本的一步工作。菜单是在窗口中与用户直接接触的一个重要对象,菜单必须依附于窗口。此次课程设计使我增长了不少知识,数据库与PB的结合使设计更加的完美。此次设计旨在回归课本,通过这次设计也确实加深了我们对课本知识的了解,同时也认识到了自己知识的欠缺与不足。这次设计,我感觉到了通过自己的努力设计一个系统是如此的优越,不得不说计算机是神奇的,它能把许许多多的不可能变成现实。最后我要感谢所有给与我们帮助的老师以及同学!在今后的学习道路上我一定会再接再厉,争取更大的成功!

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号