tijian_tieying/web/DCSYJ.QRCODE/Form1.cs
2025-02-20 12:14:39 +08:00

152 lines
5.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Text;
using System.Windows.Forms;
namespace DCSYJ.QRCODE
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void label2_Click(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
if(string.IsNullOrEmpty(txt_xm.Text))
{
MessageBox.Show("请输入姓名!");
txt_xm.Focus();
return;
}
if(string.IsNullOrEmpty(txt_sfz.Text))
{
MessageBox.Show("请输入身份证!");
txt_sfz.Focus();
return;
}
else
{
if(!CheckIDCard18(txt_sfz.Text))
{
MessageBox.Show("身份证输入错误!");
txt_sfz.Focus();
return;
}
}
if(cbb_lb.SelectedItem==null||string.IsNullOrEmpty(cbb_lb.SelectedItem.ToString()))
{
MessageBox.Show("请选择从业类别!");
cbb_lb.Focus();
return;
}
if (string.IsNullOrEmpty(txt_dw.Text))
{
MessageBox.Show("请选输入单位名称!");
txt_dw.Focus();
return;
}
DataTable dt = new DataTable();
dt.Columns.Add("xm");
dt.Columns.Add("sfzh");
dt.Columns.Add("lb");
dt.Columns.Add("dw");
dt.Columns.Add("img", typeof(byte[]));
string ewmnr = "食药局申请\r\n姓名" + txt_xm.Text + "\r\n身份证" + txt_sfz.Text + "\r\n从业类别" + cbb_lb.SelectedItem.ToString() + "\r\n单位" + txt_dw.Text +
"\r\n德城区食药局申请专用";
Encoding e8859Encode = Encoding.GetEncoding("iso-8859-1");
Encoding srcEncode = Encoding.Unicode;
Encoding dstEncode = Encoding.GetEncoding("utf-8");
byte[] srcBytes = srcEncode.GetBytes(ewmnr);
byte[] dstBytes = Encoding.Convert(srcEncode, dstEncode, srcBytes);
char[] dstChars = new char[e8859Encode.GetCharCount(dstBytes, 0, dstBytes.Length)];
e8859Encode.GetChars(dstBytes, 0, dstBytes.Length, dstChars, 0);
ZXing.QrCode.QRCodeWriter qw = new ZXing.QrCode.QRCodeWriter();
var code = qw.encode(new string(dstChars), ZXing.BarcodeFormat.QR_CODE, 151, 151);
ZXing.BarcodeWriter bw = new ZXing.BarcodeWriter();
var b = bw.Write(code);
MemoryStream ms = new MemoryStream();
b.Save(ms, ImageFormat.Jpeg);
b.Dispose();
DataRow dr = dt.NewRow();
dr["xm"] = txt_xm.Text;
dr["sfzh"] = txt_sfz.Text;
dr["lb"] = cbb_lb.SelectedItem.ToString();
dr["dw"] = txt_dw.Text;
dr["img"] = ms.ToArray();
dt.Rows.Add(dr);
FastReport.Report re = new FastReport.Report();
re.Load(Application.StartupPath + "\\report\\report.frx");
re.RegisterData(dt, "dt1");
re.PrintSettings.ShowDialog = false;
re.Print();
txt_xm.Text = txt_dw.Text = txt_sfz.Text = "";
cbb_lb.SelectedItem = "";
}
private bool CheckIDCard18(string idNumber)
{
if(idNumber.Length!=18)
{
return false;
}
long n = 0;
if (long.TryParse(idNumber.Remove(17), out n) == false
|| n < Math.Pow(10, 16) || long.TryParse(idNumber.Replace('x', '0').Replace('X', '0'), out n) == false)
{
return false;//数字验证
}
string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
if (address.IndexOf(idNumber.Remove(2)) == -1)
{
return false;//省份验证
}
string birth = idNumber.Substring(6, 8).Insert(6, "-").Insert(4, "-");
DateTime time = new DateTime();
if (DateTime.TryParse(birth, out time) == false)
{
return false;//生日验证
}
string[] arrVarifyCode = ("1,0,x,9,8,7,6,5,4,3,2").Split(',');
string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(',');
char[] Ai = idNumber.Remove(17).ToCharArray();
int sum = 0;
for (int i = 0; i < 17; i++)
{
sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString());
}
int y = -1;
Math.DivRem(sum, 11, out y);
if (arrVarifyCode[y] != idNumber.Substring(17, 1).ToLower())
{
return false;//校验码验证
}
return true;//符合GB11643-1999标准
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}