欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

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

    • 资源ID:2396030       资源大小:7.90MB        全文页数:21页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    课程名称: PowerBuilder10.5程序设计基础 设计题目: 学生选课管理系统 专 业:信息与计算科学 班级: 信122 姓 名: 学号:2012314203指导教师: 河北建筑工程学院数理系 2015年 1月课程设计题目(问题)描述现代的社会是信息化的社会,信息无所不在。在生产领域、流通领域、各个部门每天都和信息打交道,如何处理如此多的信息成为了一个重要的课题。学生在学期开始选课是教学活动中的一个重要环节,该环节如果能管理好,它不仅能加快学生的选课速度,也提高了整个教学活动的效率。 大学一般都有上万名学生,每学期开始学生都要选课,因而产生了大量的课程信息。通过学习powerbuilder10.5程序设计基础,利用powerbuilder10.5软件开发学生选课管理系统程序。考虑到用户使用的方便和处理的信息量系统要完成录入,保存,查询,修改和删除课程信息的各种过程,所以系统的基本体系结构采用C/S模式。以便能够使学生更好的完成选课,让老师更好的完成管理。本 组 成 员 情 况姓 名学号承 担 的 任 务成 绩崔永翠2012314202登陆界面、密码修改、窗口管理、查询子窗口的创建、设计、属性的设置,并编写相应的脚本、调试。郭倩2012314203数据库的建立与连接,查询子窗口,数据管理子系统的创建、设计、属性的设置,并编写相应的脚本、调试教 师 评 语签名: 一、本 组 设 计 的 功 能 描 述学生选课管理系统功能如下:教师功能:1)对学生成绩的录入2)对课程信息的管理:添加、删除、刷新、查找以及数据的恢复和修改、另存为等等3)对学生信息的管理:添加、删除、查找、刷新以及数据的恢复4)密码的修改学生功能1)课程信息的查询2)个人信息的查看3)个人成绩的查询4)选课退课的实现5)密码的修改 二、本 组 设 计 的 主 要 特 色菜单是在窗口中与用户直接接触的一个重要对象,菜单必须依附于窗口,除了子窗口和响应窗口外,其他类型的窗口都可以带有菜单。窗口是应用程序的图形用户界面的基本元素,其他的应用程序组件往往是通过窗口联系起来的,所以对于一个应用程序来说,创建窗口对象是极其基本的一步工作。继承是面向对象编程的一个重要概念,它是自动共享各个类、子类中的方法和数据的有效机制。作为过程式系统所没有的一个有力机制,继承使得我们可以通过从父类中继承公共方法和数据,进而通过添加新的数据和方法定义一个新的类。在此程序设计中,设计了一些窗口和数据窗口,还有2个菜单对象。数据窗口的显示风格是Grid和freedom,数据源类型有Quick Select,SQL Select等。在生成数据窗口时,还定义了String型检索参数变量来分别表示其中的内容,在数据窗口中还改变了一些控件的编辑风格和属性并在其中添加了图片控件和文本控件。在设计窗口时,用到了窗口直接创建的方法,减少了与其他窗口的关联,创建窗口或者窗口有所改变后不会影响其他的窗口,各自保持相互独立性。三、系 统 分 析 与 设 计3.1业务流程分析1)学生选课前要登录系统,查看所有课程的详细信息,包括课程代号、授课教师、教室、上课时间、学分、剩余名额等。根据课程代号,学生可以查询相应的课程,并添加课程(即选课)。并能发现是否存在冲突课程,如果存在,可以删除该课程,并重新选择。最后所有课程无冲突之后完成选课。学生选课的数据基本流程如图所示老师首先也要登录系统,完成对已选课程信息的查询,以及对学生成绩的录入,对学生个人信息情况的浏览等等操作,更好的完成学生选课后的工作。3.2各部分功能简要说明1、w_login登录窗口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 (用户名 = :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,: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("错误!","用户名或密码错误,请重新输入!") 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 thendw_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_name.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.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("提示信息","请输入学号或者姓名") elseif 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.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,学生基本信息表.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()messagebox("提示信息","保存完成")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_username,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_passwordold); if sqlca.sqlcode<>0 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+"'")end 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.retrieve(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_sqlca+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 ( ( 公共选修课程信息表.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("提示","恭喜你,添加课程成功!"); 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;messagebox("提示","很遗憾,添加课程失败!");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 选课信息表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.sqlcodedelete 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)密码修改学生修改密码同老师相同,相应密码同上四、系 统 调 试 出 现 的 问 题 及 解 决 情 况1.学生按照各自的用户名登陆之后查询自己成绩或者个人信息无法显示,始终显示表中第一个人的信息。如下图(用户名为“崔永翠”,显示的却为表中第一个人的信息)解决方法:询问老师得知在登录时没有根据用户名检索到相关的个人身份信息,通过在数据窗口中做相应的操作以及定义全局变量之后问题得以解决,可以根据登陆者的用户名查询到相关信息。改正后:2.选课按钮下的代码正确,但是学生选课后的数据无法更新到相应的表中。(在程序运行中以及显示“选课成功”,但是表中未更新。如下图)解决方法:通过咨询以及请教同学,得知代码中存在缺陷,确实相应更新的内容,补充相应的代码后功能得以实现。改正后:3开始在登录时无论老师还是学生选择任意一个身份按钮后都可以进入系统。如下图(“崔永翠”为学生身份,点击教师按钮也可以登录系统)解决方法:请教咨询以及查询书籍得知在登录按钮下的代码中没有限定登陆者的权限,添加限定以及改正后程序得以正确运行。改正后:4简单代码编写错误解决方法:认真检查后改正。改正后:五、系统运行报告(测试的结果)学生选课管理系统运行结果如下:登录之后会出现用户准则:教师功能运行:1.课程信息管理1)查询(输入“课程代号”、“课程名称”中的任意一个或者输入两个都可以查到相应的课程。如下图)2)显示全部3)刷新顺序4)添加5)删除6)另存为2学生信息管理1)查找(输入姓名、学号中的一个或者输入两个都查找到相应的个人信息,如下图)2)显示全部3)顺序数据顺序4)添加(添加后刷新数据即会在表中显示添加之人)5)删除(删除之后保存修改即会删除此人)3成绩录入学生功能运行1.课程信息查询2.个人信息查询3.个人成绩查询4选课5.查看选课情况6.退课7密码修改 六总 结学生选课管理系统是我和同伴在PB课程设计期间完成,编写耗时一周。程序虽然可以正常运行,但难免有些不近人意之处,虽然实现的只是普通简单的功能,但是对于从事程序编写工作不多并且水平和时间有限的我们来说,还是觉得无比欣慰,我相信,这是我们成功的良好开端,在今后的学习过程中一定会取得更大的进步。在此次设计的过程中我们遇到了各种各样的麻烦,焦头烂额,曾经一度想要放弃,但是烦躁之后我们还是依然的决定继续坚持下去。我们通过请教老师和同学以及查阅相关书籍的方式来解决我们编写过程中的麻烦,最后终于在我们的辛勤努力下完成了我们的学生选课管理系统的课程设计。通过对该系统的设计、开发和调试,一方面让我熟悉了数据库的使用方法,另一方面,让我熟练掌握了PowerBuilder开发工具的使用方法,熟悉了窗口、菜单以及一些可视化控件的使用方法。通过使用还了解到窗口对象、数据窗口对象、各类控件的属性与方法。建立一个工作空间以及应用是必要的。窗口是应用程序的图形用户界面的基本元素,其他的应用程序组件往往是通过窗口联系起来的,所以对于一个应用程序来说,创建窗口对象是极其基本的一步工作。菜单是在窗口中与用户直接接触的一个重要对象,菜单必须依附于窗口。此次课程设计使我增长了不少知识,数据库与PB的结合使设计更加的完美。此次设计旨在回归课本,通过这次设计也确实加深了我们对课本知识的了解,同时也认识到了自己知识的欠缺与不足。这次设计,我感觉到了通过自己的努力设计一个系统是如此的优越,不得不说计算机是神奇的,它能把许许多多的不可能变成现实。最后我要感谢所有给与我们帮助的老师以及同学!在今后的学习道路上我一定会再接再厉,争取更大的成功!

    注意事项

    本文(PB课程设计学生选课管理系统.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开