基于C+++Oracle11实现(PC)学生成绩教务管理系统【100010050】

news2025/1/19 19:38:00

学生成绩教务管理系统

一.分析与建模

系统业务流程图

项目用例图:

功能需求分析与建模

在这里插入图片描述
在这里插入图片描述

数据需求分析与建模

体之间的联系:学生信息表(student)、教师信息表(teacher)、管理员信息表(Administrator)、课程表(course)、选课表(curricula_variable)、成绩表(score)、公告发布表(announcement)。几张表格。

  • 管理员(Administrator):管理号、姓名、性别、年龄、联系电话、密码、邮箱
  • 公告(announcement):通知编号、管理号、通知标题、 通知内容
  • 学生(student):学号、姓名、性别 、民族、入学时间、专业、培养层次、学生联系电话、学生 QQ、密码、邮箱
  • 成绩(score):学生编号、 课程编号、教师编号、学期、分数
  • 教师(teacher):教师编号、教师姓名、教师姓名、职称、所在学院、教师联系电话、教师 QQ、密码、邮箱
  • 选课表(curricula_variable):选课编号、学号、课程号、学生编号、教师编号、上课时间、学生姓名、教师姓名、是否选课、教师审核
  • 课程(course):课程号、课程名、学分、课程简介

二.系统设计

功能设计

根据学生选课排课–成绩查询管理的需要,学生成绩管理系统从功能上共分几大模块,其结构如图

  • 系统管理员模块:可以进行管理员、教师、学生等不同身份选择性的登陆,对用户权限进行限制,方便不同级别用户工作。
  • 学生管理模块:该模块主要功能是完成查看学生成绩信息、打印成绩报表。修改个人信息、查看公告和选课学习课程等功能。
  • 教师管理模块:该模块主要功能是审核学生的选课,查看,学生成绩、选课、当有挂科时候,发布公告通知、以及对相关学生的成绩的录入合提交给管理员管理功能。
  • 数据库管理员模块:该模块主要功能是查看、审核学生的选课情况、发布公告通知学生和教师,以及删除过于陈旧、误发布的公告。新增加、删除、修改、查询学生教师用户的个人信息。审核教师提交的学生成绩。还附带开发出完成数据的备份、,误删除以及恢复功能。

数据库设计

在学生成绩管理数据库中需建立至少 7 个必要的数据表:学生信息表(student)、教师信息表(teacher)、管理员信息表(Administrator)、课程表(course)、选课表(curricula_variable)、成绩表(score)、公告发布表(announcement)。

系统实现

对系管理员而言,进入登陆界面后,可直接调用数据库中数据修改、查询本系统现有学生成绩信息等;对教师而言,进入登陆界面后,不仅有对教师自身信息能够得取得相关的权限外,可对全校学生成绩修改、查询,统计补考人员,打印成绩单等的操作。对于学生而言,可以实现自己的选课功能,成绩查询和预览、打印成绩单,查看公告。

数据库设计

三.系统开发与维护中的重难点

系统开发与维护环境

近几年来,随着学院新校建设、办学、招生规模的扩大,学校校生从 几千余人增加到 几万余人。与之对应的学生成绩信出现了几何式的增长, 使学校的的教务管理工作变的异常繁重,经常出现成绩查询不准确、补考学生统计不全等情况,采用传统的管理模式不适应学院当前的要求,因此学生成绩管理自动化、信息化也被提上了日程。在学校教务工作中占有很大比重的一项就是每学期末的成绩录入、成绩打印工作,以及部分选课在网上选课,采用传统的人工进行管理不仅任务重、效率低,而且易出错、不易查询、难于维护。

学生成绩管理系统正是为了减轻教务人员工作量,实现学校管理自动化,解决学院学生成绩管理难这一难题的办公软件。本系统以中文版 Power bulider 12.5 为前台开发工具,PowerDesign 15.1 和使用目前到 2018 年为止的最新的 Oracle 11g 数据库作为后台数据库。系统对操作人员的计算机水平要求不高,对他们几乎不加培训便能掌握系统的大部分功能使用。

硬件环境:

windows XP/win7 x86 x64/win10 x86 x64

软件开发环境:

Power bulider 12.5/ PowerDesign 15.1/Oracle 11g

选择原因:

