PB课程设计-学生选课系统_第1页
PB课程设计-学生选课系统_第2页
PB课程设计-学生选课系统_第3页
PB课程设计-学生选课系统_第4页
PB课程设计-学生选课系统_第5页
已阅读5页,还剩18页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.1课题的背景当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最到好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好学生选课信息而设计的。学生选课作为一种信息资源的集散地,包含很多的信息数据的管理。由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的学校有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发基本环境。数据处理手工操作,工作量大,出错率高,出错后不易更改。造成了时间上的浪费基于这个问题,我认为有必要建立一个学生选课系统,使学生选课信息管理工作规范化、系统化、程序化,避免学生选课管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况。1.2课题的设计本文就学生选课系统的设计与制作展开分析。学生选课系统主要应用数据库技术开发,先从数据库的基本知识开始介绍,数据库的基本概念、数据库的发展、数据库的结构,还介绍了开发工具PowerBuilder9.0和SQL语言。我主要是应用PowerBuilder9.0为前端开发工具,利用SQL语言实现数据查询。设计系统时,先从系统的数据流程开始分析,设计系统的业务流程图、系统的数据流程图、系统的E-R图。根据开题报告的设计要求开始进入系统的总体设计,接着制定系统的设计思想,分析系统的功能并设计系统的功能模块,这些都是系统制作前的准备工作;准备工作完成后,开始系统数据库的建立,主要有各个功能窗口的设计,将设计好的窗口集中到主菜单上,通过用户的用户名和密码的登录可以进入到主窗口,这样就完成系统的制作。最后,对系统进行调试,性能3系统分析3.1系统分析现代的社会是信息化的社会,信息无所不在。在生产领域、流通领域、各个部门每天都和信息打交道,如何处理如此多的信息成为了一个重要的课题。学生在学期开始选课是教学活动中的一个重要环节,该环节如果能管理好,它不仅能加快学生的选课速度,也提高了整个教学活动的效率。大学一般都有上千名学生,每学期开始学生都要选课,因而产生了大量的课程信息。考虑到用户使用的方便和处理的信息量系统要完成录入,保存,查询,修改和删除课程信息的各种过程,能打印出课程信息表。所以系统的基本体系结构采用C/S模式。3.1.1用户要求系统的主要使用对象是需要选课的学生。学生在选课是要察看各个课程的详细信息,还要选择一些感兴趣的课程,需要生成课表,在发现课程有冲突后能够修改先前选择的信息。需要随学生选课的变化,计算相应的总学分。在全部选定后,打印报表。系统还需要管理员来查看和修改学生的总体选课情况,课程信息和学生信息。3.1.2业务流程分析学生选课前要登录系统,查看所有课程的详细信息,包括课程代号、授课教师、教室、上课时间、学分、剩余名额等。根据课程代号,学生可以查询相应的课程,并添加课程。查看课表,并能发现是否存在冲突课程,如果存在,可以删除该课程,并重新选择。打印课表,包含详细的课程信息。最后,选课完毕。学生选课的数据基本流程如图所示:图3-1学生选课流程3.1.3系统实体E-R图分析经过上述系统功能分析和需求总结,设计如下所示的实体和属性的定义:课程信息(课程代号,课程名称,授课教师,教室,剩余名额,上课时间,学分)学生信息(学号,姓名,性别,班级,出生年月日,是否已选课)学生登录信息(学号,用户名,密码,权限代号)学生选课信息(学号,课程代号,学期,课程成绩)用户权限(权限名称,权限代号)。本系统根据上面的设计规划出的实体有:课程信息实体,学生信息实体,学生登录信息实体,学生选课信息实体,用户权限实体。实体之间关系的E-R图如图3-2所示。图3-2系统E-R图课程信息实体E-R图,如图3-3所示:图3-3课程信息实体E-R图学生选课实体E-R图,如图3-4所示:图3-4学生选课实体图学生信息实体E-R图,如图3-5所示:图3-5学生信息实体图登录信息实体E-R图,如图3-6所示:图3-6登录信息实体图用户权限实体E-R图,如图3-7所示:图3-7用户权限实体图3.2本章小结学生选课系统主要是为学生选课的管理提供全面、准确、科学的管理方法,方便快捷地处理选课的管理信息;避免了信息处理错误,提高了信息管理的工作效率,大大地节省人力和物力的开支。本章主要阐述了系统的业务流程,根据业务流程画出绘制出了E-R图。4系统实现4.1创建一个工作空间和应用程序对象创建一个工作空间(WorkSpace)student,目标(Target)student和应用(Application)stu,在应用的open事件中写入如下的语句进行应用与数据库的连接。//Profilestu_selectSQLCA.DBMS="ODBC"SQLCA.AutoCommit=FalseSQLCA.DBParm="ConnectString='DSN=stu_select;UID=;PWD='"connect;4.2创建数据库表为了保存学生信息、课程信息、学生选课信息、登录信息、用户权限信息,数据库设计了学生信息表,课程信息表,学生选课信息表,登录信息表和用户权限信息表。这些表使得用户对数据的增删改变得非常方便,数据的冗余不是十分明显。数据库中的学生信息表结构如表4-1所示:表4-1学生信息表(stu_inform)字段名数据类型长度范围是否为空字段说明学号Char8否姓名Nvarchar是性别Char2是班级Nvarchar是出生年月日datetime是是否已选课char是数据库中的课程信息表结构如表4-2所示:表4-2课程信息表(course_inform)字段名数据类型长度范围是否为空字段说明课程代号Char10否课程名称Nvarchar是授课教师Nvarchar是教室Nvarchar是剩余名额Char3是上课时间Char20是学分、学时Int是数据库中的学生选课信息表如表4-3所示:表4-3学生选课信息表(stu_select)字段名数据类型长度范围是否为空字段说明学号Char8否课程代号Char10否学期Char6是课程成绩Int是数据库中的登录信息如表4-4所示:表4-4登录信息表(stu_login)字段名数据类型长度范围是否为空字段说明学号Char8否用户名Nvarchar是密码Nvarchar是权限代号Char3是数据库中的权限信息如表4-5所示:表4-5权限信息表(user_gl)字段名数据类型长度范围是否为空字段说明权限名称Char10是权限代号Char3否4.3创建主窗口通过主窗口可以实现信息查询,选择课程,修改选课打印课表等功能。其主要实现窗口如下图4-1所示:

