【我和openGauss的故事】openGauss获奖项目讲解

news2024/10/9 6:23:56

文章目录

  • 前言
  • 参赛方案介绍
  • 系统需求分析
  • 主要功能模块
  • 设计思路
  • 字段基本数据分析
  • 页面及功能设计
  • 功能函数视图设计
  • 技术亮点及优势
  • 商业模式及市场前景
  • 功能测试
  • 项目总结

前言

2022年8月30日华为鲲鹏应用大赛openGauss赛道上海赛区第三名获奖作品开源分享,我们团队参加本次比赛的时候想了很多方案,但是最终还是决定用自己最擅长的项目

参赛方案介绍

系统实现学生在线考试管理的基本功能,包括学生登录、查看自己的个人信息及考试信息;提供了在线考试的界面;后台管理员有管理员添加学生、管理学生、管理成绩、添加课程、添加题库题目和组建试卷等功能。本次的学生在线考试管理系统采用Python Django做后端、前端框架采用Bootstrap4实现,实现学生考试的动态管理,使得对信息的管理更加及时、高效,提高了效率。同时还对系统的开发原理、功能特点和设计方案进行了介绍。关键词:考试管理 openGuass数据库 Python Django Web

系统需求分析

系统需求分析
(1)学生用户是主要的需求者,主要需求功能是查看当前自己的考试信息、查看考试成绩并可导出以及进行在线考试等。
(2)教师用户主要需求功能是为自己所教授的课程组建题库和相对应的试卷,并可以查看学生的考试信息等。
(3)管理员用户的功能需求较为复杂,包括对学生信息、教师信息、考试信息进行管理。

主要功能模块

(1)用户登录:实现简单的登录及验证
(2)个人信息展示:展示考生个人信息
(3)考试管理:展示可以考试的试卷,考试及自动计算考试成绩。
(4)考试成绩管理:展示考试结果、导出考试信息
(5)后台基础数据管理:试卷,试题,考生等信息更新维护。
在这里插入图片描述

设计思路

设计思路
系统设计包括三部分:数据库设计,功能函数视图设计,前端页面设计
数据库设计
根据对系统需求分析,得出该考试管理系统大致需要六个实体,他们的实体属性如下图所示:

在这里插入图片描述

根据上面的实体联系图可以得出以下几个表:

学院表:Academy
专业表:Major
课程表:Course
学生表:Student
题库表:QuestionBank
试卷表:TestPaper
学生成绩表:Record

1.学院—序号、名称
2.专业—序号、名称
3.课程—课程号、课程名
4.学生—学号、密码、姓名、性别、班级、邮箱
5.试卷—标题、科目、使用专业、考试时常、开始时间
6.题库—序号、专业、科目、备选项、题目、答案、难度、分值、题目类型

在这里插入图片描述

字段基本数据分析

在这里插入图片描述

页面及功能设计

1、登录页面:
其中需要登录,校验,登录后同时需要存储用户信息在Session中,以备登录后的页面使用。
2、首页(考试信息页):
页面需要显示当前用户可以参考的考试试卷信息,在此页面点击开始考试可以跳转到考试页面。
3、考试页面:
展示对应试卷的题目和选项信息,同时可以进行答题,交卷后可以自动计算考试分数并存入数据库。
4、成绩显示页面:
展示对应考试的考试结果
5、后台管理:
用于管理我们的专业,考生,试卷,题库等基础信息,为了快速实现系统将直接启用Django自带的Admin管理功能。
6、个人详情:
用于展示个人详情信息。
在这里插入图片描述

功能函数视图设计

功能函数视图设计
学生在线考试系统是实现学生在线考试、查看相关信息的一个平台,整个学生在线考试系统共分为3个大模块:管理员模块,学生模块和公有模块,其中复杂的方法和模块的详细设计流程图如下。

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

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

在这里插入图片描述

技术亮点及优势

openGuass是基于PostgreSQL9.2版本开发的,基本包括了PostgreSQL9.4的功能。所以可以采用连接postgresql的方式连接openGauss数据库。

django项目下的setting中的DATABASES下进行以下配置:

DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'postgres', #数据库名
'USER': 'andy', #用户名
'PASSWORD': 'xxxxxxx', #密码
'HOST': 'xxx.xxx.xxx.xxx',#虚拟机ip
'PORT': xxxx #openGauss数据口的端口
}
}

Django项目框架搭建起来后,我们所有对系统的前后台所有的程序开发都可以在这个项目中进行了,一个典型的Django项目模块功能的开发包括如下几个步骤:
(1)创建app
(2)注册app
(3)定义模型
(4)定义视图函数
(5)配置访问路由URL
(6)静态资源准备及配置
(7)前端模板开发
(8)测试及运行

商业模式及市场前景

国外数据库占据国内大部分市场,关注国际局势的每个人都明白,核心技术掌握在自己手里的重要性,所以说我们要提倡使用属于我们自己的核心技术,这对于我们是很重要的!

在这里插入图片描述

功能测试

登录测试
在这里插入图片描述

查询测试

在这里插入图片描述

考试测试

在这里插入图片描述

数据库信息查询测试

在这里插入图片描述

项目总结

我们团队通过这次openguass开发,进一步掌握数据库的方法和技术,提高软件开发的实际能力,培养设计能力和综合分析、解决问题的能力。
学习和实践了分析和设计软件系统的各种知识,包括面向对象的系统分析与设计,编码和测试方面的知识。
熟悉了如何根据实际需要分析实体关系,画出ER图从而设计出符合要求的数据库表。
学习和实践的数据库的增删改查功能在具体功能开发中的使用。
熟悉了openGuass数据库的相关操作。

作者:企鹅圈

openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性。

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

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

相关文章

再学C语言23:分支和跳转——if语句

一、简单if语句 if语句被称为分支语句(branching statement)或选择语句(selection statement),功能是让程序选择分支中的一条前进 if语句一般形式: if(expression)statement 如果expression的值为真&am…

【数据结构】LeetCode移除链表元素、反转链表、链表的中间结点

目录 一、移除链表元素 1、题目说明 2、题目解析 二、反转链表 1、题目说明 2、题目解析 三、链表的中间结点 1、题目说明 2、题目解析 一、移除链表元素 1、题目说明 题目链接:移除链表的元素 给你一个链表的头节点 head ,和一个整数 val,…

蓝牙资讯|苹果获得智能戒指专利,可用于交互 AR / VR 头显设备

美国商标和专利局(USPTO)批准并公示了苹果的一项智能戒指专利。这款戒指主要作为苹果混合现实头显设备的辅助交互设备,但可以和 iPhone、iPad、AirPods、Mac 和其它设备一起使用。 苹果希望通过智能戒指来改善 AR / VR 世界的交互体验&…

工程项目管理系统源码-简洁+好用+全面-工程项目管理系统

​ ​工程项目管理系统是指从事工程项目管理的企业(以下简称工程项目管理企业)受业主委托,按照合同约定,代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 ​系统定义 工程项目管理企业不直接与该工程项目的总承…

javafx实现的工资管理系统

🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习…

ESP8266 SDK开发(ESP8266_RTOS_SDK 3.x)之AiThinkerIDE_V1.5.2安装、配置以及编写烧录一个程序

【本文发布于https://blog.csdn.net/Stack_/article/details/128509864,未经允许不得转载,转载须注明出处】 前言 乐鑫官方不搞IDE,安信可搞了IDE,但是各版本之间安装配置有差异,还没有文档说明。官方安装配置教程不完…

CTFHUB技能树-SSRF-redis协议踩坑

在gopherus上面输入命令:python gophers.py --exploit redis 将自动生成的代码url解密可以得到 如果是get传参需要再进行一次url编码 虽然蚁剑连接不上但可以用urlshell?cmdls / 获取flag 接下来看可以连接蚁剑的代码 文件名最好还是用shell.php 我测试了s.…

【C++初阶8-vector实现】没想的那么简单!

前言 本期带来vector实现,和以前的顺序表差别不大。 博主水平有限,不足之处望请斧正! 预备知识 实现参考SGI的stl30 我们看这种源码,要抓框架看:首先找类,看它的属性,再看方法 template &l…

全方位解析 C 端和 B 端的产品特性

