关闭

学生信息系统---优化

标签: 学生信息管理系统优化
600人阅读 评论(24) 收藏 举报
分类:

   在验收的时候师父提出了好多问题,程序运行没有Bug是远远不够的,我们作为一个软件开发人员,要站在用户的角度思考问题,我们做出来的东西要方便用户的使用,而不是我们会用就行,所以我们要对我们的系统进行不断地优化。

 

一、防止SQL注入

   师父在验收的时候在登陆界面的用户名中输入了“ ’ ”,然后登陆就出现了”91”的错误,这就出现了SQL注入的问题

什么是SQL注入(百度百科里关于SQL注入的解释、攻击和预防)

在现阶段,我想出的解决办法是,用键盘事件来使这个键输入时弹出警告信息,代码如下

   

PrivateSub txtUserName_KeyPress(KeyAscii As Integer)
   If KeyAscii = 39 And 33 Then
        MsgBox "是非法字符,请输入合法字符!", vbOKOnly + vbExclamation, "警告"
        txtUserName.SetFocus
        txtPassword.Enabled = False
   Else
        txtPassword.Enabled = True
   End If
   
End Sub

二、Combobox只能选择不能输入,且有默认项

   在我们使用一些软件,添加个人信息是可选择的项都是有默认值的,这样就为用户带来了便捷

1.讲combobox属性框的Style 属性设为2-Drop down list

2.在代码中添加(设置第一项为默认值)

<span style="white-space:pre">	</span>If comboSex.ListCount > 0Then  
    <span style="white-space:pre">		</span> comboSex.ListIndex = 0
  <span style="white-space:pre">	</span>End If

三、优化窗体大小

   窗体有子窗体和主窗体,子窗体应该把最大化和最小化窗体的按钮去掉,因为子窗体是在主窗体里面的,所以应该最大化最小化。这个只需把Maxbutton和Minbutton的值改为false即可。而且子窗体不能改变大小,所以我把窗体都设为固定大小,则设计时为多大的那么运行出来就是多大的。

四、在添加日期时添加日历控件

   因为如果让用户自己输入日期,那么就会出各种各样的错误,可能是格式错误可能是输入的额日期不合法,所以我们添加一个日历按钮就会省好多事,用户添加方便,我们写代码的时候也可以简化,就不用写那么多验证的代码了。

1.在部件中添加Microsoft Windows Common Controls-2 6.0 如下图


2.添加MonthView控件


3.代码中写

Private SubMonthView1_DateClick(ByVal DateClicked As Date)
   txtRudate.Text = MonthView1.Year & "-" &MonthView1.Month & "-" & MonthView1.Day
   MonthView1.Visible = False
End Sub
 
Private Sub txtRudate_Click()
   MonthView1.Visible = True
End Sub


五、表格MSHFlexGrid去掉第一行

    在源码中固定了两行,这是没有什么用的。

     1.在右击—属性—将固定行改为0,还有就是将行设为1,否则就会有空行;

     2.代码中修改(原来的值)

<span style="white-space:pre">	</span>With myflexgrid
            .Rows = 1(2)
            .CellAlignment = 4
            .TextMatrix(01, 0) = "考试编号"
            .TextMatrix(01, 1) = "学号"
            .TextMatrix(01, 2) = "姓名"
            .TextMatrix(01, 3) = "班号"
            .TextMatrix(01, 4) = "课程名称"
            .TextMatrix(01, 5) = "分数"
        End With


六、在修改密码时,要求验证原密码,防止自己的账户被别人修改密码,导致自己无法访问

如图所示

 

代码如下:

Private Sub cmdOK_Click()
  Dim txtSQL, MsgText As String
  Dim mrc As ADODB.Recordset
  Dim ctrl As Control
  '判断是否为空
  If Trim(txtPassword1.Text) <> Trim(txtPassword2.Text) Then
     MsgBox "两次密码输入不一致!",vbOKOnly + vbExclamation, "警告"
     txtPassword1.SetFocus
     txtPassword1.Text = ""
   Else
     txtSQL = "select * from user_info where user_ID='" &UserName & "'"
     Set mrc = ExecuteSQL(txtSQL, MsgText)
     
     If Trim(txtPassword3.Text) <> Trim(mrc.Fields(1)) Then
        MsgBox "原密码输入错误,请重新输入!", vbOKOnly + vbExclamation, "警告"
        txtPassword3.SetFocus
        txtPassword3.Text = ""
        txtPassword1.Text = ""
        txtPassword2.Text = ""
     Else
        mrc.Fields(1) = txtPassword1.Text
        mrc.Update
        mrc.Close
        MsgBox "修改密码成功!", vbOKOnly + vbInformation, "修改密码"
        Me.Hide
        txtPassword1.Text = ""
        txtPassword2.Text = ""
        txtPassword3.Text = ""
   End If
 
End If
End Sub


七、在修改密码时,提醒用户当前登录的用户是哪个,防止给别的用户修改密码

如图所示

代码如下:

Private Sub Form_Load()
   Dim txtSQL As String
   Dim MsgText As String
   Dim mrc As ADODB.Recordset
   Dim name As String
   
   txtSQL = "select * from user_info where user_ID='" &UserName & "'"
   Set mrc = ExecuteSQL(txtSQL, MsgText)
   
   name = Trim(mrc.Fields(0))
   Label4.Caption = "当前用户名为:" &name
       
End Sub


