C#登录窗口及验证(+SQL)
团队成员及分工
团队: Blue 团队共有六人
姓名: 学号后四位: 贡献分:
张 宇(队长) 1152 1+1.7=2.7分
丁志愿 1011 1+1=2分
侯贺琦 1027 1+1=2分
李锦城 1040 1+0.3=1.3分
张玉冕 1153 1分
康 贺 1169 1分
1.确定团队成员绩效评估方法 -->个人在团队中的绩效
2.需求分析及设计思路 由张 宇、侯贺琦 负责
3.界面设计及文档记录 由康贺、张玉冕负责
4.具体代码编写(程序设计) 每个成员都要认领自己认为可以完成的任务
5.测试与调试 由丁志愿、李锦城负责
目标:为了顺利完成团队任务,促进每一个成员的学习。
A 每次集合是否按时到场
B 是否能促进团队的团结。
C 是否能按时在团队合作中按时完成编码任务
D 是否能按时提交每日的工作日志
达到以上要求,根据每个人对团队所做的贡献来评分,凡做一件不利于团队团结和项目进度的行为皆扣相应的分数。
|
姓名 |
张宇 |
侯贺琦 |
李锦城 |
康贺 |
张玉冕 |
丁志愿 |
|
是否按时到会 |
100 |
100 |
100 |
90 |
90 |
100 |
|
会上积极发言 |
100 |
100 |
90 |
70 |
80 |
100 |
|
按时完成各自任务 |
100 |
100 |
90 |
75 |
80 |
100 |
|
提交每日的工作日志 |
100 |
100 |
90 |
90 |
90 |
100 |
|
工作状况分值 |
400 |
400 |
370 |
325 |
340 |
400 |
用户需求:
可以通过输入用户名和密码来进行登录!并且在登录的时候,如果用户名不存在,亦或是密码不对,此时要给出提示!
具体设计思路:
第一步:先创建一个数据库!毕竟没有用户也没办法登录是吧,在VS服务器资源管理器里新建一个名为repair的数据库,添加一个名为user_info的表,并插入了两条测试记录!
第二步:新建一个窗体,摆上三个Lable,两个文本框,两个按钮,给每个控件起一个好记的Name,界面布置一下!
第三步:准备工作做好,下面开始写登录按钮事件,这时就要连接数据库了,那么新建一个DBConn类,把连接字符串封装到DBConn.cs里面。
第四步:请看代码实现↓↓↓
代码实现:
DBConn.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
namespace sixth
{
class DBConn
{
//连接字符串
public static string connStr = "Data Source=.;Initial Catalog=repair;Integrated Security=True;Pooling=False";
public static SqlConnection conn = new SqlConnection(connStr);
}
}
FormLogin.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace sixth
{
public partial class FormLogin : Form
{
public FormLogin()
{
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e)
{
try
{
if (txtUsn.Text.Trim() == "")
{
labMessage.Text ="用户名不能为空!";
txtUsn.Focus();//获取焦点
return;
}
else if (txtPwd.Text.Trim() == "")
{
labMessage.Text ="密码不能为空!";
txtPwd.Focus();
return;
}
//老师说了:下面这种方法会有通过文本框输入SQL语句来恶意损坏数据库的可能,所以用了参数的形式来获取文本框的值!
//string sqlStr = "select userName,passWord from user_info where userName='" + txtUsn.Text.Trim() + "'";
string sqlStr = "select userName,passWord from user_info where userName=@userName";
DataSet ds = new DataSet();
DBConn.conn.ConnectionString = DBConn.connStr;
DBConn.conn.Open();
SqlCommand cmd = new SqlCommand(sqlStr, DBConn.conn);
cmd.Parameters.Add());//添加参数
cmd.Parameters["@userName"].Value = txtUsn.Text;//把用户名文本框里的东西给@userName
SqlDataReader sdr = cmd.ExecuteReader();
if (!sdr.Read())//因为是通过userName查询数据的,所以如果没有读到这条数据,肯定是用户名不存在
{
labMessage.Text = "用户名不存在!请重新输入";
txtUsn.Text = "";//文本框置空
txtPwd.Text = "";
txtUsn.Focus();
}
else if (sdr["passWord"].ToString().Trim() == txtPwd.Text.Trim())
{
labMessage.Text = "恭喜您已成功登录!";
}
else
{
labMessage.Text = "密码错误!请重新输入!";
txtPwd.Text = "";
txtPwd.Focus();
}
}
catch (Exception ex)
{
labMessage.Text = "登录异常:" + ex.Message;
txtUsn.Text = "";
txtPwd.Text = "";
txtUsn.Focus();
}
finally
{
DBConn.conn.Close();//最重要的是要关闭数据库!
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
Application.Exit();//退出
}
}
}
测试:
1.数据库、表格及测试数据
2.成功登录
3.用户名不存在;其实当用户名不存在的时候,是让文本框置空的,这里为了
方便展示
4.密码错误,密码文本框置空,焦点转移至此
PSP耗时分析:





团队编程总结:
一个团队,要做好一个项目,要有十分全面的考虑以及分析。可能一个人并不能把整个项目都考虑的非常到位,所以Team Leader先组织开个小会,以便收集大家的意见。其实这次,大家都挺积极的配合,个别同志由于各种原因大家也都能理解。但我们始终遵循一条原则,多劳多得!
其实这次只是一个开始,但我们一样要按照流程来完成任务,要把开始做到完美,那么后续工作才可以陆续开来。
团队编程之个人总结:
侯贺琦:
这次的作业比较简单,当然,是相对于我们队长来说。他能带动我们完成任务,已经是功不可没。虽然任务简单,但队长仍旧分为几个小任务来交给我们完成,这次的做作业有用到数据库的知识,我数据库是最薄弱的,不得不重拾以前的知识,我面对库时真的是手忙脚乱慌得一塌糊涂,毕竟也是上个学期挂掉数据库的人,然而这并没有什么用,关键时刻还得靠队长,此时队长挺身而出,狂补数据库连接知识,最终将其完成。其实窗体应用挺好的,我喜欢窗体的方方正正。其实怎么说,代码这东西与我无缘,我并不是那么喜欢,大一时的HTML纯属是无聊才学着玩的,也有一点点喜欢在里面,到了大二,其实还是怨自己吧,挺多不会的。张宇同学能带着我们学习真的是挺感动的,我想,他应该是最有可能走这条路的人,愿他能成功。
丁志愿:
经过上次团队合作,我们对这次的作业充满了信心。虽然这次的作业不是很多,但是我们还是按照要求,合理分工,每个成员都把自己的工作做得很到位。
这次的项目虽然只是一个开头,但这是很重要的一步,登录界面。团队中的成员经过上次的项目磨合,这次更加得心应手。每个人都把自己的工作认真完成,
通过一次次的团队模式,我们更加了解了自己,每一次的合作就是一次的成长,不论作业难度如何,我们都会努力做到最好。
经过每次的合作,我们也遇到过很多困难,数据库是上学期的课程,我们在合作过程中,,都在互相帮助,有时会有抱怨,有时会有牢骚,但是在我们的互相
帮助下,都克服了这些难题。每一次的困难都是一个成长路上的考验,经过一次次的考验,我们也会一次次的成长起来。
我相信,经过每次的团队合作,我们会学到更多,要努力克服自己的短处,增加自己的能力。在以后的路上,我们一定会学到更多,也会一步步增加自己的能力。
C#登录窗口及验证(+SQL)的更多相关文章
- WPF:验证登录后关闭登录窗口,显示主窗口的解决方法
http://www.27ba.com/post/145.html WPF:验证登录后关闭登录窗口,显示主窗口的解决方法 最近想做一个基于Socket的通讯工具,想模仿QQ那样,需要先登录,登录成功后 ...
- WPF 先显示登录成功,验证成功后显示主窗口
/// 设置显示登录窗口的方法: /// 在 App.xaml 中把这句 /// 删掉 StartupUri="MainWindow.xaml" 改为 StartupUri=&qu ...
- Servlet页面登录的数据库验证程序(二)
这个程序在原来的程序基础上加入了密码验证. 一.增加一个error.jsp页面,用于跳转出现用户名和密码错误显示信息. <%@ page language="java" im ...
- Servlet页面登录的数据库验证程序(一)
一.基本思想是MVC模式,一个登录页面login.jsp,一个服务器处理程序Servlet.java,一个MySql数据库userinfo. 另外还有相关的数据封装类User和数据库连接类GetDat ...
- QUI操作超时弹出登录窗口登录的处理方式
在使用QUI开发的业务系统中,如果长时间没操作,session过期后,再次操作系统超时会自动跳转到登陆页面,如果当前有一些操作没有保存,需要重新登录后再次填写信息,用户体验很不好! 为了避免超时后页面 ...
- 使用 jQuery Ajax 异步登录,并验证用户输入信息(maven)
使用 jQuery Ajax 异步登录,并验证用户输入信息(maven) 本篇内容: (1)上一篇是使用同步的请求实现登录,并由 Servlet 决定登陆后下一步做哪些事情,本篇使用 jQuery A ...
- C# 登录窗口的设计技巧
记得很久之前要用C#做个需要登录的小东西,自己之前完全没有编写WinForm的经验,整个过程中,自己感觉应该怎么写就怎么写,时常导致许多逻辑性的错误,比如在做这个登录窗口的时候,应该实现的效果是,用户 ...
- Delphi用户登录窗口框架
经常看到一些新手在CSDN上问登录窗口如何写,也看到N多人form1.show/form1.create/…中做form2.show之类.实在看不下去了.这种写法实在不是很好,于是还是把自己理解的登录 ...
- 单点登录(十三)-----实战-----cas4.2.X登录启用mongodb验证方式完整流程
我们在之前的文章中中已经讲到了正确部署运行cas server 和 在cas client中配置. 在此基础上 我们去掉了https的验证,启用了http访问的模式. 单点登录(七)-----实战-- ...
随机推荐
- SlidingMenu实现app侧滑功能
很多APP都有侧滑菜单的功能,部分APP左右都是侧滑菜单~SlidingMenu 这个开源项目可以很好帮助我们实现侧滑功能,如果对SlidingMenu 还不是很了解的童鞋,可以参考下本篇博客. 本片 ...
- 匹配 prev 元素之后的所有 siblings 元素
描述: 找到所有与表单同辈的 input 元素 HTML 代码: <form> <label>Name:</label> <input name=" ...
- SendKeys:基本使用
使用SendKeys将键击和组合键击发送到活动应用程序.此类无法实例化.若要发送一个键击给某个类并立即继续程序流,请使用Send.若要等待键击启动的任何进程,请使用SendWait. 每个键都由一个或 ...
- 在 VirtualBox 中 CentOS 网络设置
转自:本文发表于水景一页.永久链接:<http://cnzhx.net/blog/minimal-centos-in-virtualbox/>.转载请保留此信息及相应链接. 4. 设置¶ ...
- centos查看磁盘扇区大小等信息
fdisk -l 说明一下: “Disk /dev/sda: 53.7 GB, 53687091200 bytes” 表示第一块磁盘的大小为53.7GB. "255 heads"表 ...
- PHP常用的数组相关处理函数
[数组中常用的多种遍历方式] [for 和 foreach 略] [while() . list() .each() 组合循环遍历数组] each()函数 a. 需要一个数组作为参数 b. 返回来的也 ...
- Codeforces Gym 101142C:CodeCoder vs TopForces(搜索)
http://codeforces.com/gym/101142/attachments 题意:每个人在TC和CF上分别有两个排名,如果有一个人在任意一个网站上大于另一个人的排名,那么这个人可以打败另 ...
- HDU 1520:Anniversary party(树形DP)
http://acm.split.hdu.edu.cn/showproblem.php?pid=1520 Anniversary party Problem Description There i ...
- C#:文件、文件夹特别操作
1.过滤特殊字符 public class CharService:IDisposable { private List<char> _invalidChars; public CharS ...
- ecshop微信支付(0923更新)商户支付密钥key的生成与设置
ECSHOP 微信支付(0923更新)商户支付密钥key的生成与设置 说明:新版微信支付,用户必须授权登录才能支付.需要商家自己设置商户号支付密钥. 申请微信支付手机版部分时需要填写的配置接口地址: ...