近年来,互联网进入下半场,C 端流量红利逐渐消退,很多企业转向了 B 端服务,随之而来的是产品设计者的转型,现在越来越多的 C 端产品设计师开始涉足到 B 端产品的设计,这是一个知识迁移的过程,需要…

自动驾驶专题介绍 ———— 摄像头

文章目录介绍工作原理实现功能分类按通信协议区分按不同感光芯片按像元排列方式介绍 摄像头可以采集汽车周边的图像信息,跟人类的眼睛最为接近。摄像头可以拥有较广的视场角、较大的分辨率,还可以提供颜色和纹理等信息。这些信息对于实现自动驾驶功能是存…

Mentor-dft 学习笔记 day48-OCC With Capture Enable Clock Control Operation Modes

OCC With Capture Enable 有一个OCC具有capture_enable输入,可以与自由运行的慢速时钟一起使用。当OCC指定为启用捕获(capture_trigger:capture_en)时,在输入自由运行的慢时钟上添加时钟门控器,以从自由运行的时钟输…

影响宝宝大脑发育的6个坏习惯,你可能每天都在做

“望子成龙,望女成凤”这几乎是每个父母的愿望。虽然有一个高智商的天才宝宝太难了,但从不妨碍父母希望孩子更健康、更聪明。所以大家都比较关注宝宝的大脑发育,希望宝宝的大脑发育更好,长大后更聪明。但在日常生活中,…

android 12+从后台启动FGS限制

后台启动FGS限制 限制简介 以 Android 12(API 级别 31)或更高版本为目标平台的应用在后台运行时无法启动前台服务,少数特殊情况除外。 如果应用程序在后台运行时尝试启动前台服务,而前台服务不满足其中一种异常情况,系…

vue前端打包Docker镜像并nginx运行

首先说明咱们的前端项目是基于Vue的,反向代理使用的是nginx 1.打包vue前端项目生成dist文件夹上传至服务器 新建一个文件夹,叫vueDockerTest,下面的文件都需要。 cert是你存放ssl证书的文件夹,nginx.conf 是nginx的配置文件&am…

Kotlin 惰性集合操作-序列 Sequence

集合操作函数 和 序列 在了解 Kotlin 惰性集合之前,先看一下 Koltin 标注库中的一些集合操作函数。 定义一个数据模型 Person 和 Book 类: data class Person(val name: String, val age: Int) data class Book(val title: String, val authors: List…

jmeter 5.5+influxdb 2.0+grafana v9.3.2 - 压测看板setup

Docker set up 安装docker应用 https://docs.docker.com/desktop/install/mac-install/,在官网下载docker安装包,和安装其他的mac应用是一样的操作。 设置国内的镜像仓库(拉取镜像会快很多) {"registry-mirrors": [&q…

叠氮-聚乙二醇-羧酸;叠氮-单乙二醇-丙酸Azido-PEG1-acid;1393330-34-1小分子PEG衍生物

Azido-PEG1-acid 中文名称:叠氮-聚乙二醇-羧酸;叠氮-单乙二醇-丙酸 英文名称:Azido-PEG1-acid; 分子式:C5H9N3O3 分子量 :159.1 CAS:1393330-34-1 外观:粘稠液体或者固体粉末&#…

SHA和AES加密+GUI Swing写的一个本地运行和保存的密码管理小工具

目录效果项目结构功能1、登录2、加密3、解密4、列表代码1、先准备好两种加密方式的工具类SHAUtilAESUtil2、登录窗口3、主页窗口(加密和解密面板)4、主页窗口(列表面板)5、主程序(main)最后通过SHA和AES加密…

TestStand-序列步骤属性

文章目录GeneralRun OptionLoopingPost ActionSwitchingSynchronizationExpressionPreconditionsRequirementAdditional ResultPropertyCtrl-N创建一个新的Sequence,通过右键创建任意步骤 General Name -步骤的名称。 Type -步骤类型。一般不需要设置。 Adapter-适…

Android Kotlin之协程-异步流Flow的使用

数据流以协程为基础构建,与仅返回单个值的挂起函数相反,数据流可按顺序发出多个值。从概念上来讲,数据流是可通过异步方式进行计算处理的一组数据序列。所发出值的类型必须相同。 数据流包含三个实体: 提供方会生成添加到数据流…