八、修改信息时 ,当数据无记录时添加提醒。

   如果删除最后一条记录在点那八个命令按钮就会报错,我在八个命令按钮的代码中都添加了,如果查询无记录就提示没有记录,否则就执行原来的代码。这样代码量就变多了,有好的解决方法可以交流哦!代码比较多但是比较简单就不粘到这里了。

九、在添加课程信息时,防止添加重复信息

   按着源码敲完运行的时候,发现只要按设置课程就会出来重复的课程,在添加课程的时候如果一直点也会一直加,这样的系统是不行的。我自己调试的时候就发现了这个问题,当时就想这个系统设置的不好,却没有想我是这个系统的设计者,因为参照了源码写的就觉得不是自己的东西,明明发现了这个问题却不去想办法解决说明,这个学习态度和积极性还是不够的。不讲究才是发想的原动力,不能因为懒得弄而将就,否则谁还用我做的软件呀。

代码如下:

   防止添加课程的时候添加重复课程

   防止设置课程时,加入重复的课程

十、输入数字的文本框输入别的字符就会提示

    像学号只能输入数字,如果输入别的就会弹出提示,代码如下:

Private Sub txtSID_KeyPress(KeyAsciiAs Integer)
 
   If KeyAscii = 8 Then
   Exit Sub
 
        Select Case KeyAscii
   
            Case 48 To 57, 8, 13
   
            Case Else
   
            KeyAscii = 0
   
        End Select
   Else
        MsgBox "学号请输入数字!"
   End If
  
End Sub


   总结:我们是软件的设计者所以我们应该站在用户的角度来考虑问题,要将软件设计的方便于用户,而不是通过约束用户来达到想要的效果。这是我们接触的第一个完整的系统,所以我们可以从这个系统中学到怎样站在用户的角度思考问题。

0
0
查看评论

学生管理系统(数组实现)

头文件: #ifndef _STUDENT_H_ #define _STUDENT_H_ #define N 100 struct student { char name[20]; char sex; int id; int chinese; int math; }; typede...
  • hu_junhua
  • hu_junhua
  • 2018-01-23 15:56
  • 51

学生个人信息管理系统

学生个人信息管理系统具体代码: vvv.cpp #include #include #include #include #include "123.h" int Initlist(Linklist *L)//初始化线性表 { (*L)=(Linklist)malloc(...
  • YY1562cjy
  • YY1562cjy
  • 2016-12-29 16:47
  • 1477

学生信息系统之优化(二)

前言 学生一共进行了三次优化这是第二次和第三次优化的一些内容,学生管理系统的优化真的给我带来了很多意想不到的进步,让我更加明白了如何去学习。 主要内容 1.如何让数据库中的数据显示到VB中            学在做学生的...
  • yujing1314
  • yujing1314
  • 2017-11-15 20:59
  • 96

学生信息系统之优化(一)

前言   学生管理系统完成后,接下来就是优化的时间了,我一共进行了三次优化,随着优化的深入,我收获到了很多的知识,下面给大家分享一下我的收获。 主要内容 1.文本框的格式限制和输入问题   程序的设计尽量全面,减少用户犯错误的概率,而文本框的格式限制正好可以做到这一点,通过...
  • yujing1314
  • yujing1314
  • 2017-11-12 14:37
  • 599

iOS开发 ----- 学生管理系统改进版

之前的那个demo没有添加本地文件读写功能,所以每次都比较麻烦,要输入很多东西,才能看到系统的真面目,所以,今天改进了一下,可以读取本地文件,每次操作后都会保存到文件中,以免发生bug导致数据丢失,没有文件的话,会自动新建,然后会提示添加相关数据,然后会自动保存到文件这个完全是用字符串存储的,而年龄...
  • xiao333ma
  • xiao333ma
  • 2015-07-23 09:38
  • 374

学生信息系统

import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Scanner; import java.util.Set; ...
  • shushi_bk
  • shushi_bk
  • 2016-07-24 14:51
  • 144

实训—学生成绩管理系统

//********************************************************************* /* *Copyright(c) 2015,烟台大学计算机与控制工程学院 *All rights reserved. *项目名称:学生成绩管理系统 ...
  • zhuanger3517
  • zhuanger3517
  • 2015-12-25 12:38
  • 912

顺序表构建学生信息管理系统(C++)

顺序表构建学生管理系统–C++样例 对于本文的任何建议和问题都可留言,我们共同探讨,进步和提高。 上次编写了根据单链表进行构建学生管理系统的C++样例,本次使用顺序表进行构建。单链表与顺序表各有利弊,顺序表能够快速的进行定位,但是必须事先指定表的大小,不利于数据动态增减;而单链表可以有效的进行动...
  • qq_26749025
  • qq_26749025
  • 2017-06-21 15:01
  • 392

C语言实现学生管理信息系统

#include #include #define SIZE 100 enum { SYSEXIT, INPUTSTUDENT, DELETESTUDENT, UPDATESTUDENT, SEARCHSTUDENT, SO...
  • wisdom605768292
  • wisdom605768292
  • 2013-04-04 15:59
  • 918

简易学生信息查询系统

// zuoye.cpp : 定义控制台应用程序的入口点。////#include "stdafx.h"#include"stdio.h"#include"string.h"int menu();void query(); ...
  • HUANG19891023
  • HUANG19891023
  • 2010-06-29 22:26
  • 211
    个人资料
    • 访问:41081次
    • 积分:6578
    • 等级:
    • 排名:第4327名
    • 原创:110篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2643条
    博客专栏
    最新评论