【计算机毕业设计】nodejs重点人员信息查询系统

一、前言

随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,重点人员信息查询就是信息时代变革中的产物之一。
任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤,基于Node.js语言、express框架、B/S架构、Mysql数据库设计并实现了重点人员信息查询系统。系统主要包括用户、重点人员信息等功能模块。
本文首先介绍了重点人员信息查询系统技术的发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据系统总体功能模块的设计绘制系统的功能模块图,流程图以及E-R图。然后,设计框架并根据设计的框架编写代码以实现系统的各个功能模块。最后,对初步完成的系统进行测试,主要是功能测试、单元测试和性能测试。测试结果表明,该系统能够实现所需的功能,运行状况尚可并无明显缺点。

二、开发环境

开发语言:nodejs
框架:Express
数据库:mysql 5.7(一定要5.7版本)
数据库工具:Navicat11
开发软件:VS code/HBuilder X
浏览器:谷歌浏览器

三、系统功能效果

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

四、核心代码

import { Router } from 'express'
import { QueryTypes } from 'sequelize'
import toRes from '../lib/toRes'
import sequelize from '../models/sequelize'
import util from '../lib/util'

export default ({ config, db }) => {
	let api = Router()

	// 获取某表的某个字段列表接口
	api.get('/option/:tableName/:columnName', async (req, res) => {

		try {

			const results = await sequelize.query(`SELECT ${req.params.columnName} FROM ${req.params.tableName}`, {
				plain: false,
				raw: true,
				type: QueryTypes.SELECT
			})

			let result = []
			if (results.length > 0) {
				results.forEach(item => {
					result.push(item[req.params.columnName])
				})
			}

			toRes.record(res, 0, result)
		} catch(err) {

			toRes.session(res, 500, '服务器错误!', '', 500)
		}
	})

	// 获取某表的单行记录接口
	api.get('/follow/:tableName/:columnName', async (req, res) => {

		try {

			toRes.record(res, 0, await sequelize.query(`SELECT * FROM ${req.params.tableName} WHERE ${req.params.columnName} = '${req.query.columnValue}'`, {
				plain: true,
				raw: true,
				type: QueryTypes.SELECT
			}))
		} catch(err) {
			
			toRes.session(res, 500, '服务器错误!', '', 500)
		}
	})

	// 修改某表的sfsh状态接口
	api.get('/sh/:tableName', async (req, res) => {

		try {
			
			let sfsh = req.body.sfsh === '是' ? '否' : '是'
			await sequelize.query(`UPDATE ${req.params.tableName} SET sfsh = ${sfsh} WHERE id = ${req.body.id}`)

			toRes.session(res, 0, '编辑成功!')
		} catch(err) {

			toRes.session(res, 500, '服务器错误!', '', 500)
		}
	})

	// 获取需要提醒的记录数接口
	api.get('/remind/:tableName/:columnName/:type', async (req, res) => {

		try {

			let sql = 'SELECT 0 AS count'
			
			if (req.params.type == 1) {
				if (req.query.remindstart) sql = `SELECT COUNT(*) AS count FROM ${req.params.tableName} WHERE ${req.params.columnName} >= ${req.query.remindstart}`
				if (req.query.remindend) sql = `SELECT COUNT(*) AS count FROM ${req.params.tableName} WHERE ${req.params.columnName} <= ${req.query.remindend}`
			}

			if (req.params.type == 2) {
				if (req.query.remindstart) {
					let remindStart = util.getDateTimeFormat(0 - req.query.remindstart, "yyyy-MM-dd")
					sql = `SELECT COUNT(*) AS count FROM ${req.params.tableName} WHERE ${req.params.columnName} >= '${remindStart}'`
				}
				if (req.query.remindend) {
					let remindEnd = util.getDateTimeFormat(req.query.remindend, "yyyy-MM-dd")
					sql = `SELECT COUNT(*) AS count FROM ${req.params.tableName} WHERE ${req.params.columnName} <= '${remindEnd}'`
				}
			}

			const results = await sequelize.query(sql, {
				plain: true,
				raw: true,
				type: QueryTypes.SELECT
			})

			toRes.count(res, 0, results.count)
		} catch(err) {
			
			toRes.session(res, 500, '服务器错误!', '', 500)
		}
	})

	// 计算规则接口
	api.get('/cal/:tableName/:columnName', async (req, res) => {

		try {
			
			toRes.record(res, 0, await sequelize.query(`SELECT SUM(${req.params.columnName}) AS sum, MAX(${req.params.columnName}) AS max, MIN(${req.params.columnName}) AS min, AVG(${req.params.columnName}) AS avg FROM ${req.params.tableName}`, {
				plain: true,
				raw: true,
				type: QueryTypes.SELECT
			}))
		} catch(err) {

			toRes.session(res, 500, '服务器错误!', '', 500)
		}
	})

	// 类别统计接口
	api.get('/group/:tableName/:columnName', async (req, res) => {

		try {
			
			toRes.record(res, 0, await sequelize.query(`SELECT COUNT(*) AS total, ${req.params.columnName} FROM ${req.params.tableName} GROUP BY ${req.params.columnName}`, {
				plain: false,
				raw: true,
				type: QueryTypes.SELECT
			}))
		} catch(err) {

			toRes.session(res, 500, '服务器错误!', '', 500)
		}
	})

	// 按值统计接口
	api.get('/value/:tableName/:xColumnName/:yColumnName', async (req, res) => {

		try {
			
			toRes.record(res, 0, await sequelize.query(`SELECT ${req.params.xColumnName}, SUM(${req.params.yColumnName}) AS total FROM ${req.params.tableName} GROUP BY ${req.params.xColumnName} DESC`, {
				plain: false,
				raw: true,
				type: QueryTypes.SELECT
			}))
		} catch(err) {

			toRes.session(res, 500, '服务器错误!', '', 500)
		}
	})

	return api
}

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue毕业设计是指使用Vue框架完成的一项毕业设计项目。Node.js古诗词鉴赏学习网站是指一个基于Node.js开发的网站,用于展示和学习古诗词。VSCode源代码是指Visual Studio Code的源代码,它是一款由微软开发的跨平台的集成开发环境(IDE)。 对于Vue毕业设计,我可以使用Vue框架来开发一个功能完善的网站或应用程序。通过Vue的数据绑定、组件化和路由等特性,可以实现页面的动态展示和用户交互。我可以使用Vue的脚手架工具快速搭建项目骨架,然后根据设计需求进行页面开发、数据管理和交互逻辑的编写。最终,我可以通过Vue构建工具将项目打包为可部署的静态文件,并将其部署到服务器上供用户访问和使用。 对于Node.js古诗词鉴赏学习网站,我可以使用Node.js作为后端技术,搭建一个运行在服务器上的网站。Node.js具有事件驱动和非阻塞I/O的特性,适合处理大量并发请求。我可以使用Express框架搭建Web应用的后端,并使用数据库存储古诗词的数据。同时,我可以使用模板引擎来渲染动态页面,并使用路由来处理用户请求。最终,我可以部署这个网站到服务器上,供用户进行古诗词的学习和鉴赏。 对于VSCode源代码,我可以通过源代码阅读和理解VSCode的实现原理。VSCode采用Electron技术,基于HTML、CSS和JavaScript构建,具有丰富的插件系统和强大的编辑功能。通过阅读源代码,我可以深入了解VSCode是如何实现多窗口、代码编辑、代码补全、调试等功能的。同时,我也可以学习到VSCode的工程化开发方式和项目管理方法。通过研究VSCode源代码,我可以提升自己的编程能力和项目开发经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写JAVA代码的人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值