开发时候,因为大部分时间都需要在机房里面进行编写,而 XP 的系统现在还有一部分在计算机机房存在,所以要考虑到兼容,还有主要占领大部分份额的 win7 和现在正在推行的外 win10 的操作系统,都是需要考虑的能够兼容运行的。而实际上面我们开发了中考虑到了 PowerBuilder 提供了对目前流行的大多数关系数据库管理系统的支持,并且在 PowerBuilder 的应用程序中对数据库访问的部分一般采用国际化标准数据库查询语言 SQL,方便我们使用 PowerBuilder 开发的应用程序的时候,可以不做修改或者只做少量的修改就可以在不同的后台数据库管理系统上使用。并且 PowerBuilder 开发的应用程序是独立于服务器上的数据库管理系统的。使用 PowerDesigner 不仅可以加速了开发的过程,而且也向最终的用户提供了管理和访问项目的信息的一个有效的结构方式。它允许我们编码时候创建和管理数据的结构,和开发和利用数据的结构针时候,使用开发工具环境快速地生成应用对象和数据敏感的组件。后台的数据库使用 Oracle 11g 则是考虑了它提供的高性能、伸展性、可用性和安全性,并且更方便地在低成本服务器和存储设备组成的网格上运行 ,相对过往版本而言,Oracle 11g 具有了与众不同的特性。

系统开发与维护的重难点

教师登录界面

user1=sle_1.text
psw1=sle_2.text
username=user1
…
	if rb_2.checked=true then 
		select count(*) into :count1 from teachers where tno= :user1;
		select count(*) into :count2 from teachers where tno=:user1 and tpsw=:psw1 ;
		if count2=1 then 
open(w_teacher_main)
close(parent)

else
	if count1=1 then 
		messagebox("提示","密码错误!")
		count0=count0+1
		if count0=3 then 
			messagebox("提示","错误三次!")
			close(parent)
		else	
		end if				
	else
		messagebox("提示","用户名不存在!")
		count0=count0+1
		if count0=3 then 
			messagebox("提示","错误三次!")
			close(parent)
		else	
		end if						
	end if
end if		

课程信息管理:上传课程信息、检查课程信息

dw_1.dataobject="d_student_view_course"
                dw_1.settransobject(sqlca)
                dw_1.insertrow(0)
                dw_1.retrieve("%")
                dw_1.settransobject(sqlca)
                dw_1.getrow()
                dw_1.retrieve("%"+sle_1.text+"%")
                integer i
                messagebox("提示","课程信息上传成功!")
                dw_1.update()
                commit;
i=dw_1.insertrow(0)
  dw_1.scrolltorow(i)
  dw_1.settransobject(sqlca)
  dw_1.insertrow(0)
  close(parent)

成绩管理:录入学生成绩、查看学生成绩、打印学生成绩

dw_1.settransobject(sqlca)
dw_1.insertrow(0)
integer i
messagebox("提示","成绩录入成功!")
dw_1.update()
commit;
i=dw_1.insertrow(0)
  dw_1.scrolltorow(i)
  close(parent)
  dw_1.dataobject="d_select_chengji"
                  dw_1.settransobject(sqlca)
//dw_1.insertrow(0)
                  dw_1.retrieve("%")
                  dw_1.retrieve("%"+sle_1.text+"%")
                  dw_1.settransobject(sqlca)
                  dw_1.getrow()
                  dw_1.dataobject="d_select_chengji"
                                  dw_1.settransobject(sqlca)
                                  dw_1.retrieve("%")
                                  dw_1.object.datawindow.print.preview=true
                                          dw_1.print()

个人信息管理:密码修改、查看个人信息

string psw1
username=sle_1.text
         select tpsw into :
         psw1 from teachers where tno=:
                                      username;
if sle_2.text=psw1 then
              if sle_3.text=sle_4.text then
                            update teachers set tpsw=:
                                    sle_3.text where tno=:
                                                username;
messagebox("提示","密码修改成功")
close(parent)
    else
        messagebox("提示","两次密码不一致")
        end if
        else
            messagebox("提示","原密码错误")
                end if
                dw_1.settransobject(sqlca)
                    dw_1.retrieve(username)
                    dw_1.settransobject(sqlca)
                    dw_1.getrow()

公告管理模块:发布、查看、删除、打印公告

dw_1.settransobject(sqlca)
dw_1.insertrow(0)
integer i
messagebox("提示","公告插入成功!")
dw_1.update()
commit;
i=dw_1.insertrow(0)
  dw_1.scrolltorow(i)
  dw_1.settransobject(sqlca)
  dw_1.insertrow(0)
  dw_1.dataobject="d_gonggao1"
                  dw_1.settransobject(sqlca)
                  dw_1.retrieve("%")
                  dw_1.retrieve("%"+sle_1.text+"%")
                  dw_1.deleterow(dw_1.getrow())
                  dw_1.update()

选课管理:查看学生选课

