

已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程名称: 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.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+)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)查询(输入“课程代号”、“课程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025劳务派遣合同协议书范本
- 护理伦理毕业答辩
- 常见症状护理之头晕护理
- 湖北省武汉市江岸区七校2024-2025学年高一下学期4月期中生物试题 含答案
- 妇科常规护理体系构建
- 2025年低血钾知识试题
- 湖南省湘一名校联盟2024-2025学年高一下学期4月期中地理试题(原卷版)
- 山东省济宁市2025年高考模拟考试历史试题及答案(济宁三模)
- 浙江省衢州市五校联盟2024-2025学年高二下学期期中联考历史试题(含答案)
- 物流和快递合作协议
- 2024-2030年中国对苯二甲酸工业市场发展前景调研及投资战略分析报告
- 《护理心理学》试题及参考答案(四)
- T-CBDA 70-2023 中小型体育馆室内装饰装修技术规程
- 社区食堂租赁合同样本
- DB52T 1657-2022 磷石膏模盒通 用技术要求
- 2024年中级注册安全工程师《安全生产管理》真题及答案
- 煤矿居间合同范本
- 2024年居间合作备忘录:双方协商达成
- 厨房食材验收标准
- 与信仰对话 课件-2024年入团积极分子培训
- 小学五年级体育教案全册(人教版)
评论
0/150
提交评论