资源描述
软件工程实验报告 实 验 课 题 : 选 课 管 理 系 统 开 发开发者:张昂 张尧伍 王习武 蓝天 翟洋洋目 录一、系统可行性研究1.1 引言-51.1.1 开发目的1.1.2 开发背景1.1.3 参考资料1.1.4 开发环境1.2 可行性研究的前提-51.2.1 要求 1.2.2 性能 1.2.3 完成期限 1.2.4 开发目标 1.2.5 条件、假设和限制 1.2.6 进行可行性研究的方法1.3 运行环境的可行性-61.3.1 运行环境的说明 1.3.2 工作负荷 1.3.3 技术条件的可行性1.4 社会因素方面的可行性-61.4.1 法律方面1.4.2 适用方面1.5 经济因素方面的可行性-7二、需求分析2.1 系统需求-72.2 功能需求-72.3 性能需求-72.4 运行环境需求-82.4.1 软件环境 2.4.2 硬件环境2.5 用户特点-8三、绘制数据流图和数据字典3.1 数据流图-83.1.1 导入课程数据流图 3.1.2 学生选课数据流图 3.1.3 查询课程数据流图3.2 数据字典-93.2.1 课程信息数据字典 3.2.2 选课学生简要信息数据字典 3.2.3 选课学生具体信息数据字典 3.2.4 教师信息数据字典 3.2.5 院系信息数据字典 3.2.6 管理员数据字典 3.2.7 选课记录数据字典四、E-R图-10五、总体设计5.1 设计过程及原理-155.2 软件结构-165.3 HIPO图- -16六、详细设计6.1 详细设计总体描述-196.2 程序流程图-196.2.1 选课信息查询程序流程图 6.2.2 课程导入程序流程图 6.2.3 管理员设置程序流程图 6.2.4 管理员添加 6.2.5 管理员修改 6.2.6 管理员删除 6.2.7 选课程序流程图6.3 核心代码-27七、软件测试7.1 软件测试-547.1.1 测试目标 7.1.2 测试环境7.2 测试报告-557.2.1 登陆控制及权限所有测试 7.2.2 界面测试 7.2.3 预定功能测试7.3 测试结论-62附录: 编者话- -63一、系统可行性研究1.1引言1.1.1目的本项目计划旨在明确开发过程,保证项目质量,统一小组成员对项目的理解,并对开发过程进行指导;并且作为项目通过评审的依据;并说明该软件开发项目的实现在技术上,经济上,社会因素上得可行性,评述为了合理地达到开发目标可供选择的各种选择实施方案,说明并论证所选定实施方案的理由。1.1.2背景1.系统的名称:学生管理选课系统2.项目的任务提出者是本次课程设计辅导老师程凡老师3.开发者:张昂 王习武 翟洋洋 蓝天 张尧伍4.项目使用者:高校管理员、老师和学生1.1.3参考资料百度文库1.1.4 开发环境开发软件: VC+ 6.0数据库软件:Microsoft Office Access 2003开发环境:Windows XP1.2可行性研究的前提1.2.1要求1.功能1) 普通用户:学生修改个人密码;查看学生基本信息及详细信息;学生个人选课;查看课表;查看学生个人在校学习成绩;评价教师;2) 普通用户:教师修改个人密码;查看教师基本信息及消息信息;查看课表;3) 特殊用户:管理员注册师生信息;删除师生信息;查看师生信息;课程信息添加;课程信息删除;课程信息修改;1.2.2性能查询效率尽可能的做到准确,信息维护做到简单易用,不需要对用户进行培训;1.2.3完成期限:到本学期17周1.2.4目标系统应尽量做到以下功能:1) 人力与设备费用的减少、2) 采用现代课程设计技术3) 数据的处理速度的提高4) 管理信息服务的改进5) 人员利用率尽量提高6) 结果应尽可能的审查1.2.5条件、假设、和限制本系统的条件、假设和所受到的限制有以下几方面:1) 本系统仅为实验所用2) 硬件、软件、运行环境和开发环境方面的条件和限制:由于是个人电脑,所以硬件设施可能在性能上比较差,软件完全是免费得,功能可能会受到相应的限制;对windows 比较熟悉,所以,开发主要在这个平台上进行的3) 可利用的信息和资源:没有相应的软件项目开发的经验,所以能力还是有限的,收集的资源有限,故对信息的了解不够全面;4) 系统投入使用的最晚时间:本学期第17周1.2.6进行可行性研究的方法根据课本里面的相关知识、图书馆所借的书以及平时所累积的一些经验,综合本系统所要达到的目标进行分析而得到。1.所建议的系统1.对所建议系统的说明本系统是运用制作的一个小型学生选课系统,实现这个系统将用到以下几种技术:) 的各种应用) 数据库系统技术1.2工作负荷现有系统所承担的工作及工作量:系统功能:() 登陆() 选课功能() 查询功能() 修改功能1.3.3技术条件方面的可行性.在当前的限制条件下,该系统的功能目标是能够达到预期效果的开发人员的数量:人;均接受过相关知识的培训,但首次做系统,经验不足在规定的时间内,本系统的开发可以实现1.3.社会因素方面的可行性1.法律方面的可行性本系统纯属于团队的开发所成,不会因为版权问题造成纠纷,不作为商业用途2.适用方面的可行性界面设计时充分考虑管理人员的习惯,使得操作简单;数据录入迅速 规范 可靠;统计准确;制表灵活;适应力强;容易扩充.第2章内容主要是:系统需求分析包括,现有系统介绍;系统的实体分析,实体关系图.1.3.经济可行性由于本系统是为学生选课管理使用的系统,装上该应用软件,即可使用系统,系统成本主要集中在系统软件的开发上,当系统投入运行后可以为学校节约大量的人力,物力.所带来的效益远远大于系统软件的开发成本.在经济上完全可行.1.3.结论本系统可以立即开始进行实施;并尽可能提前完成,;从人力资源上面来看,可以充分利用各人的擅长来开发本系统;从开发成本上面来看,将支出成本降到最低;所以本方案最佳。二、需求分析2.1系统需求用户的需求具体体现在各种学习成绩的提供、保存、更新和查询方面,这就要求数据库结构能充分满足各种信息的输入和输出。收集基本数据、数据结构及数据处理的流程,组成一份详细数据词典,为后面的具体设计打下基础。2.2功能需求通过系统功能分析,针对一般的上网选课系统,总结出以下的需求信息:() 学生的需求:网上选课、选课查询情况包括该门课程的老师信息,上课时间及该门课程的学分,修改密码等;() 本系统主要实现学生信息管理和选课查询。选课学生具体信息包括学工号、年龄、性别、民族、年级、专业、宿舍号、联系电话、邮箱、身份证号、生日、籍贯;学生简要信息包括学工号、密码、姓名、性别、年级、专业、限制学分、课程信息;课程信息包括课程代码、课程名称、系别、任课老师id、上课时间、上课地点、课程容量、课程剩余量、课时、课程性质、届别;老师信息包括职工号、密码、姓名、性别、院系、职称、课程信息;管理员信息包括用 管理员编号、密码、姓名、性别、联系电话、所属部门;院系信息包括学院名称、学院代码、上级部门编号、简介选课记录信息包括学工号、课程代码、考试成绩2.3 性能需求2.3.1响应时间系统响应的最短时间要求2.3.2 精度需求系统输入输出的精度要求2.4 运行环境需求 2.4.1 软件环境操作系统及版本:Windows XP支撑软件:VC+ 6.0数据库环境:Microsoft Office Access 2003 2.4.2 硬件环境CPU:内存:外存:输入输出设备:现阶段所使用的计算机均可.2.用户特点本系统是面向高校学生 教师和网络管理员的.对电脑都有一定的操作能力,根据菜单提示都能熟练使用本系统.三、绘制数据流图和数据字典3.1 数据流图3.1.1 导入课程数据流图课程存储信息D课程信息系统管理员存储课程信息生成新课程编号重新编写课程代码课程信息 3.1.2 学生选课数据流图课程剩余信息选课信息D4课程剩余信息D22师生资料学生选课记录D1学工号信息系统管理员处理选课者信息检验选课号信息查询选课情况选课者更新课程信息 3.1.3 查询课程数据流图课程信息课程清单D2D1课程清单课程信息学生资料课程信息查找的课程信息系统管理员处理选课号信息选课者3.2 数据字典3.2.1课程信息数据字典课程信息系统名选课系统别名无描述每一门的课程信息定义课程信息=课程代码+课程名称+系别+职工号+上课时间 +上课地点+课程容量+课程剩余量+课时+课程性质+届别位置课程目录文件简要说明课程代码是课程唯一识别信息备注:1、课程代码:识别课程的唯一标准。形如:GM003642、课程名称:形如:软件工程3、系别:形如计算机科学与技术学院软件工程系4、职工号:教师教工号。例如:李强 E9185205、上课时间:形如:周五第1,2节第1-10周6、上课地点:形如:笃南A207课程容量=已选人数+课程剩余量7、课程容量:该课程能能容纳学生的人数。8、课程剩余量:该课程还能让多少学生选。9、课时:36课时|54课时|72课时10、课程性质:专业基础课|专业核心课|人文素质课|科技素质课|体育课|跨专业11、届别:大一|大二|大三|大四课程信息的每个字段定义如下:属性名数据类型长度允许空备注课程代码char10N唯一课程名称char50N系别char30N任课老师idchar30N上课时间intN上课地点char30N课程容量intN课程剩余量int10N课时Int10N课程性质Char10N届别Int10N3.2.2选课学生简要信息数据字典选课学生简要信息系统名选课系统别名无描述每一位选课学生信息定义选课学生简要信息=学工号+密码 +姓名+性别+年级+专业+限制学分+课程信息位置选课者目录文件简要说明:学工号是选课者唯一识别码备注:1、学工号:识别学生的唯一标准。形如:E20914094 2、密码:六个数字组成。形如:000000 3、姓名:由2-4个汉字组成。形如:蓝天。 4、性别:男|女 5、年级:大一|大二|大三|大四 6、限制学分:能多能选多少学分。 7、课程信息:选择的课程的信息。选课学生信息的每个字段定义如下:属性名数据类型长度允许空备注学工号Char40N唯一密码char10N姓名char30N性别char5N年级Int50Y专业Char10Y限制学分Int10Y课程信息char100N3.2.3选课学生具体信息数据字典学生具体信息系统名选课系统别名无描述每一位学生具体信息定义学生具体信息=学工号+年龄 +性别+民族+年级+专业+宿舍号 +联系方式+邮箱+身份证+生日+籍贯位置选课者目录文件简要说明:学工号是学生唯一识别码备注: 1、学工号:识别学生的唯一标准。形如:E20914094 2、年龄:学生年龄。 3、性别:男|女 4、名族:形如:汉 5、年级:大一|大二|大三|大四6、专业:形如:软件工程7、宿舍号:形如:枣园 16158、联系方式:手机号:形如138XXXXXXXX9、邮箱:形如111111111qq.com10、身份证:省份证号码11、生日:形如3月1号12、籍贯:形如:宣城。选课学生具体信息的每个字段定义如下:属性名数据类型长度允许空备注学工号Char40N唯一年龄Int10N性别Char10N民族Char10N年级Char10N专业Char50Y宿舍号Char10Y联系方式Int50Y邮箱Char20Y身份证Char20Y生日Char20Y籍贯Char50Y3.2.4教师信息数据字典教师信息系统名选课系统别名无描述每一位教师具体信息定义教师信息=职工号 +密码 +姓名+性别+院系+职称+课程信息位置教师目录文件简要说明:职工号是教师唯一识别码备注:1、职工号:识别教师的唯一标准。形如:李强 9185202、密码:6位数字组成。形如:0000003、姓名:教师姓名4、性别:男|女5、院系:所属院系用一个字母代替(该字母为院系代码)。E:计算机学院6、职称:讲师|副教授|教授7、课程信息:所教的课程的信息。教师信息的每个字段定义如下:属性名数据类型长度允许空备注职工号Char40N唯一密码Char10N姓名Char30N性别Char5N院系Char50Y职称Char10Y课程信息Char50Y3.2.5院系信息数据字典院系信息系统名选课系统别名无描述院系具体信息定义院系信息=学院名称+学院代码+上级部门编号+简介位置院系目录文件简要说明:学院代码是学院唯一识别码备注:1、学院名称:形如:计算机学院2、学院代码:一个大写字母代替。形如:E 计算机学院3、上级部门编号:4、简介:关于该学院的大致介绍。院系信息的每个字段定义如下: 属性名数据类型长度允许空备注学院名称Char40Y学院代码char10N唯一上级部门编号char30N简介txt100N3.2.6管理员信息数据字典管理员信息系统名选课系统别名无描述每一位管理员具体信息定义管理员信息=管理员编号+密码+姓名+性别+联系电话+所属部门位置管理员目录文件简要说明:管理员编号是管理员的唯一识别码备注:1、管理员编号:识别管理员的唯一标准。如:一号管理员编号为0012、密码:6个数字组成。如:0000003、姓名:管理员的姓名4、性别:男|女5、联系方式:手机号:138xxxxxxxx6、所属部门:维护部|管理部|宣传部.管理员信息中每个字段如下:属性名数据类型长度允许空备注管理员编号char5N唯一密码char10N姓名char30N性别char2N联系电话char11Y所属部门char3N3.2.7选课记录表数据字典选课记录信息系统名选课系统别名无描述每一位学生的选课记录具体信息定义选课记录信息=学工号+课程代码+考试成绩位置选课记录文件简要说明:备注:: 1、选课记录信息:学生所选课程的信息识别选课记录信息的唯一标准2、学工号:识别学生的唯一标准。形如:E209140943、课程代码:识别课程的唯一标准。形如:GM003644、考试成绩:学生这门课的考试成绩。属性名数据类型长度允许空备注学工号Char40N唯一课程代码char10N考试成绩char30N四、E-R图系统管理员老师管理姓名性别联系电话管理员信息密码密码性别院系姓名课程代码系别课程名称上课时间届别课程容量课程性质剩余课程量所属部门职工号课程学生课程信息限制学分专业年级密码学工号管理管理职称课程信息上课地点课时姓名性别五、总体设计5.1 设计过程及原理选课系统下分为查询子系统和系统登录,查询子系统也就是选课者对选课的查询。系统登录下分为管理子系统和基本信息设置,基本信息设置即对管理员信息的添加、删除以及修改,也即对系统的操作员进行权限的控制,以提高系统的安全性。管理子系统分为课程导入系统、学生选课系统、学工号注册以及注销系统。师生选课子系统通过学工号对选课者实时控制,选课子系统可以对课程进行选择管理,选课时,首先检查选课者的学工号信息是否有效,有效的话将进入选课系统,同时调出选课者选择课程情况。学工号注册和注销子系统可以对选课者对选课权限的控制。只有学工号的才可以进行选课活动,已注销的选课者将不再享有选课的权限。5.2 软件结构选课系统查询子系统系统登录课程信息查询基本信息设置管理子系统课程导入选课选课注册选课注销管理员设置管理员信息添加管理员信息删除管理员信息修改课程信息添加课程信息更新课程信息修改选课者信息修改课程信息修改学生信息添加教师信息添加学生信息删除教师信息删除5.3 HIPO图学生选课系统输入1.01.0处理2.02.0输出3.03.0选课申请1.1退课申请1.2课程剩余量统计2.1已选课程学分限制审核2.2上课时间限制2.3选 课2.4课 表1.1 1.2选课申请输入处理输出选课申请审核制定课表选课表退课申请输入处理输出退可申请审 核修改选课选课表2.1 2.2课程剩余量统计输入处理输出选课申请信息统计余量学分限制审核输入处理输出已选课程总学分申请课程总学分审 核总 学分六、详细设计6.1 详细设计总体描述选课系统详细设计是设计的第二个阶段,这个阶段的主要任务是在选课系统概要设计书基础上,对概要设计中产生的功能模块进行过程描述,设计功能模块的内部细节,包括算法和详细数据结构,为编写源代码提供必要的说明。概要设计解决了软件系统总体结构设计的问题,包括整个软件系统的结构、模块划分、模块功能和模块间的联系等。详细设计则要解决如何实现各个模块的内部功能,即模块设计。具体的说,模块设计就是要为已经产生的选课系统各子系统设计详细的算法。但这并不等同于系统实现阶段用具体的语言编码,它只是对实现细节作精确的描述,这样编码阶段就可以将详细设计中对功能实现的描述,直接翻译、转化为用某种程序设计语言书写的程序。选课系统查询中,已经注册学工号的师生才有权利查询图书信息.也即选课者向管理员提供其学工号和要查询的课程名和任课老师,管理员首先让系统验证该学工号是否有效,若有效,则可继续输入课程名字和任课教师,给选课者提供查询出课程的具体信息。管理员信息设置:初始系统时设置一位管理员(即超级管理员),包括该管理员的编号(如001)/密码/姓名/性别/联系方式/所属部门(维护部,管理部,宣传部等)。超级管理员拥有最高权限,其他管理员由初始的管理员添加/修改/删除,权限由超级管理员设定,设置为除对管理员数据库进行添加/修改/删除的其他任何权限。 管理员编号:每位管理员拥有一个编号,作为该管理员登录的用户名,用户名不得重复密码:在添加普通管理员时由被添加的管理员自己设置姓名:被添加的管理员的真实姓名,判断该管理员是谁,重名者在姓名后添加标志,适当区分性别:男/女/空联系方式:限定仅为电话号码,不可用邮箱所属部门:在添加管理员是选择被添加的管理员是那个部门的(维护部,管理部,宣传部等)()管理员信息的添加管理员姓名唯一,如有重名管理员,在后注册的管理员姓名后加上01,加以区别,依次类推此外每个管理员都有一个管理员编号(001, 002, 003.),管理员编号由超级管理员按照一定的顺序分配()管理员信息的修改和删除删除管理员信息时,先验证管理员的编号和密码,由超级管理员从数据库中直接删除 管理员信息的修改只能由超级管理员进行修改选课时,首先将选课者向系统输入学工号,如果此号有效,才可以进入系统选课,可以继续一门选课的条件是:学生所选课程还有剩余量;学生的剩余学分小于所选课程的学分。两个条件具备则允许学生选课,否则,不允许。并计算当前学生已选学分,然后将学生所选的课程记录档案,记录所选课程的基本信息。本次选课活动结束。6.2 程序流程图6.2.1 选课信息查询程序流程图NYNYY输入查询课程名和任课老师开 始输入学工号输出课程信息选课者信息表中有该选课者?课程信息表中有该课程?是否继续查询?退 出N显示该学工号无效,即没有注册或已注销显示无此课程 6.2.2 课程导入程序流程图输入课程名,系别,任课老师,上课地点,上课时间YNN开 始输入课程代码课程信息中是否有该课程代码ISBN是否有课程继续导入退 出Y将该课程代码中对应课程的数量加1,更新剩余总量新创建一条课程记录,存放输入信息,并将数量字段置为1,设置剩余总量 6.2.3 管理员设置程序流程图NYYN开始管理员输入自己的用户名和密码访问管理员信息表,验证该管理员信息是否正确?访问管理员信息表,验证该管理员编号是否为超级管理员管理员信息设置导入课程学工号注册课程查询师生选课学工号注销显示普通管理员操作菜单显示超级管理员操作菜单结束 6.2.4 管理员添加YN超级管理员输入要添加的管理员姓名,访问管理员信息表,查询该姓名是否已注册完善管理员信息,包括管理员编号,密码,性别,联系电话,所属部门等结束确认,添加成功开始 6.2.5 管理员修改NY管理员输入管理员编号,和密码,访问管理员信息表,验证是否正确?请求超级管理员进行修改,修改内容包括,姓名,密码,性别,联系方式,所属部门等结束确认,修改成功开始 6.2.6 管理员删除NY管理员输入管理员编号,和密码,访问管理员信息表,验证是否正确?超级管理员访问管理员信息表,直接把该管理员的数据信息从数据库中删除确认,删除成功结束开始 6.2.7 选课程序流程图开始输入学工号查询是否含有学工号课程人数是否超过限制计算当前学生学分记录所选课程信息更新课程信息结束YNNY学分是否超过限制YN6.3 核心代码选课系统核心代码及数据结构概要数据库连接模块构造数据库连接类ADOConnclass ADOConn public: _ConnectionPtr m_pConnection;/指向Connection对象指针_RecordsetPtr m_pRecordset;/指向Recordset对象指针public:void OnInitADOConn();/连接数据库_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);/执行查询据库记录操作SQL语句void ExitConnect();/断开数据库连接BOOL ExecuteSQL(_bstr_t bstrSQL);/执行修改数据库记录操作SQL语句ADOConn();virtual ADOConn();BOOL ADOConn:ExecuteSQL(_bstr_t bstrSQL) /执行修改数据库记录操作SQL语句函数tryif(m_pConnection = NULL)OnInitADOConn();m_pConnection-Execute(bstrSQL,NULL,adCmdText);return true;catch(_com_error e)AfxMessageBox(e.Description();return false;void ADOConn:ExitConnect()/断开数据库连接函数if (m_pRecordset != NULL)m_pRecordset-Close();m_pConnection-Close();:CoUninitialize();_RecordsetPtr& ADOConn:GetRecordSet(_bstr_t bstrSQL)/ 执行查询据库记录操作SQL语句函数tryif(m_pConnection=NULL)OnInitADOConn();m_pRecordset.CreateInstance(_uuidof(Recordset);m_pRecordset-Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);catch(_com_error e)AfxMessageBox(e.Description();return m_pRecordset;void ADOConn:OnInitADOConn()/连接数据库函数:CoInitialize(NULL); trym_pConnection.CreateInstance(ADODB.Connection);_bstr_t strConnect = File Name=my_data1.udl;m_pConnection-Open(strConnect,adModeUnknown);catch(_com_error e)AfxMessageBox(e.Description();登录模块CLoginDlg登陆模块类void CLoginDlg:OnOK() / TODO: Add extra validation hereUpdateData(TRUE);if (m_UserName = )MessageBox(请输入用户名);return;if (m_Pwd = )MessageBox(请输入密码);return;CUser user;user.GetData(m_UserName);if (user.UserPwd != m_Pwd)MessageBox(用户信息不正确,无法登录!);return;if(user.UserType.Find(学生)0 & user.UserType.Find(系统管理员)0 & user.UserType.Find(教师)0)MessageBox(您没有使用此系统的权限);return; CDialog:OnOK();主界面主界面CXkSysDlg类中权限分配函数BOOL CXkSysDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization hereCLoginDlg dlg; /启动登陆窗体if (dlg.DoModal() != IDOK)OnOK();elsecurUser.GetData(dlg.m_UserName); /权限分配if(curUser.UserType.Find(学生)GetSubMenu(0)-EnableMenuItem(IDR_SELECTCOURSE,MF_BYCOMMAND|MF_GRAYED);GetMenu()-GetSubMenu(3)-EnableMenuItem(IDR_PERINFO,MF_BYCOMMAND|MF_GRAYED);GetMenu()-GetSubMenu(4)-EnableMenuItem(IDR_PRECOURSELIST,MF_BYCOMMAND|MF_GRAYED);GetMenu()-GetSubMenu(4)-EnableMenuItem(IDR_PERSCORES,MF_BYCOMMAND|MF_GRAYED);GetMenu()-GetSubMenu(5)-EnableMenuItem(IDR_STUSELOBJ,MF_BYCOMMAND|MF_GRAYED);GetMenu()-GetSubMenu(4)-EnableMenuItem(IDR_TRAINCASE,MF_BYCOMMAND|MF_GRAYED);if(curUser.UserType.Find(系统管理员)GetSubMenu(3)-EnableMenuItem(IDR_STUINFOMAN,MF_BYCOMMAND|MF_GRAYED);GetMenu()-GetSubMenu(3)-EnableMenuItem(IDR_COURSEMAN,MF_BYCOMMAND|MF_GRAYED);if(curUser.UserType.Find(教师)GetSubMenu(4)-EnableMenuItem(IDR_SELINFOMAN,MF_BYCOMMAND|MF_GRAYED);return TRUE; / return TRUE unless you set the focus to a control第一块以学生身份登录主要功能概要学生选课模块学生选课类CSelCourseDlg主要函数BOOL CSelCourseDlg:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization hereCStudents stu;stu.GetData(curUser.UserName); Refresh_Data(stu.CollegeName);GetDlgItem(IDC_WITHDRAWAL_BUTTON)-EnableWindow(FALSE);return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSEvoid CSelCourseDlg:OnWithdrawalButton() /退选课程/ TODO: Add your control notification handler code hereCCourses cou;CTeachers teacher;CSelectRecords selectrecord;CString cCourseName;CStudents stu;cCourseName=m_datagrid.GetItem(0);cou.sql_getIdbyName(cCourseName); selectrecord.sql_delete(cou.CourseId,curUser.UserName);cou.sql_recorddel(); RefreashPerSelRecords(curUser.UserName);void CSelCourseDlg:OnOptionButton() /选中课程/ TODO: Add your control notification handler code here CCourses cou; CSelectRecords selectrecord; cou.GetData(m_datagrid.GetItem(0); if(selectrecord.HaveRecord(cou.CourseId,curUser.UserName)=true) AfxMessageBox(你已选过了此门课程!); return; else selectrecord.CourseId=cou.CourseId; selectrecord.StudentId=curUser.UserName; selectrecord.Score=0; selectrecord.sql_insert(); cou.sql_recordadd(); Refresh_Data(cou.CollegeName); void CSelCourseDlg:OnSelectedrecoredButton() /查看已选课程/ TODO: Add your control notification handler code here CSelectRecords selectrecord;selectrecord.StudentId=curUser.UserName;/selectrecord.sql_getpersonalrecords(selectrecord.StudentId); RefreashPerSelRecords(selectrecord.StudentId);GetDlgItem(IDC_WITHDRAWAL_BUTTON)-EnableWindow(TRUE);void CSelCourseDlg:RefreashPerSelRecords(CString cStudentId)/更新选课列表 CString cSourse; cSourse=SELECT CourseName,CourseScore,TeacherName FROM Courses,Teachers WHERE CourseId IN (SELECT CourseId FROM SelectRecords WHERE StudentId=+cStudentId+)AND Teachers.TeacherId IN(SELECT TeacherId FROM Courses WHERE CourseId IN (SELECT CourseId FROM SelectRecords WHERE StudentId=+cStudentId+); m_Adodc.SetRecordSource(cSourse); m_Adodc.Refresh();void CSelCourseDlg:OnSelectionButton() /进入选课界面进行选课/ TODO: Add your control notification handler code here CStudents stu;stu.GetData(curUser.UserName); Refresh_Data(stu.CollegeName);GetDlgItem(IDC_WITHDRAWAL_BUTTON)-EnableWindow(FALSE);个人信息查看编辑模块学生个人信息数据结构class CStuInfoEditDlg : public CDialogCStringm_area;CStringm_college;CStringm_dormitorynum;CStringm_education;CStringm_email;CStringm_idcard;CStringm_major;CStringm_midschool;CStringm_name;CStringm_nation;CStringm_phonenumber;CStringm_session;CStringm_sex;CStringm_specialty;CStringm_stunum;CStringm_brithday;学生个人课表查看模块学生个人课表类CPerCourseList主要函数void CPerCourseList:RefreashPerSelRecords(CString cStudentId)/查询课表函数CString cSourse; cSourse=SELECT CourseName,CourseScore,TeacherName FROM Courses,Teachers WHERE CourseId IN (SELECT CourseId FROM SelectRecords WHERE StudentId=+cStudentId+)AND Teachers.TeacherId IN(SELECT TeacherId FROM Courses WHERE CourseId IN (SELECT CourseId FROM SelectRecords WHERE StudentId=+cStudentId+); m_Adodc.SetRecordSource(cSourse); m_Adodc.Refresh();第二块以教师身份登录主要功能概要-大部分功能与学生类似不一一列出只列出特有功能模块-学生选课情况查询模块选课情况查询CSelInfoManDlg类主要功能函数CSelInfoManDlg:CSelInfoManDlg(CWnd* pParent /*=NULL*/): CDialog(CSelInfoManDlg:IDD, pParent)/AFX_DATA_INIT(CSelInfoManDlg)/ NOTE: the ClassWizard will add member initialization here/AFX_DATA_INITvoid CSelInfoManDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoData
展开阅读全文