登陆模块的描述
登陆模块的描述
核心点:
在做登录模块时,为了防止一些用户暴力破解,添加了验证码功能;为了防止一些用户不经过用户名密码的输入就直接访问后台资源,添加了拦截(过滤)器功能;为了避免用户在登录的时候进行SQL注入,欺骗服务器,我们在进行了JS端和JAVA端的过滤功能并且采用?传参来代替拼接字符串;为了保证用户密码信息的安全性,添加了MD5加密功能。
用户登录的判断流程:
首先判断验证码是否正确,验证码生成后是保存在session中的,将登录页面中用户所填写的验证码与session中的进行对比,如果一样,进行判断用户名密码,反之,提示验证码错误重新输入。
验证码正确后,判断用户名,将用户填写的用户名与数据库中的用户名进行比较,如果正确,进行判断密码,反之,提示用户名错误或没有此用户。
最后判断密码,密码是通过MD5加密的,在用户注册是进行了加密,将加密后的密码保存到数据库中,用户输入密码是再次进行加密,然后与数据库中的密码进行比较,如果正确,跳到成功页面,反之,提示密码错误。
验证码:
按客户需求:如果对安全要求不高的登陆,比如公司内部系统的登陆,对安全要求不高,就不需要验证码之类的功能;如果是对安全要求比较高的场景,比如互联网登陆,对安全要求特别高的,我们需要防止暴力破解,加上验证码;
使用验证码及实现验证码的思路:
(1)使用验证码可以防止用户恶意登录、恶意注册和暴力破解,增加安全性。
(2)实现验证的流程:
a.生成随即的数字字母组合;
b.生成干扰码(点和线);
c.将数字字母组合存入session中
d.将数字字母点线组合起来生成图片,以流的形式输出。
(3)思路:
建一个servlet——>img标签中的src路径保证是一个图片(jpg/gif/png),其中可以放servlet(js/action).servlet默认走的是doget(当method的上面标明是post才走post,其他的没有特殊标明的默认都是get)——>在doget方法中写一些方法,一个生成随即字母数字组合,一个生成干扰码点线,然后再将数字和干扰码组合生成图片,通过流(outputstrim)输出。
生成的数字字母可以存在session中,用户登录时,先在session中判断验证码是否一致。
MD5加密:
MD5加密是对密码的保护,我们可以在登陆时在jsp页面对密码进行md5加密,同样注册时也要对密码进行加密,这样登陆时
md5转码后的密码才可以对应数据库查询出的md5转码后的密码,正确匹配;对于没有登陆直接访问成功页面,我们也需要加过滤器,过滤掉没有登陆而直接访问的请求。
MD5是一个插件,导入后在登陆和注册填写密码后,调用hex_md5(password)方法,将密码转成md5码传入后台。
作用:防止密码泄漏。
过滤器:
如果不加过滤器的情况下,用户只要知道页面路径就可以直接输入地址访问,加上过滤器后,可以防止用户非法进入登陆成功后的页面或系统。
(注:文档可能无法思考全面,请浏览后下载,供参考。
可复制、编制,期待你的好评与关注)。
Vue项目login模块
Vue项⽬login模块登录模块需要做路由的守卫,有些模块是需要被保护的,必须登录才能访问。
常见⼿法是给路由添加meta:{ auth:true }来做标识,表⽰需要做认证。
// 路由守卫router.beforeEach((to, from, next) => {// 判断要进⼊的路由是否需要认证if(to.meta.auth) {// 通过token令牌机制判断是否已经登录const token = localStorage.getItem('token');if (token) {next(); // 如果登录则放⾏,进⼊路由} else {// 跳转,并携带重定向地址next({path: '/login',query: {redirect: to.path}});}} else {// 不需要验证的模块,直接放⾏next();}});在 Vuex 中存储登录状态isLoginimport Vue from 'vue'import Vuex from 'vuex'import user from './service/user'e(Vuex);export default new Vuex.Store({state: {isLogin: localStorage.getItem('token') ? true : false},mutations: {setLoginState(state, bool) {state.isLogin = bool;// true 表⽰登录,false 表⽰注销}},actions: {login({commit}, user) {// 发起登录请求,请求都拆分出去 service ⽂件夹中// 使⽤ service 的请求⽅法user.login(user).then(res => {// 从 res.data 中解构数据,code和tokenconst { code, token } = res.data;if (code) {// 登录成功,修改Vuex中间的登录状态commit('setLoginState', true);// 缓存令牌 tokenlocalStorage.setItem("token", token);}return code; // 返回code 给下⼀个 .then 使⽤});},logout({ commit }) {// 清除缓存localStorage.removeItem('token');// 重置状态commit('setLoginState', false);}}});service⽂件夹下的服务// 返回⼀个 Promises ⽅便外⾯使⽤import axios from 'axios'export default {login(user) {// 注意:请求地址最好是抽出去统⼀管理return axios.get('/api/login', {params: user});}}登录组件中提交事件处理过程// 提交函数中, dispatch 是调⽤ actios 中的⽅法,在通过 commit 发送 mutations ⽅法修改数据// 注意:this.model 就是传递的数据this.$store.dispatch("login", this.model).then(code => {if (code) {// 登录成功后,重定向,如果没有则重定向到⾸页const path = this.$route.query.redirect || '/';this.$router.push(path);}}).catch(error => {// 有错误发⽣或登录失败const toast = this.$createToast({time: 2000,text: error.message || error.response.data.message || "登录失败",type: "error"});toast.show();});需要考虑的检查点如何守卫路由如何进⾏异步操作如何保存登录状态如何模拟接⼝HTTP 拦截器新建interceptor.js⽂件,⽤于拦截请求和响应// token 过期导致请求失败的情况可能出现在项⽬的任何地⽅,可以通过响应拦截统⼀处理// 拦截器的作⽤:是对接⼝做⼀层保护,表⽰所有的接⼝都会带有令牌 token// 可以查看 axios 的⽂档: /zh-cn/docs/const axios = require('axios');export default function(vm) {// HTTP 请求拦截器e(config => {// 在发送请求之前做些什么// 获取token, 并添加到 headers 请求头中const token = localStorage.getItem('token');if (token) {config.headers.token = token;}return config;});// HTTP 响应拦截器// 统⼀处理 401 状态,token 过期的处理,清除token跳转login// 参数 1,表⽰成功响应e(null, err => {// 没有登录或令牌过期if (err.response.status === 401) {// 注销,情况状态和tokenvm.$store.dispatch("logout");// 跳转的登录页vm.$storer.push('/login');// 注意: 这⾥的 vm 实例需要外部传⼊}return Promise.reject(err);});}// 使⽤拦截器// 1. 引⼊拦截器⽂件import interceptor from './interceptor'// 执⾏拦截器初始化interceptor(vm);注销需要清除 token 缓存的两种情况:1. ⽤户主动注销2. token 过期需要做的事情:清空缓存重置登录状态methods: {logout() {this.$route.dispatch('login');}}深⼊理解令牌机制Bearer Token规范概念:描述在HTTP访问OAuth2保护资源时如何使⽤令牌的规范特点:令牌就是⾝份证,⽆需证明令牌的所有权具体规定:在请求头中定义Auuthorization:Bearer token Json Web Token 规范概念:令牌的具体定义⽅式规定:令牌由三部分构成头、载荷、签名头:包含加密算法、令牌类型等信息载荷:包含⽤户信息、签发时间和过期时间等信息签名:根据头、载荷及秘钥加密得到的哈希串滴滴 Cube-UI 库精致的移动端组件库。
超市管理系统数据流程图
超市管理系统数据流程图超市管理系统是一种用于管理超市日常运营的软件系统,能够帮助超市管理者高效地管理商品库存、销售、采购、会员管理等各项业务。
下面是超市管理系统的数据流程图,详细描述了系统的各个模块之间的数据流动和处理过程。
1. 登录模块:用户通过输入用户名和密码登录系统。
系统验证用户身份后,进入主界面。
2. 主界面模块:主界面显示超市各个功能模块的入口,包括商品管理、销售管理、采购管理、库存管理、会员管理等。
3. 商品管理模块:该模块用于管理超市的商品信息。
包括商品的添加、修改、删除、查询等操作。
当有新商品入库时,管理员可以通过该模块添加商品信息;当商品信息需要修改或删除时,管理员也可以通过该模块进行操作。
4. 销售管理模块:该模块用于管理超市的销售业务。
当顾客购买商品时,收银员通过该模块录入销售信息,包括销售时间、商品信息、销售数量、销售价格等。
系统会根据录入的销售信息自动计算销售金额,并更新库存信息。
5. 采购管理模块:该模块用于管理超市的采购业务。
当超市需要进货时,管理员通过该模块录入采购信息,包括采购时间、商品信息、采购数量、采购价格等。
系统会根据录入的采购信息自动更新库存信息。
6. 库存管理模块:该模块用于管理超市的库存信息。
当有商品入库或销售时,系统会自动更新库存信息。
管理员可以通过该模块查询库存信息,包括商品名称、库存数量、进货价格、销售价格等。
7. 会员管理模块:该模块用于管理超市的会员信息。
当顾客办理会员卡时,管理员通过该模块录入会员信息,包括会员姓名、手机号码、会员等级等。
系统会根据会员的消费金额自动计算积分,并更新会员等级。
8. 报表统计模块:该模块用于生成超市的各项业务报表。
管理员可以通过该模块查看销售报表、采购报表、库存报表、会员报表等。
报表可以按照时间、商品类别、会员等级等进行筛选和排序。
9. 系统设置模块:该模块用于设置超市管理系统的基本信息和参数。
管理员可以通过该模块设置超市名称、联系方式、营业时间等。
VB6类模块封装的登录及修改密码模块(源码、注释)
VB6类模块封装的登录及修改密码模块(源码、注释)学会VB6.0以来,为公司编制了很多小型数据库软件。
经常地用到登录以及密码修改模块的建立。
基本模式都是一样的,只是数据表名、用户名字段、密码字段稍有不同。
因此将其做成类模块。
每次不用重复写好些行代码。
对本段代码有什么建议的话可百度私信我,或百度贴吧@wink5000 ,让我们一起学习进步。
大家可以随意传播此文件进行学习。
本模块代码为两部分,一部分为类模块,第二部分为类模块实例后应用。
一、PassChange类模块模块名称:PassChange作者:wink5000模块属性:TableName、UserName、PassWord方法函数:PassWordChange返回值类型:Boolean具体代码如下:Option ExplicitPublic TableName As StringPublic UserName As StringPublic PassWord As StringPublic Function PassWordChange(ByVal tempUserName As String, ByVal tempPassWord As String, ByVal newPassWord1 As String, ByVal newPassWord2 As String) As Boolean这段代码验证用户名密码不能为空If tempUserName = "" Or tempPassWord = "" ThenPassWordChange = FalseMsgBox "用户名密码不能为空"Exit Function这段代码分验证两次填写的新密码不能为空If newPassWord1 = "" Or newPassWord2 = "" ThenPassWordChange = FalseMsgBox "新密码不能为空"Exit FunctionEnd If这段代码验证两次输入的新密码是否相同。
注册登录功能模块描述
注册登录功能模块描述在现代社会,随着互联网的普及和发展,注册登录功能模块已经成为了几乎所有网站和应用程序的基本功能之一。
通过注册登录功能模块,用户可以方便快捷地访问并使用各种在线服务。
本文将对注册登录功能模块进行详细描述,以便读者更好地了解其作用和实现方式。
注册功能是用户第一次使用某个网站或应用程序时必须完成的步骤。
用户需要提供一些基本信息,如用户名、密码、邮箱等,以便系统能够识别并记录用户的身份。
在注册时,通常会对用户输入的信息进行验证,确保其符合规范,并且不与已注册用户的信息重复。
注册功能的实现需要后台数据库支持,将用户输入的信息存储在数据库中,以便后续登录时进行验证。
登录功能是用户在已注册账号的基础上,通过输入用户名和密码来验证身份,从而获得对应的权限和服务。
登录功能的实现需要对用户输入的信息进行验证,确保其与注册时记录的信息一致。
一般来说,登录功能还会包括验证码、记住密码、忘记密码等功能,以提升用户体验和安全性。
登录成功后,系统会生成一个用户身份标识,用于在用户操作过程中进行身份识别和权限管理。
注册登录功能模块的实现离不开前端和后台的配合。
前端负责与用户进行交互,接收用户输入的信息,并将其传递给后台进行处理;后台则负责验证用户输入的信息,与数据库进行交互,最终返回验证结果给前端。
在实际开发中,通常会采用前后端分离的方式,前端使用HTML、CSS、JavaScript等技术,后台使用Java、Python、PHP等技术,通过接口进行数据交换和通信。
除了基本的注册登录功能外,现代网站和应用程序还会结合第三方登录、社交登录、手机验证码登录等方式,以提升用户体验和安全性。
第三方登录可以让用户直接使用已有的社交账号进行登录,减少用户的注册和登录步骤;社交登录可以让用户将自己在社交平台上的信息同步到目标网站或应用程序中,实现信息共享和互通;手机验证码登录则可以通过短信或验证码的方式验证用户的身份,提高登录的安全性。
管理员登录模块测试用例
不输入账号
账号为空
提示登录账号不能为空
不示登录账号提能为空
是
2
输入账号但不输入密码
admin账号密码为空
提示登录密码不能为空
录示登密码不提能为空
是
3
输入密码但不输入账号
账号为空123密码
提示登录账号是必须的
登提示录账号是必须的
是
4
账号和密码都为'or'1'='1
账号'or'1'='1'or'1'='1密码
否
11
输入正确的账号与密码但在账号后加空格
账号admin1
admin1密码
提示登录成功
提示登录成功
是
12
输入正确的账号与密码但在密码后加空格
账号admin1
密码admin1
提示登录成功
提示账号或密码有误
否
13
在账号与密码栏都输入特殊字符
账号·#¥%
¥·密码#%
提示账号或密码有误
提示账号或密码有误
是
3页4共页3第
提示账号或密码有误
提示账号或密码有误
是
5
输入正确的账号与密码
账号admin1
密码admin1
提示登录成功并转到主面
提示登录成功并转到主页面
是
6
输入正确的账号与错误的密码
账号admin1
密码admin
提示账号或密码有误
码示账号或密提有误
是
7
输入错误的账号与正确的密码
账号admin
密码admin1
提示账号或密码有误
测试用例模板
压力测试用例模板
压力测试用例场景描述一:1.用户登录的lmm模块,总共登陆24个用户,所有用户都同时并发操作。
2.用户点击“登记的教程”3.用户点击“启动”,进行课程学习,进入DS模块4.在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
5.点击“返回LMS”按钮,返回到lmm模块,点击“退出”按钮,退出系统场景描述二:1. 用户登陆lmm模块,总共登录48个用户,每1秒登录1个用户2. 用户点击“已登记教程”3. 用户点击“启动”,进行课程学习,进入DS模块4. 在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习;5. 点击“返回LMS” 按钮,返回到lmm模块,点击“退出”按钮,退出系统场景描述三:1.用户登录的lmm模块,总共登陆48个用户,所有用户都同时并发操作。
2.用户点击“登记的教程”3.用户点击“启动”,进行课程学习,进入DS模块4.在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
5.点击“返回LMS”按钮,返回到lmm模块点击“退出”按钮,退出系统场景描述四:1.用户登录的lmm模块,总共登陆48个用户,每秒同时登录10个用户。
2.用户点击“登记的教程”3.用户点击“启动”,进行课程学习,进入DS模块4.在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
5.点击“返回LMS”按钮,返回到lmm模块,点击“退出”按钮,退出系统场景描述五:1.用户登录的lmm模块,总共登陆100个用户,所有用户同时并发操作。
2.用户点击“登记的教程”3.用户点击“启动”,进行课程学习,进入DS模块4.在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
5.点击“返回LMS”按钮,返回到lmm模块场景描述六:1.用户登录的lmm模块,总共登陆200个用户,所有用户同时并发操作2.用户点击“登记的教程”3.用户点击“启动”,进行课程学习,进入DS模块4.在DS模块中进行学习,过程包括:首先,点击一次课程结构树;然后,进行课程内容的学习。
登录注册模块编写
登录注册模块编写登录注册模块编写1、登录模块1.1 功能描述该模块实现用户的登录操作,需要支持以下功能:(1)用户可以通过用户名和密码登录系统;(2)支持用户的自动登录,用户在登录时可以勾选“记住我”可以少输入用户名密码;(3)支持用户的忘记密码功能,如用户忘记密码时可以通过邮箱重新设置密码。
1.2 技术实现(1)表设计用户表(user_info)字段名称t 数据类型t 备注user_idt intt 用户IDuser_namet varchar(50)t用户名user_passt varchar(50)t用户密码user_saltt varchar(50)t密码盐login_timet datetimet 最后登录时间(2)代码实现以下是登录模块的实现代码://登录模块public function login(){//接收用户名$username=I('ername');//接收密码$password=I('parma.password');//判断参数是否为空if(empty($username)||empty($password)){//返回错误信息$this->error('用户名或密码不能为空!');}//根据用户名查询信息$userInfo=M('user_info')->where(array('username'=>$username ))->find();//判断用户是否存在if(empty($userInfo)){//返回错误信息$this->error('用户信息不存在!');}//根据用户id获取用户的盐$salt = $userInfo['user_salt'];//计算加密后的密码$user_pass=md5($password.$salt);//判断密码是否正确if($user_pass!=$userInfo['user_pass']){//返回错误信息$this->error('密码不正确!');}//登录成功,记录登录时间和ip$data['login_time']=time();$data['login_ip']=get_client_ip();M('user_info')->where(array('user_id'=>$userInfo['user_id'] ))->save($data);//设置sessionsession('username',$userInfo['username']);//记住我功能if(isset($_POST['remember_me'])){//设置cookie$time=3600*24*7;cookie('username',$userInfo['username'],$time);}//跳转到首页$this->redirect('Index/index');}2、注册模块2.1 功能描述该模块实现用户的注册操作,需要支持以下功能:(1)用户可以通过用户名和密码登录系统;(2)支持邮箱的注册,用户可以通过邮箱进行注册;(3)支持手机号码的注册,用户可以通过手机号进行注册;(4)支持用户使用第三方账号进行注册,如QQ,微信登录等 2.2 技术实现(1)表设计用户表(user_info)字段名称t 数据类型t 备注user_idt intt 用户IDuser_namet varchar(50)t用户名user_passt varchar(50)t用户密码user_saltt varchar(50)t密码盐login_timet datetimet 最后登录时间(2)代码实现以下是注册模块的实现代码://注册模块public function register(){//接收参数$username=I('ername');$password=I('parma.password');$repassword=I('parma.repassword');//判断参数是否为空if(empty($username)||empty($password)||empty($repassword)){ //返回错误信息$this->error('用户名和密码不能为空!。
用户管理模块功能描述
用户管理模块功能描述用户管理模块是现代软件系统中一个非常重要的组成部分。
它负责管理系统中的用户信息,包括用户的注册、登录、权限控制、个人信息管理等功能。
下面将对用户管理模块的几个主要功能进行详细描述。
1. 用户注册功能用户注册是用户管理模块中最基本的功能之一。
用户可以通过注册功能创建一个新的账户,以便后续使用系统的其他功能。
在注册过程中,用户需要填写一些基本信息,例如用户名、密码、邮箱等。
系统会验证用户填写的信息,确保其合法性和唯一性。
注册成功后,用户就可以使用系统的其他功能了。
2. 用户登录功能用户登录是用户管理模块中另一个重要的功能。
用户可以使用注册时设置的用户名和密码登录系统。
登录功能需要对用户输入的用户名和密码进行验证,确保其与系统中已注册的信息一致。
登录成功后,系统会为用户分配一个唯一的身份标识,用于后续的权限控制和个人信息管理。
3. 权限控制功能权限控制是用户管理模块中的一个关键功能。
系统根据用户的身份标识和角色信息,对用户进行权限控制。
不同的用户可能具有不同的权限,例如普通用户只能访问系统的部分功能,而管理员用户可以访问所有功能。
权限控制功能可以保证系统的安全性和数据的完整性,防止未经授权的用户访问系统的敏感信息。
4. 个人信息管理功能个人信息管理是用户管理模块中一个非常实用的功能。
用户可以通过个人信息管理功能查看和修改自己的个人信息。
例如,用户可以修改自己的密码、邮箱、手机号码等信息。
系统会对用户输入的新信息进行验证,确保其合法性和唯一性。
个人信息管理功能可以帮助用户及时更新个人信息,保持信息的准确性。
5. 密码找回功能密码找回是用户管理模块中一个常见的功能。
用户在忘记密码时,可以通过密码找回功能重新设置密码。
系统会向用户注册时填写的邮箱发送一封包含重置密码链接的邮件。
用户通过点击链接可以进入密码重置页面,并设置一个新的密码。
密码找回功能可以帮助用户解决忘记密码的问题,保障用户的账户安全。
股票交易系统-交易管理子系统详细设计
3 详细设计3.1 登录模块设计3.1.1 模块描述本模块是用户进行身份认证以及认证凭据销毁的模块。
用户通过输入正确的用户名和密码,通过点击页面上的提交按钮来打开相应的页面。
3.1.2 功能IPO图如下:登录:输入处理输出3.1.3 性能完成系统的安全登录和登出。
3.1.6 设计方法登录页面login.php通过表单把文本框内输入的用户名和密码提交给后台处理页面check.php,后台通过检索数据库来判断用户名与密码是否合法。
如果合法,则将表单数据写入$_session[],并跳转到admin.php;如果不合法,则输出相应提示并返回login.php。
伪代码如下:Connection BD;//连接数据库DB.open(); //打开数据库If(BD.searchQuery(form.id,form.pwd)) //检索数据库{If(fetch_row(result)) //如有搜索结果,开始跳转{$_SESSION[‘id’]=$id;$_SESSION[‘pwd’]=$pwd;//保留登录凭据echo "<script> window.location= 'http://localhost/admin.php' </script>";//跳转}else{Echo error; //如果没有,提示相应问题history.go(-1); //返回登录页面}}3.1.7 流程逻辑3.1.8 接口3.2 查看信息模块设计3.2.1模块描述本模块是用户进行身份认证后可以使用的页面。
用户通过页面的下拉列表选择要查询的股票名称,页面通过检索数据库展示相应的股票信息和股票交易信息。
3.2.2 功能IPO图如下:输入处理输出3.2.3 性能用户选择相应的股票名称,系统将展示搜索结果。
3.2.5 输出项股票交易信息:3.2.6 设计方法用户选择股票名称,通过表单传入相应的检索函数中进行检索。
注册登录功能模块描述
注册登录功能模块描述在现代社会,随着互联网的普及和发展,注册登录功能模块成为了几乎所有网站和应用程序的标配。
用户通过注册和登录可以享受到更多的个性化服务,同时也能更好地保护个人信息安全。
本文将从注册和登录两个方面进行详细描述。
注册功能是用户在使用网站或应用程序时的第一步。
用户需要提供一些基本信息,如用户名、密码、邮箱等,以便系统能够识别和区分不同的用户。
在注册时,用户需要填写一个表单,输入所需的信息,并同意相关的用户协议和隐私政策。
注册时,通常会进行邮箱验证或手机短信验证,以确保用户提供的信息真实有效。
在设计注册功能时,需要考虑用户体验和安全性。
注册表单应简洁明了,避免过多的填写项和繁琐的操作。
同时,需要对用户输入的信息进行验证和过滤,确保数据的有效性和安全性。
另外,为了防止恶意注册和机器注册,可以采用验证码等方式进行验证。
登录功能是用户在注册后使用网站或应用程序时的必备环节。
用户可以通过输入用户名和密码进行登录,也可以选择使用手机号码或第三方账号登录。
在登录时,系统会进行身份验证,确认用户的身份和权限。
为了保护用户的账号安全,通常会限制登录失败次数,并提供找回密码的功能。
在设计登录功能时,需要考虑用户体验和安全性。
登录界面应简洁友好,提供快捷的登录方式和密码找回功能。
为了增强安全性,可以采用多因素认证、设备指纹等技术手段。
另外,还可以记录用户的登录历史,及时发现异常登录行为。
总的来说,注册登录功能模块在网站和应用程序中扮演着至关重要的角色。
通过注册和登录,用户可以享受到更多个性化的服务,同时也能更好地保护个人信息安全。
设计注册登录功能时,需要注重用户体验和安全性,确保用户能够便捷、安全地使用网站和应用程序。
希望本文能够对注册登录功能模块有所了解,并在实际设计中起到一定的指导作用。