dw_1.dataobject="d_teacher_view_course1"
                dw_1.settransobject(sqlca)
                dw_1.insertrow(0)
                dw_1.retrieve("%")
                dw_1.settransobject(sqlca)
                dw_1.getrow()

四.总结

通过为期五周的课程小学期实训教程的临近结束,有一开始的有一个大概的了解数据库,到后来模糊知道了使用 PowerBuild 编写界面程序,发现它是能够如此之快的在短时间类完成相关的一个带界面的管理类程序软件。

随着信息技术的发展,办公自动化已成为社会发展的主要趋势,学生选课–成绩管理系统的开发也就必不可少了,因此在这次的实践活动中,我们决定采用目前流行的 PowerBuilder12.5+Oracle11g+PowerDesign15.0 设计了一个小型的学生选课–成绩查询系统,以增加对于项目的经验积累。完成项目之后,且对设计结果进行了一定的总结。总结如下:

对于 E_R 图,生成表、和表与表之间的联系一定要正确,最好不要有大的问题。可以在设计过程中反复修改,以达到完美。而学生选课–成绩查询管理因为其日常事务比较繁琐,在设计数据库表之前一定要对系统的设计有一个整体的认识,对学生信息和课程信息进行整理,设计好各功能模块的 E-R 图。这样,在后期的编码设计时,避免了在后期便编写源码的过程中反复更改之前设计的表和相关 E-R 图。尤其是注意一点,千千万万不要命名使用英文和拼音混合,不然的话会是一个很悲伤的故事,还经常找不到相关的设计

对于公共部分的源码,窗口控件和布局都可以设计成具有通用性质,以提高编写的性能和缩短研发速度。还要注意代码的健壮性、稳定性和测试时候的一些边缘值的测试。在设计各个功能模块时,要考虑和其他模块的联系,更要结合实际情况对窗口要放置的空间进行分析,尤其在编制代码是要充分考虑各种限制条件,对不同的身份规定其不同的登录权限。

还要注意与组员之间的沟通和交流,毕竟每个小组都是分工合作的,当组员出现了 bug 的时候,要能够帮助其找出错误,向互联网和组长和老师寻求帮助,以提高团队的氛围和整体水平,还可以促进大家之间的情感交流。何乐而不为?

最后通过本小学期实践教学环节,我们不仅掌握了设计的基本步骤,懂得了编程的规范化,习惯和命名的规范化,设计初期的重要性和严谨性,编写的源码程序具有容错性和健壮性。并且在这五周之中,也离不开老师的耐心辅导,总是为了我们的知识的完备性,讲着更多的知识点,希望我们能够学的更好,辛苦劳累。最后通过这次的学习,加深了我们对软件开发的认识与理解。也为今后的开发打下了坚实基础和宝贵的经验。

♻️ 资源

在这里插入图片描述

大小: 38.6MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87248916

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/93151.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redisson夺命15连问

在一个分布式系统中,由于涉及到多个实例同时对同一个资源加锁的问题,像传统的synchronized、ReentrantLock等单进程情况加锁的api就不再适用,需要使用分布式锁来保证多服务实例之间加锁的安全性。常见的分布式锁的实现方式有zookeeper和redis…

深入Java线程池:从设计思想到源码解读

1. 前言 线程池深入详解 2. 初识线程池 我们知道,线程的创建和销毁都需要映射到操作系统,因此其代价是比较高昂的。出于避免频繁创建、销毁线程以及方便线程管理的需要,线程池应运而生。 2.1. 线程池优势 降低资源消耗:线程池…

【观察】亚马逊云科技:探索Serverless创新的“无人区”

毫无疑问,从2006年发展至今的公有云,堪称是云计算的黄金时代。在此过程中,云计算领域涌现出了很多改变传统IT架构和运维方式的新技术,特别是Serverless(无服务器计算)架构的出现,更带来了一次跨…

re:Invent|亚马逊云科技如何赋能广告、游戏、医疗

亚马逊云科技是如何高效利用海量跨域数据进行广告营销的同时,保障用户数据安全隐私呢?亚马逊云科技又在游戏行业、医疗与生命科学、汽车、金融等等行业和领域纷纷推出哪些关键发布和创新应用呢?应行业需求而生,解业务场景之痛&…

用 Footprint Analytics 的数据 API 快速建立你的项目

Footprint 有一个独特的、非常灵活的API,允许你为数据分析建立成熟的数据管道,以及机器学习应用。这是通过提供两种类型的接口来实现的:第一种是用于将数据上传到平台(Upload API);第二种是用于从平台获取数…

C语言函数全解

