摘要:在很多行业,处理业务的时候。需要客户预先填写单据。例如传统的银行业务办理,需要客户在业务单里填写个人的姓名、身份证号码等个人信息,以及一些办理业务的相关信息。传统的手工填写,费时费力,容易出错。这就一定程度上降低了银行业务办理的效率。该次设计旨在通过计算机完成个人信息填写,个人用户信息从身份证中直接获取,通过打印机自动输出,方便快捷。
关键词:自助填单;身份证;C#编程语言
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2019)36-0080-04
1背景
互联网带给我们的就是便捷、高效和低错。在银行、运营商、快递、政府服务大厅等各种服务型企业,便捷高效的流程更是客户对服务体验最直接的体现,在进入这些机构大门办事的第一步就是要填各种的单据,传统的顾客自己手写单据在生活节奏如此之快的当下显得就很不合时宜了,由此结合现代互联网技术的发展,自助填单系统尤其是在银行业受到了广泛的认可。
银行是人们生活中躲不过的机构之一,当我们进入银行办事,首先要填写申请单。在银行办理业务,首先需要填写各种申请单据,而在各种单据中又有很多信息是必须填写的。包括身份证号码、姓名、性别等个人基本信息。客户花费大量时间填写单据基本信息,一则造成了个人的时间浪费,二来也是银行处理业务效率低下,资源浪费的现象。因此急需要能够自动读取身份证上已有信息,自动填入单据的管理系统。
2系统总体设计
本系统设计主要是为了实现客户自助预填单据,将填单系统与柜员业务系统形式分离,数据共享,既实现客户便捷预填单打印,又方便柜员业务系统对数据调取,以新客户身份证为凭证,实现一证通便捷的业务流程。自助填单系统是为了解决客户手写填单费时费力效率低以及错误率高的问题,综合分析自助填单系统的功能需求,结合银行业务特点,提出自助填单系统的技术应用方案,设计通过身份证阅读仪器对身份证信息的读取和识别,自动填写到相应表单上,用户可以迅速打印对应表单,同时用户信息存入后台数据库,可以提供其他部门办理同业务的不同流程使用。
本平台的功能需求如图1。
该系统有三种用户类别,分别为管理员、银行柜员和客户。客户为到银行办理存款、取款、开通网银等业务的人员,一般需要预先填写很多单据。柜员为银行一般工作人员,直接面向顾客服务。管理员一般为信息系统管理人员,不具体面向顾客。在该系统中可以填写、修改、删除表单管理的业务模块。
2.1身份证信息读取
本功能主要实现对客户身份证中的信息读取功能,自动读取省去客户手动填写信息操作,并且通过读取身份证保证信息可靠准确。
2.2填写表单
表单中一些身份证上没有的信息,例如存款的金额、手工签名等信息,通过电脑手工输入。
2.3打印表单
信息填写完整后,直接打印表单。此时系统将顾客填写的信息保存的数据库中。并打印出纸质表单信息。
2.4表单模板管理
办理一项业务对应一个表单模板。可以添加模板也可以删除模板。
2.5读取表单信息
银行柜员根据纸质表单上的流水号,自动读取到顾客在自助机上填写的信息。
3系统结构
系统结构主要是由客户端程序和后台数据库服务器组成,客户端采用带触摸屏计算机,外带手写笔,用于客户签名。身份证阅读器iDR-210、打印机等通过USB口直接连接到客户端计算机。
客户首先选择自己需要办理的业务类型,将身份证放到身份证阅读器上。在客户端程序窗口相应位置会自动填写上身份证上有的信息,例如身份证号码、姓名、性别、出生日期、身份证有效期等用户信息。然后手工输入表单要填写,但身份证上阅读不到的信息,例如存款类型、存款金额、存款年限等信息。确认信息无误后,用手写笔在相应位置签名。然后提交表单,在此过程中,客户端将你填写的信息保存的数据库服务器,并完成表单的打印工作。至此,你就可以拿着打印好的表单,直接的柜台办理业务了。柜员通过表单上的流水号,查询到在数据库服务器上读取查询调用您刚刚提交的数据。如图2系统结构图所示。
4主要功能模块的实现
4.1表单模板生成模块
本功能需要接入扫描仪设备对用户新表单进行扫描,并传到界面中的PictureBox中作为管理员拖拽信息位置的参考背景,管理员可以对信息位置的精准把控,实现对应的打印。在点击“读取信息”按钮时开始扫描功能,调用扫描仪。这里使用微软wia组件,这个组件和其他微软开发组件类似,都是com组件,在扫描进程结束后,返回一个ImageFile对象值,这个Image-File就是扫描后的图像文件。在Click事件中添加主要代码如下:
CommonDialogClass cd、= new WIA.CommonDialogClass();
try{imageFile=cdc.ShowAcquirelmage(WIA. WiaDeviceType.ScannerDeviceType, WIA. Wialmagelntent. Textlntent, WIA. Wialm-ageBias.
MaximizeQuality,
”{00000000-0000-0000-0000-000000000000}”, true, true,false);}catch (System. Runtime.lnterop-Services.COMException){imageFile= null;}
最后,通過PietureBoxl.Image=lmageFile.image语句将把ImageFile传到PictureBox中。
扫描后将获取的表单以图片的形式存人数据库中,并且将所获的表单图片存入当前操作设备存储中,方便查看移动。主要代码如下:
private void buttonl_Click(object sender, EventArgs e)
{string localFiIPath,fileNameExt;
saveFileDialogl.Filter=”图片文件(*.jpg)l*.jpg”;
saveFileDialogl.Filterlndex=1;
saveFileDialogl.RestoreDirectory= true;
string strPath= saveFileDialogl.FileName;
if (saveFileDialogI.ShowDialog()==DialogResult.OK)
{if (saveFileDialogl.FileName!=””)
{localFilPath= saveFileDialogl.FileName.ToString();
fileNameExt= locaIFilPath. Substring(localFiIPath. Lastln-dexOf'(”//”)+1);
System.IO.FileStream fs=(System.IO.FileStream)saveFileDia-logl.OpenFile();
SaveFile();
fs.Cl(,se();}}
public void SaveFile()
{Image im= this.pictureBoxl.lmage;
Bitmap bit= new Bitmap(im);
bit.Save(Application.StartupPath+”\\hah.jpg”,
System.Drawing.Imaging.ImageFormat.Bmp);}
用户将个人字段位置拖拽到对应的位置,系统记录下每个标签在模板中的位置,并将位置信息保存到数据库中。
4.2信息获取模块
本系统采用精伦身份证阅读器,型号为市面上流行的1DR210。通过身份证阅读器获取身份证中姓名、性别、出生日期、身份证号码等个人信息。获取的方法在C#语言中调用身份证读取设备预留的dll文件中的函数,来完成对读取设备工作流程以及获取的信息进行控制。
iDR210提供一系列操作身份证的函数,详见表l。
该系统中读取身份证信息用的函数为ReadBaseInfosPhoto(char *Name,char*Gencler,char *Folk,char *BirthDay,char*Code,char *Address,char *Agency,char*ExpireStart,char *Ex-pireEnd,char *directory),该函数用于读取身份证中基本信息,包括文字信息与图像信息。文字信息以字符串格式输出。图像信息被解码后存为directory指定目录下照片。
先声明其中所包含的参数对象,通过对dll文件中函数的调用,实现对设备连接端口的检测,卡的认证,信息渎取功能的实现,主要代码如下:
private void buttonl_Click_l(object sender, EventArgse)
(
StringBuilder Name= new StringBuilder(31);
StringBuilder Gender= new StringBuilder(3);
StringBuilder Folk= new StringBuilder(10);
StringBuilder BirthDay= new StringBuilder(9);
StringBuilder Code= new StringBuilder(19);
StringBuilder Address= new StringBuilder(71);
StringBuilder Agency= new StringBuilder(3 1);
StringBuilder ExpireStart= new StringBuilder(9);
StringBuilder ExpireEnd= new StringBuilder(9);
byte[] pMsg= new byte[256];
string[]baseinfo= new string[9];
char[] param={\0};}
4.3簡单表单填单打印模块
此模块实现用户对系统原有的表单的自动信息获取和打印功能,添加输入框以供用户输入其他信息。此功能实现的是对整个表单以及填人的信息进行全部打印,即在填写表单界面的容器中所见的就是打印出来的效果,打印结果如下图3所示。
此打印功能原理是通过将表单放在groupbox中,将获取的个人信息填人对应的位置,通过Bitmap技术,实现对groupbox中的全部内容的存储为图像,图像通过GraphiCs技术实现绘图打印,对图片的打印以实现想要实现的对简单表单以及信息内容的全部打印。
实现主要代码如下:
void —Document_PrintPage(object sender, PrintPageEven-tArgse)
(Bitmap_NewBitmap=new Bitmap(groupBoxl. Width, group-Boxl.Height);
groupBoxl. DrawToBitmap(_NewBitmap, new Rectangle(0,0,_NewBitmap.Wiclth,_NewBitmap.Height》;
e. Graphics. DrawImage(_NewBitmap, 30, 100,_NewBitmap.Wi(lth,_NewBitmap,Height);)
private void button2_Click(object sender, EventArgs e)
{PrintDocument _Document= new PrintDocument();
_DoCument. PrintPage+=new PrintPageEventHandler(_Doeu-ment_PrintPage);
PrintPreviewDialog _PrintShow= new PrintPreviewDialog();
_PrintShow.Document= _Document;
_PrintShow.ShowDialog0;)
4.4多文字表單填空打印模块
我们在银行办理业务的时,很多时候是银行柜台提供已有的表单。我们在相应的位置填写一些信息。此模块就是为了适应这种需求,表单上的内容不是全部打印出来,只是对应位置打印我们需要填写的内容。当我们在打印原有表单原件上文字较多,需填写项目较少的时,系统将读取的身份证相关信息调整到跟表单相适应的位置。该方法提高使用现场的打印效率,减轻现场打印机的负担。
此模块实现的打印功能与第一模块略有不同,主要表现在上一模块实现连同表单一同打印,只需将其存储在同一张图像中实施打印图像即可,实现起来较为简单。本模块实现的是对已有纸质表单的打印,需要对纸张大小,各信息打印位置进行统一把控排列,才能保证将信息打印到其对应位置,打印效果如下图4所示:
打印功能的实现主要是通过使用Graphics类进行画图,打印功能的实现与屏幕绘制类似,不同的是打印实质是在纸上进行画图,并且在纸上打印需要进行必要的换行、分页等复杂计算。本设计中的打印功能通过StringReader读取文本文件制定范围内的字符,基于现有的流创建一个读取器实现逐行的循环打印一页,并在过程中确定打印的字体,边距等打印属性,通过行边距和行数的计算,实现对各个信息行边距的控制。打印实现主要代码如下:
private void printDocumentl_PrintPage(objeet sender, Print-PageEventArgs e)
(
Graphics g=e.Graphics;float yposition= O;int count=0;
float lefmargin=e.MarginBounds. Left; float topmargin=e.MarginBounds.Top;
string line=””;new Font(”宋体”,10.5F,FontStyle.Bold,Graph-icsUnit.Point,《byte)(134》);
SolidBrush mybrush= new SolidBrush(Color.Black);
float linesperpage= e.MarginBounds.Height,printront.GetH-eight(g);
Point pointl= new Point(0,O);pointl.X= 228;
pointl.Y= (int)(301+i*(43);
g.FillEllipse(Brushes.Black, pointl.X, pointI.Y, 10, 10);
while (count< linesperpage&&((line= lineReader.ReadLine0》!=null)
{yposition= textBoxl.Top;
xposition= textBoxI.LP,ft;
g. DrawString(line, printFont, mybrush, xposition, yposition,new StringFormat0);
count++;}
}
通过line判断是否打印完成,其中line不为空时,表示仍有未完成打印内容,此时将触发下一次打印。在下一次打印开始,由于lineReader对象是本打印方法外的类成员,会自动读取未完成打印的内容,记录当前读取的位置,所以最后要对所有的lineReader对象进行初始化操作,否则下次打印内容为空。
系统还提供了打印预览功能,打印预览可以是用户提前看到相应的打印效果,很好地降低打印错误,节省出错带来的时间以及材料成本。
5结束语
利用二代身份证信息的采集技术开发的白助填单管理系统,实现对客户身份证的信息读取与白助填单,以及对不同情况下的现实场景应用实现不同打印功能,实现用户方便快捷无差错的自助填单。省去了以前需要人工输入的工作量,大大提高了输入工作的效率和准确率,该系统应用银行业务的办理工作中,大大减少了出现差错的可能,为客户提供良好的服务提供了技术保障。
参考文献:
[1]郭红,金玲,李俊香,等.部队医院实行军人持卡就医的问题与对策[J].现代生物医学进展,2014(17):3341-3343.
[2]赵青山,徐荻秋,李健.高校实验室综合管理系统的开发[J].实验技术与管理,实验室建设与管理,2019(1):249-252,258.
[3]李福,陈思,李承俸,等.大学生在读证明白助打印系统的设计与实现[J].现代信息科技,2018(8):132-133,136.
[4]金诚,占红武.基于物联网架构的白助终端运行平台[J].机电工程,2017(10):1214-1219.
[5]子乾,余蜀宜,沙莉.可扩展自助打印服务系统设计[J].中国科技信息,2015(19):45-48.
[6]张毅,贾卫伟,孟玉莲,等.医学影像胶片及报告白助打印系统的设计与实施[J].中国医学装备,2019(2):140-141.
[7]孟德欣,谢二莲.基于二代身份证的房屋产权交易代理系统研究[J].软件工程师,2014(9):3 8-40.
[8]宋才华,蓝源娟,王珏.基于WORDPRESS与JSON的电力营业厅易填单系统设计[J].自动化与仪器仪表,2017(1):174-176, 179.
[9]孙薇,徐向东.自助胶片打印机在我院的应用探讨[J].影像研究与医学应用,2019(4):249-250.
【通联编辑:谢媛媛】
收稿日期:2019-10-29
作者简介:王晔(1977-),男,江苏涟水人,实验师,硕士,研究方向为信息系统开发与测试。