图4-1主窗口4.4创建主菜单创建主菜单主要是方便各种功能的实现,从而实现更好的完成学生选课,查看课程信息等功能。如图4-2所示:图4-2主菜单在“课程查询”菜单项的clicked事件中编写代码:open(w_course_select)在“选课”菜单项的click事件中编写代码:open(w_course_add)在“生成课表”菜单项的click事件中编写代码:open(w_course_table)4.5系统管理模块的实现que4.5.1创建课程查询窗口在主菜单窗口单击“课程查询”即可打开此窗口,使用者可以在此窗口实现对课程的查询。下图4-3为“课程查询窗口”的主界面。图4-3课程查询窗口其中一些主要程序代码如下:(1)open事件代码dw_1.settransobject(sqlca)dw_1.retrieve()(2)“查找”按钮的click事件代码dw_1.setfilter("")ifsle_1.text=""orsle_1.text="请在此输入查询内容"then messagebox("错误!","请输入查询内容!") sle_1.eventgetfocus()elseifrb_1.checked=truethen //精确查找 choosecaseddlb_1.text case"课程代号" dw_1.setfilter("课程代号='"+sle_1.text+"'") case"课程名称" dw_1.setfilter("课程名称='"+sle_1.text+"'") case"授课教师" dw_1.setfilter("授课教师='"+sle_1.text+"'") case"上课时间" dw_1.setfilter("上课时间='"+sle_1.text+"'") endchooseelse //模糊查询 choosecaseddlb_1.text case"课程代号" dw_1.setfilter("课程代号like"+"'%"+sle_1.text+"%'") case"课程名称" dw_1.setfilter("课程名称like"+"'%"+sle_1.text+"%'") case"授课教师" dw_1.setfilter("授课教师like"+"'%"+sle_1.text+"%'") case"上课时间" dw_1.setfilter("上课时间like"+"'%"+sle_1.text+"%'")endchooseendifendif//检索数据dw_1.retrieve()(3)“选课”按钮click事件代码open(w_course_add)(4)“查看课表”按钮click事件代码open(w_course_table)4.5.2创建添加选课窗口单击主窗口的“选课”即可打开此窗口界面,在此界面可以实现对课程信息的选择查看,可以根据课程代号查询相应课程的详细信息,选择此课程,并计算选课门数和课程总学分。下图4-2为“添加选课窗口”的主界面。图4-4添加选课窗口其中一些主要程序代码如下:(1)open事件代码dw_1.settransobject(sqlca)dw_2.settransobject(sqlca)stringuser_name,student_no//检索用户的学号SELECTstu_login.学号,stu_login.用户名INTO:student_no,:user_name FROMstu_loginWHEREstu_login.用户名=:login_name; //根据学号查询用户的详细信息dw_2.setfilter("")dw_2.setfilter("stu_select_学号='"+student_no+"'")dw_2.retrieve()//显示学生选择课程数,和其学分总数realscoreintm,nm=dw_2.rowcount()score=0.0forn=1tom score=score+real(dw_2.object.course_inform_学分[n])nextst_3.text=string(m)st_6.text=string(score)(2)查找事件代码如下:ifsle_1.text=""then messagebox("错误!","请输入查询课程的代码") sle_1.eventgetfocus()elsedw_1.setfilter("")dw_1.setfilter("课程代号='"+sle_1.text+"'")dw_1.retrieve()cb_1.default=falsecb_2.default=trueendif(3)“确认选择课程”按钮click事件代码integerrntrnt=messagebox("注意!","你是否确定选择该课程?",Information!,YesNo!)stringuser_name,cour_no,student_no,cour_name,cour_sel_leastnoifrnt=1andsle_1.text<>""then //根据登录的用户名,检索出用户的学号SELECTstu_inform.学号,stu_login.用户名INTO:student_no,:user_nameFROMstu_inform,stu_loginWHERE(stu_inform.学号=stu_login.学号)and((stu_login.用户名=:login_name)); //查询stu_select表,看是否此学生已经选择这门课程SELECTstu_select.课程代号INTO:cour_noFROMstu_selectWHERE(stu_select.学号=:stu_no)AND(stu_select.课程代号=:sle_1.text); SELECTcourse_inform.剩余名额INTO:cour_sel_leastnoFROMcourse_inform,stu_selectWHERE(course_inform.课程代号=stu_select.课程代号)and((course_inform.课程代号=:sle_1.text));ifcour_no<>""then messagebox("提示","你已经选择过此门课程")elseifcour_sel_leastno="0"then messagebox("提示","该课程的剩余名额为0,请选择其他课程!")else//插入用户选择课程到stu_select表INSERTINTOstu_select(学号,课程代号)VALUES(:student_no,:sle_1.text); messagebox("提示","恭喜你,添加课程成功!"); //学生选定该课程后,在该课程的剩余名额中减少一人 UPDATEcourse_informSET剩余名额='剩余名额-1';dw_2.retrieve()endifelseifsle_1.text=""then messagebox("提示","你还没有选课!")endifdw_2.settransobject(sqlca)stringuser_name1,student_no1//检索用户的学号SELECTstu_login.学号,stu_login.用户名INTO:student_no1,:user_name1 FROMstu_loginWHEREstu_login.用户名=:login_name; //根据学号查询用户的详细信息dw_2.setfilter("")dw_2.setfilter("stu_select_学号='"+student_no1+"'")dw_2.retrieve()//刷新学生选择课程数,和其学分总数realscoreintm,nm=dw_2.rowcount()score=0.0forn=1tom score=score+real(dw_2.object.course_inform_学分[n])nextst_3.text=string(m)st_6.text=string(score)4.5.3创建生成课表窗口打开主窗口,单击“生成课表”,即可打开本窗口的维护界面,在本窗口主要实现学生课程的编排和冲突课程的修改删除,还可以打印课表。下图为生成课表界面,如图4-5所示图4-5生成课表主窗口其中一些主要代码如下:(1)查看课表事件的代码dw_1.settransobject(sqlca)dw_1.setfilter("stu_inform_学号='"+trim(stu_no)+"'andstu_select_学期='"+trim(sle_1.text)+"'")dw_1.retrieve()//将课表内的文字清空,主要防止用户再次点击查看时而产生的错误st_1_1.text="";st_1_2.text="";st_1_3.text="";st_1_4.text="";st_1_5.text=""intn,mstringcourse_time,course,course_classroomn=dw_1.rowcount()//把数据表总行数赋予n//把课程名称显示在课程表中form=1ton course_time=trim(dw_1.object.course_inform_上课时间[m]) course=trim(dw_1.object.course_inform_课程名称[m]) course_classroom=trim(dw_1.object.course_inform_教室[m])choosecasecourse_time case"k11" ifst_1_1.text=""then st_1_1.text=course+""+course_classroom else st_1_1.text=st_1_1.text+"//"+course messagebox("提示","你的课程有冲突",exclamation!,ok!,2) endif …… case"k55" ifst_5_5.text=""then st_5_5.text=course+""+course_classroom else st_5_5.text=st_5_5.text+"//"+course messagebox("提示","你的课程有冲突",exclamation!,ok!,2) endifendchoosenext(2)“打印课表”事件的代码如下//定义一个打印工作longjob//打开打印设置job=PrintOpen(string(login_name)+"一份数据文档")//指定打印数据窗口PrintDataWindow(job,dw_1)//关闭打印工作PrintClose(job)4.5.4单击主窗口的“查看学生个人信息”选项后,进入此窗口界面,在本窗口主要实现对登录学生信息的查看,以验证学生信息是否正确,下图为个人信息窗口界面,如图4-6所示。图4-6学生个人详细信息窗口其中open事件代码如下://定义全局变量stringstu_nostringlogin_namestringgl_nodw_1.settransobject(sqlca)stringuser_name,student_no//检索用户的学号SELECTstu_login.学号,stu_login.用户名INTO:student_no,:user_name FROMstu_loginWHEREstu_login.用户名=:login_name; //根据学号查询用户的详细信息dw_1.setfilter("")dw_1.setfilter("stu_inform_学号='"+student_no+"'")dw_1.retrieve()4.5.5单击主窗口“修改登录密码”选项后,即可打开密码修改窗口。本窗口主要功能是修改学生个人的登录密码,在学生正确填写旧的用户名和密码后即可成功就该新密码。其主界面如图4-7所示。图4-7密码修改窗口主界面其中“确认修改”事件代码如下://Profilestu_selSQLCA.DBMS="ODBC"SQLCA.AutoCommit=FalseSQLCA.DBParm="ConnectString='DSN=stu_sel;UID=;PWD='"connect;stringls_username,ls_userpasswordSELECTstu_login.用户名,stu_login.密码INTO:ls_username,:ls_userpasswordFROMstu_loginWHEREstu_login.用户名=:sle_1.text;ifls_userpassword<>sle_2.textthen messagebox("提示","密码错误,请确认后再输入!")//elseifsle_2.text=""then// messagebox("提示","请输入旧密码!")else ifsle_3.text<>""andsle_4.text<>""andsle_3.text=sle_4.textthen ls_userpassword=sle_3.text updatestu_login set密码=:ls_userpassword wherestu_login.用户名=:sle_1.text; messagebox("提示","恭喜你,密码修改成功!") endififsle_3.text<>""andsle_4.text<>""andsle_3.text<>sle_4.textthen messagebox("提示","新密码和确认密码不同,请重新输入!") endif ifsle_3.text=""orsle_4.text=""then messagebox("提示","新密码或确认密码不能为空!") endifendifsle_1.text=""sle_2.text=""sle_3.text=""sle_4.text=""4.5.6创建登录登录窗口主要是用来登录主界面的一个关卡,根据用户的不同设有不同的权限,其主界面如图4-8所示。图4-8登录窗口界面其登录事件代码如下://定义两个变量stringpassword,username//Profilestu_selectSQLCA.DBMS="ODBC"SQLCA.AutoCommit=FalseSQLCA.DBParm="ConnectString='DSN=stu_select;UID=;PWD='"//连接数据库connect;//检索用户名和密码记录SELECTstu_login.学号,stu_login.用户名,stu_login.密码,stu_login.权限代号INTO:stu_no,:username,:password,:gl_noFROMstu_loginWHEREstu_login.用户名=:sle_1.text;//判断用户输入的用户名是否正确ifsle_1.text=""orsle_2.text=""then messagebox("错误!","用户名或密码不能为空!",exclamation!,ok!,2)elseifusername=sle_1.textandpassword=sle_2.textthen open(w_main) close(w_login)elsemessagebox("错误!","用户名或密码错误,请重新输入!",exclamation!,ok!,2)endifendif4.5.7Splash界面,是在登录窗口之前出现的界面,主要用来显示软件的版本信息等简略情况,界面如图4-9所示。图4-9splash界面其主要代码如下:open事件代码//设定关闭时间timer(3,this)//将Splash窗口置于其他窗口之上this.setposition(topmost!)timer事件代码:close(this)open(w_login)clsoe事件代码:timer(0,this)

结束语随着信息技术的发展,办公自动化已成为社会发展的主要趋势,学生选课管理因其劳动的复杂性已经无法适应手工操作,所以应用先进的计算机技术对学生选课进行管理是势在必行的,因此本文采用目前流行的数据库开发工具之一的PowerBuilder9.0设计了一个小型的学生选课系统,并对设计结果进行了一定的总结。(1)学生选课管理因为其日常事务比较繁琐,所以在设计数据库表之前一定要对系统的设计有一个整体的认识,对学生信息和课程信息进行整理,设计好各功能模块的E-R图。这样,在后期的设计时,会因前期工作处理的好而减少许多麻烦,为设计的顺利进行作好了铺垫。(2)在设计各个功能模块时,要考虑和其

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论