文章目录一.函数的概念二.C语言中函数的分类2.1库函数C语言库函数的大致分类C语言学习/查找途径2.2自定义函数函数的实参函数的形参函数的传值调用函数的传址调用三.函数的返回值四.函数的链式访问五.函数的嵌套调用六.函数的定义和声明七.函数的递归7.1例题.递归求字符串长度7…

如何使用 FastReport VCL 对文件进行数字签名?

FastReport VCL是用于在软件中集成商务智能的现代解决方案。它提供了可视化模板设计器,可以访问最受欢迎的数据源,报告引擎,预览,将过滤器导出为30多种格式,并可以部署到云,Web,电子邮件和打印中…

MySQL主从复制太慢,怎么办?

本文分析了MySQL主从延迟的原因以及介绍了MTS方案。点击上方“后端开发技术”,选择“设为星标” ,优质资源及时送达mysql主从同步延迟原因导致备库延迟的原因主要有如下几种:通常备库所在机器的性能要比主库所在的机器性能差,执行…

用DIV+CSS技术设计的体育主题网站(足球介绍)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

STM32F4 | 窗口门狗(WWDG)实验

文章目录一、STM32F4 窗口看门狗简介二、硬件设计三、软件设计四、实验现象五、STM32CubeMX 配置 WWDG在本章中,我们将使用窗口看门狗的 中断功能来喂狗,通过 DS0 和 DS1 提示程序的运行状态。一、STM32F4 窗口看门狗简介 窗口看门狗(WWDG&…

【机器学习】算法术语、决策函数、概率模型、神经网络的详细讲解(图文解释)

一、机器学习算法术语 1)数据集(Data Set),训练集(Training Set),验证集(Validation Set)和测试集(Test Set) 数据集分为训练数据和测试数据。测…

100%都会感染,第一波症状最重,后面会轻。家里一定要备这些东西!

这是某医院院长在医院内部会议上关于新冠防治的强调内容,我听了很受教育,觉得非常有必要普及开来,我相信这位院长的专业性。这段会议发言的录音已经在网上流传,由于录音听起来费时且不宜传播,我已将录音转为文字&#…

Kibana入门教程

一、什么是Kibana   Kibana 是一个开源的分析和可视化平台,Kibana 提供搜索、查看和与存储在 Elasticsearch 索引中的数据进行交互的功能。开发者或运维人员可以轻松地执行高级数据分析,并在各种图表、表格和地图中可视化数据 二、安装使用 ①&#xf…

社招前端常考手写面试题总结

手写 Promise const PENDING "pending"; const RESOLVED "resolved"; const REJECTED "rejected";function MyPromise(fn) {// 保存初始化状态var self this;// 初始化状态this.state PENDING;// 用于保存 resolve 或者 rejected 传入的值…

【Python机器学习】使用决策树模型预测消费者未来消费行为实战(附源码和数据集 超详细)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一个预测未来消费行为的示例,即已经采集了过去消费行为的信息,并用来建立一个模型以对未来的消费行为进行预测。该示例简要演示了数据预处理、提取特征、选择模型、训练模型、评估模型、应用等阶段&a…

ModStartCMS v5.4.0 输入过滤增强,导入导出支持

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…

【Java初阶】面向对象三大特性之继承

一、继承 理解继承 Cat继承了Animal类,其中:Animal类称为父类/基类或超类,Cat可以称为Animal的 子类/派生类,继承之后,子类可以复用父类中成员,子类在实现时只需关心自己新增加的成员即可 Java中不支持多继…

DBCO-PEG24-O-amine,DBCO-PEG24-O-NH2,二苯并环辛炔-二十四聚乙二醇-O-氨基

DBCO-PEG24-O-amine中叠氮化物和DBCO基团,DBCO 点击化学可以在水性缓冲液中运行,也可以在有机溶剂取决于底物分子的性质。带有 PEG 臂的试剂会增加化合物的亲水性。DBCO 试剂已应用于生物偶联、标记和化学生物学。 DBCO系列产品包括可用于进一步连接的DB…

机器学习回归模型相关重要知识点总结

回归分析为许多机器学习算法提供了坚实的基础。在这篇文章中,我们将总结 10 个重要的回归问题和5个重要的回归问题的评价指标。 一、线性回归的假设是什么 线性:自变量(x)和因变量(y)之间应该存在线性关系&…

PYNQ -z2 与 PC主板网口直连上网 可ping通外网

文章目录1.下载映像文件并烧录到板子2. 将usb和网线连接到电脑上3.将网络改为共享模式4. 使用xshell新建串口通信连接到板子5. 更改板子ip与PC 同一网段6. 通过ip地址访问7. 访问外网1.下载映像文件并烧录到板子 可以参考 烧录镜像 2. 将usb和网线连接到电脑上 3.将网络改为共…