本文阐述了一个C语言文达学院班级管理系统的设计与实现过程。该系统充分利用ASP.NET的轻量级、灵活性和可扩展性,旨在为文达学院提供高效、便捷的班级管理系统。通过详细的需求分析、技术选型、系统设计、开发实现、测试与调试以及部署与上线等步骤,我们构建了一个功能丰富、性能稳定的文达学院班级管理系统。
在当前的互联网时代,ASP.NET技术已经成为了Web应用程序开发的主流技术之一,具有良好的性能和安全性。因此,文达学院班级管理系统基于VisualStudio开发平台,采用C语言和ASP.NET等技术,采用SQL Server数据库来建立数据之间的转换,充分利用ASP.NET的强大功能和C语言的灵活性,提高系统的开发效率和稳定性。实现了系统用户、学生信息管理、教师信息管理、班级信息管理、文明班级管理、系统管理、留言管理、通知公告管理、资源管理、交流管理等核心功能,满足了用户对文达学院班级管理的多样化需求。本文的研究成果不仅为类似系统的开发提供了有价值的参考,也为文达学院班级管理系统的创新与发展提供了新的思路和方法。
关键词:班级管理系统;ASP.NET框架;C语言
C Language Wenda College Class Management System
Abstract
This article elaborates on the design and implementation process of a C language Wenda College class management system. This system fully utilizes ASP The lightweight, flexibility, and scalability of NET aim to provide an efficient and convenient class management system for Wenda College. Through detailed requirements analysis, technical selection, system design, development implementation, testing and debugging, as well as deployment and launch, we have built a functional and stable class management system for Wenda College.
In the current Internet era, ASP NET technology has become one of the mainstream technologies in web application development, with good performance and security. Therefore, the class management system of Wenda College is based on the Visual Studio development platform, using C language and ASP NET and other technologies, using SQL Server database to establish data conversion and fully utilizing ASP The powerful features of NET and the flexibility of C language improve the development efficiency and stability of the system. Implemented core functions such as system user, student information management, teacher information management, class information management, civilized class management, system management, message management, notification and announcement management, resource management, communication management, etc., meeting the diverse needs of users for class management in Wenda College. The research results of this article not only provide valuable references for the development of similar systems, but also provide new ideas and methods for the innovation and development of the class management system in Wenda College.
Keywords: Class management system; ASP NET framework; C language
目 录
1 绪论
1.1 选题背景与意义
1.2开发现状
1.3论文结构与章节安排
2 文达学院班级管理系统系统分析
2.1 可行性分析
2.1.1 技术可行性分析
2.1.2 经济可行性分析
2.1.3 操作可行性分析
2.2 系统功能分析
2.2.1 功能性分析
2.2.2 非功能性分析
2.3 系统用例分析
2.4 业务流程分析
3 文达学院班级管理系统总体设计
3.1 系统架构设计
3.2 系统时序图设计
3.2.1登录模块顺序图
3.2.2添加信息模块顺序图
图3-3 添加信息顺序图
3.3 系统功能模块设计
3.3.1系统总体设计模块图
3.2 数据库设计
3.2.1 数据库概念结构设计
3.3.2 数据库逻辑结构设计
3.4本章小结
4 文达学院班级管理系统详细设计与实现
4.1用户功能模块
4.1.1 前台首页界面
4.1.2 用户注册界面
4.1.3 用户登录界面
4.1.4班级论坛界面
4.1.5通知公告界面
4.1.6班级新闻界面
4.1.7班级留言界面
4.1.8文明班级详情界面
4.1.9个人中心界面
4.2管理员功能模块
4.2.1系统用户界面
4.2.2 文明班级管理界面
4.2.3系统管理界面
4.2.4留言管理界面
5系统测试
5.1 系统测试用例
5.2 系统测试结果
结论
参考文献
致 谢
1 绪论
目前市面上已经有存在一些班级管理系统,但大多数都是基于网页或者桌面程序,而本研究所提出的C语言班级管理系统将具有更高的灵活性和适应性。C语言是一种功能丰富且底层的编程语言,广泛应用于嵌入式系统开发和低级硬件操作,能够充分利用计算机系统的资源,具有更高的执行效率。此外,C语言作为一门经典的编程语言,对于编程语言的学习和理解也具有重要的指导意义。
本研究将利用C语言开发一款适用于班级管理的系统,基于本校的特点和需求,设计实现学生信息管理、教师信息管理、班级信息管理等功能模块。通过该系统的使用,可以实现对班级的全面管理和监控,提高教学质量和效率,提升学生服务的水平。
总之,C语言班级管理系统的研究和开发,将为学校的班级管理提供一种新的解决方案,有助于提高管理工作的效率和精确度,进一步推动学校信息化建设,促进教育教学的数字化。
班级管理系统是指为学校或班级提供信息管理和操作的软件系统。随着教育信息化的不断推进,班级管理系统的开发和应用已经成为学校和教师工作的重要组成部分。目前,已有一些班级管理系统在市场上得到了广泛应用,但仍存在一些问题和局限性。
首先,现有的班级管理系统功能不够完善。大部分系统只提供了简单的学生信息管理和班级作业发布等基本功能,很少涉及到学生成绩管理、考勤管理、班级活动管理等更复杂的功能。这限制了教师和学校对学生和班级信息的全面管理和分析。
其次,现有的班级管理系统界面设计较为简单,不够美观和易用。教师和学生使用系统的频率较高,但许多系统的界面都显得很老旧,并且操作繁琐,不太符合用户的使用习惯。这使得教师和学生使用系统的积极性和效率都受到了一定程度的影响。
再次,现有的班级管理系统安全性不高。在班级管理系统中,涉及到学生的个人信息、考试成绩等敏感数据,安全问题必须得到重视。然而,一些系统在数据传输和存储过程中存在漏洞,容易被攻击者获取敏感数据,给学生和学校带来严重的风险。
最后,现有的班级管理系统与其他系统的集成性不强。学校和教师在教育管理中使用了许多其他的系统,如人事管理系统、图书馆管理系统等,但这些系统与班级管理系统之间没有很好的集成,导致教师和学校需要同时使用多个系统,增加了工作的复杂性和困难度。
综上所述,现有的班级管理系统在功能、界面设计、安全性和集成性方面存在一些问题和局限性。因此,开发一款功能完善、界面美观、安全可靠且具有强大集成能力的班级管理系统对于提高学校和教师的工作效率和管理水平具有重要意义。
本文共分为六章,章节内容安排如下:
第一章:引言。此章节对所设计和实现的系统的背景和状况以及意义进行详细的论述以及说明,同时进行了论文整体框架的结构的简要介绍。
第二章:系统需求分析。章节所做的主要的工作是对系统进行了技术、经济和操作方面可行性的分析;对系统实行了总体功能的需求、用例分析。
第三章:系统的设计。主要是对系统的功能结构进行设计,并对系统数据库的概念结构以及物理结构的设计进行了分析。
第四章:系统的实现。根据系统功能的划分,分别的对系统所需要实现的前台客户功能和后台管理员功能进行了分析和说明。
第五章:系统测试。主要对系统的部分界面进行测试并对主要功能进行测试
2 文达学院班级管理系统系统分析
系统可行行分析是对系统对系统可行性进行一个探讨。在探讨系统的可行性上我们主要从技术上的可行性和经济上的可行性以及法律层面的可行性上进行分析,如果三个层面度通过,我们则认为系统是比较可行的。
技术可行性分析的目的是确认该系统能否利用现有技术实现,并评估开发效率和完成情况。技术的可行性是指在当前的技术条件下,计算机软件和硬件的开发是否能够满足发展的要求。因为该系统的开发基于C语言,所以开发该系统所需的软件和硬件条件可以在普通计算机上满足。因为它占用的内存相对较少,所以用SQL Server数据库开发和设计软件理论上没有问题,因为它占用的内存太少。上述技术可以有效地保证系统的成功和高效开发。
整个系统从设计到开发以及测试过程严谨步骤齐全,所有工作任务全部由本人完成,并未获取外部技术支持,节约了一切服务成本开销以及人工成本,在硬件方面,为节约成本使用一台二手移动工作站作为项目部署服务器以及数据库服务器,成本在一万元一下,整个网络部署也是由本人独立完成不涉及到其他人工费用,整个开发过程本着低成本,低消耗的原则。
文达学院班级管理系统我划分为了学生用户、教师用户和管理员模块这三大部分。
学生用户管理模块:
(1)用户注册登录:游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现发布帖子或班级留言操作,就必须有这个系统的账号,如果没有账号的话,可以注册用户进行相关的操作,同时用户还可以通过“我的”这个按钮对个人信息以及操作的信息进行管控。
(2)查看文达学院班级管理系统的首页信息:文达学院班级管理系统的首页信息包含了首页、班级论坛、通知公告、班级新闻、班级留言、文明班级等。
(3)班级论坛:用户点击“班级论坛”菜单显示所有的班级论坛信息,可以按照分类查看帖子信息,或者输入关键词进行局部搜索,点击可以进入帖子的详细展示界面,在此界面用户可以点赞、收藏、评论,也可以点击“发布内容”输入帖子信息进行发帖。
(4)通知公告:当用户点击“通知公告”这一菜单按钮,会显示管理员在后台发布的所有的通知公告,可以查看详情。
(5)班级新闻:在首页点击“班级新闻”按钮进入班级新闻列表,可以输入关键词进行查询班级新闻信息,并且可以对查看的班级新闻进行评论、收藏、点赞操作。
(6)班级留言:在前台点击“班级留言”按钮会跳转到班级留言填写页面,根据页面提示输入班级留言的内容,点击“提交”进行提交班级留言信息。
(7)文明班级:用户可以查看文明班级的所有信息,包括班级名称、班级简介、班级图片、班级位置等。支持通过搜索关键词的方式对文明班级进行查询,在查询到自己想要了解的文明班级的时候,可以进入查看详细的介绍,在文明班级详情这个界面,同时支持用户对喜欢的文明班级进行收藏、点赞以及评论的功能。
(8)我的账户:在前台点击“我的”下面的“我的账户”可以对个人资料+密码修改进行管控。
(9)个人中心:用户点击右上角的“用户名”,然后点击“个人中心”可查看个人首页、学生信息、班级信息和自己收藏的信息并对其进行管理。
教师用户管理模块:
(1)注册登录:教师用户通过前台注册页面注册账号,然后进行登录。
(2)查看文达学院班级管理系统的首页信息:文达学院班级管理系统的首页信息包含了首页、班级论坛、通知公告、班级新闻、班级留言、文明班级等。
(3)我的账户:在前台点击“我的”下面的“我的账户”可以对个人资料+密码修改进行管控。
(4)个人中心:教师用户点击右上角的“用户名”,然后点击“个人中心”可查看个人首页、学生信息、教师信息、班级信息和自己收藏的信息并对其进行管理。
管理员管理模块:系统用户、学生信息管理、教师信息管理、班级信息管理、文明班级管理、系统管理、留言管理、通知公告管理、资源管理、交流管理
(1)登录:管理员在后台可以输入用户名+密码进行登录,管理员的用户名和密码是在数据库中直接设定好的。
(2)系统用户:管理员可以对文达学院班级管理系统中的管理员和学生用户进行增删改查。
(3)学生信息管理:管理员点击“学生信息管理”菜单可以对学生信息列表进行查看,并进行增删改查。
(4)教师信息管理:管理员点击“教师信息管理”菜单可以对教师信息列表进行查看,并进行增删改查。
(5)班级信息管理:管理员点击“班级信息管理”菜单可以对班级信息列表进行查看,并进行增删改查。
(6)文明班级管理:管理员点击“文明班级管理”会显示出前台展示的所有文明班级信息列表,支持输入文明班级名称对文明班级信息进行查询,如果想要添加新的文明班级,点击“添加”按钮,输入班级名称、班级简介、班级图片、班级位置等信息,点击“提交”按钮就可以添加了,同时可以选择某一条文明班级,点击“删除”进行删除,也可以对用户提交的文明班级评论的信息进行管控。
(7)系统管理:管理员点击“系统管理”菜单可以对首页展示的轮播图。
(8)留言管理:管理员点击“留言管理”菜单可以查看用户班级留言的内容,进行回复或增删改查。
(9)通知公告管理:管理员点击“通知公告管理”菜单可以查看到系统中的所有通知公告信息,对已经存在的通知公告,管理员可以修改,也可以添加新的通知公告或者删除通知公告。
(10)资源管理:管理员点击“资源管理”菜单能够前台的班级新闻和所属新闻分类进行增删改查。
(11)交流管理:管理员可以对系统前台展示的班级论坛以及班级论坛所属的分类进行管控。
文达学院班级管理系统的非功能性需求,比如文达学院班级管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:
表2-1文达学院班级管理系统非功能需求表
安全性 | 主要指文达学院班级管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指文达学院班级管理系统能够按照用户提交的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响文达学院班级管理系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着文达学院班级管理系统的页面展示内容进行操作,就可以了。 |
可维护性 | 文达学院班级管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
文达学院班级管理系统的完整UML用例图分别是图2-1、2-2和图2-3。
图2-1就是学生用户角色的用例展示。
图2-1 文达学院班级管理系统学生用户角色用例图
图2-2就是教师用户角色的用例展示。
图2-2 文达学院班级管理系统教师用户角色用例图
图2-3就是管理员角色的用例展示。
图2-3 文达学院班级管理系统管理员角色用例图
业务流程图不仅能反映出内部业务之间的关系,而且能体现出管理顺序及信息的流动。C语言文达学院班级管理系统必须支持整个组织在不同层次上的各种功能,各个功能模块之间又有各种不同相关的信息进行联系,构成了一个有机的整体,根据文达学院班级管理系统的特点以及结合所面临的实际情况,设计出了系统的业务流程图。
系统的业务流程如下图所示。
本章主要讨论的内容包括文达学院班级管理系统的功能模块设计、数据库系统设计。
本文达学院班级管理系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。
图3-1文达学院班级管理系统架构设计图
表现层(UI):又称UI层,主要完成本文达学院班级管理系统的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本文达学院班级管理系统时的舒适度。UI的界面设计也要适应不同版本的文达学院班级管理系统以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本文达学院班级管理系统的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本文达学院班级管理系统的数据是放在服务端的mysql数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本文达学院班级管理系统的数据存储和管理功能。
登录模块主要满足了管理员以及用户的权限登录,登录模块顺序图如图3-2所示。
图3-2登录顺序图
管理员以及用户登录后均可进行添加信息操作,添加信息模块顺序图如图3-3所示。
文达学院班级管理系统根据前面章节的需求分析得出,其总体设计模块图如图3-4所示。
图3-4 文达学院班级管理系统功能模块图
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
下面是整个文达学院班级管理系统中主要的数据库表总E-R实体关系图。
图3-5 文达学院班级管理系统总E-R关系图
通过上一小节中文达学院班级管理系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | civilized_class_id | int | 10 | 0 | N | Y | 文明班级ID | |
2 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
3 | class_introduction | varchar | 64 | 0 | Y | N | 班级简介 | |
4 | class_image | varchar | 255 | 0 | Y | N | 班级图片 | |
5 | class_location | text | 65535 | 0 | Y | N | 班级位置 | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
7 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | class_information_id | int | 10 | 0 | N | Y | 班级信息ID | |
2 | teacher_users | int | 10 | 0 | Y | N | 0 | 教师用户 |
3 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
4 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
5 | class_introduction | varchar | 64 | 0 | Y | N | 班级简介 | |
6 | number_of_students | int | 10 | 0 | Y | N | 0 | 学生数量 |
7 | class_image | varchar | 255 | 0 | Y | N | 班级图片 | |
8 | class_location | text | 65535 | 0 | Y | N | 班级位置 | |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | forum_id | mediumint | 8 | 0 | N | Y | 论坛id | |
2 | display | smallint | 5 | 0 | N | N | 100 | 排序 |
3 | user_id | mediumint | 8 | 0 | N | N | 0 | 用户ID |
4 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
5 | praise_len | int | 10 | 0 | Y | N | 0 | 点赞数 |
6 | hits | int | 10 | 0 | N | N | 0 | 访问数 |
7 | title | varchar | 125 | 0 | N | N | 标题 | |
8 | keywords | varchar | 125 | 0 | Y | N | 关键词 | |
9 | description | varchar | 255 | 0 | Y | N | 描述 | |
10 | url | varchar | 255 | 0 | Y | N | 来源地址 | |
11 | tag | varchar | 255 | 0 | Y | N | 标签 | |
12 | img | text | 65535 | 0 | Y | N | 封面图 | |
13 | content | longtext | 2147483647 | 0 | Y | N | 正文 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
16 | avatar | varchar | 255 | 0 | Y | N | 发帖人头像: | |
17 | type | varchar | 64 | 0 | N | N | 0 | 论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
3 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
4 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
5 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
6 | icon | varchar | 255 | 0 | Y | N | 分类图标: | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | message_id | int | 10 | 0 | N | Y | 留言板ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 用户ID: |
3 | title | varchar | 64 | 0 | Y | N | 标题: | |
4 | content | longtext | 2147483647 | 0 | N | N | 内容: | |
5 | nickname | varchar | 32 | 0 | N | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像: | |
7 | | varchar | 125 | 0 | Y | N | 留言者邮箱 | |
8 | phone | varchar | 11 | 0 | Y | N | 留言者手机号码 | |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
11 | reply | longtext | 2147483647 | 0 | Y | N | 回复 | |
12 | reply_state | tinyint | 4 | 0 | Y | N | 0 | 回复状态 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | contact_phone_number | varchar | 64 | 0 | Y | N | 联系电话 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表sensitive_vocabulary (敏感词汇)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | sensitive_vocabulary_id | int | 10 | 0 | N | Y | 敏感词汇ID | |
2 | sensitive_vocabulary | varchar | 64 | 0 | Y | N | 敏感词汇 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表slides (轮播图)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | student_information_id | int | 10 | 0 | N | Y | 学生信息ID | |
2 | user_student_id | varchar | 64 | 0 | N | N | 用户学号 | |
3 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
4 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
5 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
6 | contact_phone_number | varchar | 64 | 0 | Y | N | 联系电话 | |
7 | department_name | varchar | 64 | 0 | Y | N | 院系名称 | |
8 | professional_name | varchar | 64 | 0 | Y | N | 专业名称 | |
9 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
10 | home_address | text | 65535 | 0 | Y | N | 家庭住址 | |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | teacher_information_id | int | 10 | 0 | N | Y | 教师信息ID | |
2 | teacher_users | int | 10 | 0 | Y | N | 0 | 教师用户 |
3 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
4 | teacher_gender | varchar | 64 | 0 | Y | N | 教师性别 | |
5 | contact_phone_number | varchar | 64 | 0 | Y | N | 联系电话 | |
6 | department_name | varchar | 64 | 0 | Y | N | 院系名称 | |
7 | professional_name | varchar | 64 | 0 | Y | N | 专业名称 | |
8 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | teacher_users_id | int | 10 | 0 | N | Y | 教师用户ID | |
2 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
3 | teacher_gender | varchar | 64 | 0 | Y | N | 教师性别 | |
4 | contact_phone_number | varchar | 64 | 0 | Y | N | 联系电话 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表upload (文件上传)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
表user (用户账户:用于保存用户登录信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
表user_group (用户组:用于用户前端身份和鉴权)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
整个文达学院班级管理系统的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。
4 文达学院班级管理系统详细设计与实现
文达学院班级管理系统的详细设计与实现主要是根据前面的文达学院班级管理系统的需求分析和文达学院班级管理系统的总体设计来设计页面并实现业务逻辑。主要从文达学院班级管理系统界面实现、业务逻辑实现这两部分进行介绍。
当进入文达学院班级管理系统的时候,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是轮播图,其次是通知公告。系统主界面展示如下图4-1所示。
图4-1 前台首页界面图
文达学院班级管理系统的游客和学生用户时可以进行注册登录,当用户右上角“注册”按钮的时候,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。其用用户注册界面展示如下图4-2所示。
图4-2注册界面图
注册代码如下:
static int Register(Document& doc, Document& doc2, const Request& req, Response& res, acl::db_handle* db, const char* tableName) {
std::string username;
if (doc["username"].IsInt64()) {
username = std::to_string(doc["username"].GetInt64());
}
else {
username = doc["username"].GetString();
}
acl::string sql;
sql.format("select * from `user` where username = '%s';", username.c_str());
const acl::db_row* one = getOneRow(*db, sql);
if (one != NULL) {
FailedJson(res, utf8_encode(s2ws("该账号已存在")), 30000);
return -1;
}
std::string pwd;
if (doc["password"].IsInt64()) {
pwd = std::to_string(doc["password"].GetInt64());
}
else {
pwd = doc["password"].GetString();
}
pwd = MD5(pwd).toStr();
doc["password"].SetString(pwd.c_str(), pwd.size());
return ApiController::add(doc, doc2, req, res, db, tableName);
}
忘记密码
static int forget_password(Document& doc, Document& query, const Request& req, Response& res, acl::db_handle* db, const char* tableName)
{
std::string username = doc["username"].GetString();
acl::string sql;
sql.format("select * from `user` where username = '%s';", username.c_str());
const acl::db_row* one = getOneRow(*db, sql);
if (one == NULL) {
FailedJson(res, "password error!", 30000);
return -1;
}
std::string email = doc["email"].GetString();
string password = MD5(doc["password"].GetString()).toStr();
string sqlWhere = " and username='" + username + "'";
sql = acl::string().format("update %s set email='%s',password='%s' where 1=1 %s;", tableName, email.c_str(), password.c_str(), sqlWhere.c_str());
XLOG_INFO("sql {}", sql.c_str());
if ((*db).sql_update(sql.c_str()) == false)
{
FailedJson(res, "set error");
return (-1);
}
rapidjson::StringBuffer strBuf;
rapidjson::Writer<rapidjson::StringBuffer> writer(strBuf);
writer.StartObject();
writer.Key("result");
writer.Bool(true);
writer.EndObject();
string data = strBuf.GetString();
res.set_content(data.c_str(), "application/json");
return 0;
}
文达学院班级管理系统中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当学生用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到文达学院班级管理系统的首页中;否则将会提示相应错误信息,用户登录界面如下图4-3所示。
图4-3用户登录界面图
static int Login(Document& doc, Document& query, const Request& req, Response& res, acl::db_handle* db, const char* tableName)
{
std::set<std::string> set = getColType(*db, acl::string().format("SELECT * FROM information_schema.COLUMNS WHERE TABLE_NAME = '%s'", tableName));
acl::string sql;
std::string username = doc["username"].GetString();
sql.format("select * from `user` where username = '%s';", username.c_str());
const acl::db_row* one = getOneRow(*db, sql);
if (one == NULL) {
FailedJson(res, utf8_encode(s2ws("账号不存在!")));
return -1;
}
std::string state((*one)["state"]);
std::string password((*one)["password"]);
std::string user_id((*one)["user_id"]);
std::string tokenstring = user_id + ";" + username + ";" + password;
string token = EncryptionAES(tokenstring);
const char* user_group = (*one)["user_group"];
acl::db_handle* db2 = pool->peek_open();
if (db2 == NULL)
{
FailedJson(res, "peek db2 connection error");
return -1;
}
sql.format("select * from `user_group` where name = '%s';", user_group);
const acl::db_row* one2 = getOneRow(*db2, sql);
if (one2 == NULL)
{
FailedJson(res, utf8_encode(s2ws("账号不存在!")));
return -1;
}
std::string source_table((*one2)["source_table"]);
if (source_table.length() > 0) {
sql.format("select * from `%s` where user_id = '%s';", source_table.c_str(), user_id.c_str());
one2 = getOneRow(*db2, sql);
if (one2 == NULL)
{
FailedJson(res, utf8_encode(s2ws("账号不存在!")));
return -1;
}
std::string examine_state((*one2)["examine_state"]);
if (examine_state == utf8_encode(s2ws("未通过"))) {
FailedJson(res, utf8_encode(s2ws("账户未通过审核!")), 70000);
return -1;
}
else if (examine_state == utf8_encode(s2ws("未审核"))) {
FailedJson(res, utf8_encode(s2ws("账户未审核!")), 70000);
return -1;
}
pool->put(db2);
}
rapidjson::StringBuffer strBuf;
rapidjson::Writer<rapidjson::StringBuffer> writer(strBuf);
writer.StartObject();
writer.Key("result");
writer.StartObject();
writer.Key("obj");
writer.StartObject();
for (int i = 0; i < one->length(); i++) {
const char* field = one->field_name(i);
writer.Key(field);
int iValue = one->field_int(i, -1);
if (set.find(field) != set.end()) {
writer.Int(iValue);
}
else {
const char* value = (*one)[field];
value = value == NULL ? "" : value;// utf8_encode(s2ws(value)).c_str();
writer.String(value);
}
}
writer.Key("token");
writer.String(token.c_str());
writer.EndObject();
writer.EndObject();
writer.EndObject();
std::string str = MD5(doc["password"].GetString()).toStr();
if (state == std::string("1")) {
if (password == str) {
string data = strBuf.GetString();
res.set_content(data.c_str(), "text/html;charset=utf-8");
XLOG_INFO_GREEN("res:{}", data.c_str());
return 0;
}
else {
FailedJson(res, "password error");
return -1;
}
}
return ReturnStatus(res, 0);
}
用户点击“班级论坛”菜单显示所有的班级论坛信息,可以按照分类查看帖子信息,或者输入关键词进行局部搜索,点击可以进入帖子的详细展示界面,在此界面用户可以点赞、收藏、评论,也可以点击“发布内容”输入帖子信息进行发帖。班级论坛列表展示界面如下图4-4所示。
图4-4班级论坛列表展示界面图
当访客点击文达学院班级管理系统中导航栏上的“通知公告”后将会进入到该“通知公告”列表的界面,然后选择想要看的通知公告,点击进入到详细界面。通知公告展示界面如下图4-5所示。
图4-5通知公告展示界面图
当用户点击文达学院班级管理系统中导航栏上的“班级新闻”后将会进入到该“班级新闻”列表的界面,然后选择想要看的新闻信息,点击进入到详细界面,在详细界面可以收藏+赞+评论等操作。班级新闻详情界面如下图4-6所示。
图4-6班级新闻详情界面图
点击导航栏上的“班级留言”,可以填写标题、用户名、留言内容,然后点击“提交”按钮进行提交班级留言,班级留言界面如下图4-7所示。
图4-7班级留言界面图
用户可以查看文明班级,在查询到自己想要了解的文明班级的时候,可以进入查看详细的介绍,支持用户对喜欢的文明班级进行收藏、点赞、评论的功能。文明班级详情界面如下图4-8所示。
图4-8文明班级详情界面图
当用户点击右上角“我的”这个按钮,会出现子菜单,学生用户点击“个人中心”可以对个人首页、学生信息、班级信息和自己收藏的信息进行设置管理,教师用户点击“个人中心”可以对个人首页、学生信息、教师信息、班级信息和自己收藏的信息进行设置管理。
学生用户个人中心界面如下图4-9所示。
图4-9学生用户个人中心界面图
教师用户个人中心界面如下图4-10所示。
图4-10教师用户个人中心界面图
文达学院班级管理系统中的管理人员在“系统用户”这一菜单是中可以对注册的学生用、教师用户以及管理员进行管控。界面如下图4-11所示。
图4-11用户管理界面图
查询用户关键代码如下:
static int list_group(Document& doc, Document& query, const Request& req, Response& res, acl::db_handle* db, const char* tableName)
{
if (!doc.HasMember("groupby"))
{
FailedJson(res, utf8_encode(s2ws("缺少参数")));
return -1;
}
string groupby_field = doc["groupby"].GetString();
string queryFields = groupby_field + ",count(1) as count";
string sqlWhere;
if (BuildSqlWhere(doc, db, sqlWhere, tableName) == false) {
FailedJson(res, "BuildSqlWhere error");
return -1;
}
sqlWhere += " group by " + groupby_field;
acl::string sql = BuildSelectSql(tableName, queryFields, sqlWhere);
XLOG_INFO("sql {}", sql.c_str());
const acl::db_rows* result = getRows(*db, sql.c_str());
if (result == NULL) {
FailedJson(res, "getRows error");
return -1;
}
rapidjson::StringBuffer strBuf;
rapidjson::Writer<rapidjson::StringBuffer> writer(strBuf);
writer.StartObject();
writer.Key("result");
writer.StartObject();
writer.Key("count");
writer.Int((*db).length());
writer.Key("list");
writer.StartArray();
const std::vector<acl::db_row*>& rows = result->get_rows();
for (int y = 0; y < (*db).length(); y++) {
const acl::db_row* one = (*db)[y];
writer.StartObject();
for (int i = 0; i < one->length(); i++) {
const char* field = one->field_name(i);
writer.Key(field);
const char* value = (*one)[field];
value = value == NULL ? "" : value;// utf8_encode(s2ws(value)).c_str();
writer.String(value);
}
writer.Key("0");
std::string::size_type sz; // alias of size_t
int count = std::stoi((*one)[(size_t)1], &sz);
writer.Int(count);
writer.Key("1");
writer.String((*one)[(size_t)0]);
writer.EndObject();
}
writer.EndArray();
writer.EndObject();
writer.EndObject();
string data = strBuf.GetString();
res.set_content(data.c_str(), "application/json");
return 0;
}
管理员点击“文明班级”会显示出所有的文明班级,支持选择班级名称等对信息进行查询,如果想要添加新的文明班级,点击“添加”按钮,输入班级名称、班级简介、班级图片、班级位置等信息,点击“提交”按钮就可以添加了,同时可以选择某一条文明班级,点击“删除”进行删除,也可以对用户提交的文明班级评论的信息进行管控。界面如下图4-12所示。
图4-12文明班级管理界面图
管理人员在“系统管理”这一菜单下是可以对文达学院班级管理系统内的轮播图进行添加修改的,其管理界面如下图4-13所示。
图4-13系统轮播图管理界面图
管理员点击“留言管理”菜单能够对用户前台提交的班级留言信息进行回复管控。留言回复界面如下图4-14所示。
图4-14留言回复管理界面图
5系统测试
系统测试包括:用户登录功能测试、文明班级展示功能测试、班级信息添加、班级新闻搜索、密码修改、班级留言功能测试,如表5-1、5-2、5-3、5-4、5-5、5-6所示:
表5-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
文明班级查看功能测试:
表5-2 文明班级查看功能测试表
用例名称 | 文明班级查看 |
目的 | 测试文明班级查看功能 |
前提 | 用户登录 |
测试流程 | 点击文明班级列表 |
预期结果 | 可以查看到所有文明班级信息 |
实际结果 | 实际结果与预期结果一致 |
管理员添加班级信息界面测试:
表5-3 管理员添加班级信息界面测试表
用例名称 | 添加班级信息测试用例 |
目的 | 测试班级信息添加功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)管理员点击班级信息管理,然后点击添加后并填写信息。 2)点击进行提交。 |
预期结果 | 提交以后,页面首页会显示新的班级信息 |
实际结果 | 实际结果与预期结果一致 |
班级新闻搜索功能测试:
表5-4班级新闻搜索功能测试表
用例名称 | 班级新闻搜索测试 |
目的 | 测试班级新闻搜索功能 |
前提 | 无 |
测试流程 | 1)在搜索框填入搜索关键字。 2)点击搜索按钮。 |
预期结果 | 页面显示包含有搜索关键字的班级新闻信息 |
实际结果 | 实际结果与预期结果一致 |
密码修改搜索功能测试:
表5-5 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)管理员密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 使用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
班级留言功能测试:
表5-6班级留言功能测试表
用例名称 | 班级留言测试用例 |
目的 | 测试用户班级留言功能 |
前提 | 用户正常登录情况下 |
测试流程 | 1)搜索查看班级留言信息,点击发布留言。 2)填写班级留言信息,点击进行提交。 |
预期结果 | 班级留言成功 |
实际结果 | 实际结果与预期结果一致 |
通过编写文达学院班级管理系统的测试用例,已经检测完毕用户登录功能测试、文明班级展示功能测试、班级信息添加、班级新闻搜索、密码修改、班级留言功能测试,通过这6大模块为文达学院班级管理系统的后期推广运营提供了强力的技术支撑。
通过C语言文达学院班级管理系统的开发,本人巩固了之前学过的知识,如今将平时所学到的知识融合在设计中,在设计过程中,做了很多的准备,首先,在数据库系统的设计过程中,尤其是在数据库的工作原理、工作特点,对其深刻的讨论,与此同时,对于小型站点来说,最好服务器的选择,其次,利用所学的知识点分析所做的系统,并在此基础上设计。
目前本系统已经上线,正在试运行阶段,用户反馈良好,基本完成用户所需,试运行过程中没有出现阻断性问题,有一些不足和小问题也及时予以修正,系统上线后,为了保证数据的安全性,对系统进行了备份操作,系统备份是每两个月备份一次,数据库备份为每周备份一次,系统部署在租赁的云平台服务器中。
本次系统上线成功后,得到了用户的高度认可,但是在功能上和性能上还需做进一步的研究处理,使其有更高的性能和更好的用户体验。
系统在以后的升级过程中,需要解决一系列用户所提出的问题,例如打印过程中如何避免浏览器的兼容性问题,大量用户访问时,如何保持较高的响应速度,在系统今后的升级过程中将着重解决这些安全性问题。
[1]孔垂炼.云南旅游经济持续“红”[N].云南经济日报,2024-01-04(A01).
[1]刘文粘,常静敏.C语言程序设计课程教学的PBL+CDIO模式[J].福建电脑,2024,40(01):117-120.
[2]Cao J .Digital Information Technology Enabling Computational Thinking C Language Blended Teaching[J].Applied Mathematics and Nonlinear Sciences,2024,9(1):
[3]Jieya L ,Fei Y ,Jiaping L .An Analysis and Exploration of the Path of Class Management for College Class Teachers from the Perspective of Three Comprehensive Education[J].Frontiers in Educational Research,2023,6(31):
[4]王绍强,李天晟.C语言程序设计实验教学改革探讨[J].长春大学学报,2023,33(12):93-96.
[5]宋岩,余若斯,王一华.信息技术在班级管理中的运用[J].读写算,2023,(36):131-133.
[6]颜佳,王泉德,艾波.电子信息类专业C语言程序设计实践教学研究[J].科教导刊,2023,(35):52-55.
[7]苏洁.基于线上线下混合模式的C语言程序设计课程教学研究[J].电脑知识与技术,2023,19(34):154-156+160.
[8]吴香艳.基于C#和.NET的班级学生信息管理系统设计与实现[J].无线互联科技,2023,20(22):47-50.
[9]赵丹梅.“互联网+”背景下“C语言程序设计”课程线上教学模式研究[J].现代信息科技,2023,7(22):179-182.
[10]潘骁,刘叶锋.C语言程序设计课程思政教学实践探索[J].现代商贸工业,2023,44(23):254-256.
[11]Gan Y .The Organic Integration of Innovation and Entrepreneurship Education with Ideological and Political Education—A Case Study of the C Programming Course[J].International Journal of New Developments in Education,2023,5(20):
[12]刘思云,陈贵松.地方高校班级管理系统的设计与实现[J].现代计算机,2022,28(19):116-120.
[13]秦望.班级管理系统与系统管理[J].河南教育(基教版),2022,(04):33-35.
[14]宋雅飞.“ASP.NET”技术在企业网站设计中的应用[J].无线互联科技,2022,19(04):89-90.
[15]M E W ,Moaz A ,Jacob C , et al.Active Duty Service Members, Primary Managers, and Administrators' Perspectives on a Novel Sleep Telehealth Management Platform in the U.S. Military Healthcare System.[J].Military medicine,2022,187(9-10):e1201-e1208.
[16]苏扬.ASP.NET MVC架构与Web开发工作探析[J].电脑知识与技术,2021,17(33):53-54.
[17]常佳宁.基于ASP.NET的图书管理系统设计[J].中国科技信息,2021,(14):73-74.
[18]王喜英.信息化环境下初中班级管理优化策略探究[J].科幻画报,2021,(04):58-59.
[19]郝东晓.高校班级管理信息化平台建设探究[J].数码世界,2020,(11):235-236.
[20]梁相栋,郭小燕,许亮等.班级文化信息管理系统的建设与开发[J].甘肃科技,2020,36(04):25-27+39.
到此,整个基于C语言的文达学院班级管理系统就算完成了,虽然过程十分艰难,但是等到都完成的时候,我感觉无比的自豪,虽然设计的系统还存在许多的纰漏,但是我已经拼劲全力,给自己的大学四年画上了一个圆满的句号。
在这里我首先要感谢的就是大学四年来所有教导我的老师,是他们教会了我许多的专业知识以及做人的道理,从一进校门对对开发系统一窍不通到现在能自主开发一个管理系统,里面包含了前台框架、后台框架、业务流程、数据结构、操作系统等各种知识,只有把他们统一运用好,才能够完成整个系统,这都是老师的功劳;其次我要感谢我的指导老师,在开发这个系统的时候,我遇到了无数的问题,经常通过线上、线下的方式去请教导师,每次去请教导师,他从来没有不耐烦,都是细心的引导,告诉我怎么样实现这个功能,怎么样才能使得系统更加完善,然后通过自己查询相关资料解决问题,提高了自己自主解决问题的能力,授人以鱼不如授人以渔,指导老师的这种工作态度受益终生,我也会向老师不断靠拢,向他学习,在此我只想说一句:“老师,谢谢您,您辛苦了”!最后我还要感谢我的室友、同学,在一起学习这四年,他们不但学习上给了我很多建议,在生活上更加给了我帮助,正是有他们的帮助,我的大学生涯才如此完美。
最后,希望自己在未来的道路上能够越走越远,不辜负在大学的学习以及老师们的细致的教导,追风赶月莫停留,平荒尽处是春山。
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~