企业短信群发系统研究与实现毕业设计Word文档格式.docx
《企业短信群发系统研究与实现毕业设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《企业短信群发系统研究与实现毕业设计Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
![企业短信群发系统研究与实现毕业设计Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/21/b9fa679e-e850-48c3-aaf6-ad63068284f6/b9fa679e-e850-48c3-aaf6-ad63068284f61.gif)
①系统采用人机交互的方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。
②实现通过输入的手机号码或通过电话簿选择的手机号码进行短信群发。
③对用户输入的数据进行严格的数据检验,尽可能的避免人为错误。
④实现接收SIM卡中的短信内容,并显示给用户。
⑤实现对发送短信的历史记录进行查询,支持模糊查询。
⑥系统最大限度地实现了易维护性和易操作性。
2相关技术介绍
2.1开发语言简介:
C#
随着现代社会生活节奏的不断加快,软件的开发周期要求越来越短,这就要求有一种简单易开发的语言工具出现,而C#的出现正好适应了这种要求。
C#是微软公司为VisualStudio开发平台推出的一种简洁、安全的面向对象的编程语言,开发人员可以通过它编写在.NETFramework上运行的各种安全可靠的应用程序,例如控制台应用程序、WinForms应用程序和Web应用程序等。
由于C#简单易学,而且可以跨平台使用,因此它正在成为程序开发人员使用的主流编程语言。
2.2数据库分析:
MicrosoftAccess2000
一套完善的系统离不开数据库的设计,数据库设计的好与坏直接影响系统运行的效率,所以在制作某个系统之前,首先要根据系统的具体要求以及实现的功能去设计数据库,根据项目的成本以及整个系统的信息量去选择数据库。
在企业短信群发系统中,由于系统的信息量不是很大,并且系统的项目成本不高,在功能上主要以发送和接受短信为主,数据库用来存储发送的信息、电话簿信息、用户信息以及常用短语,因此对数据库的要求并不是很高,所以本系统采用MicrosoftAccess2000作为后台数据库,数据库命名为db_SMS,其中包含了5张数据表,用于存储不同的信息。
Access是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS),是Office系列应用软件之一。
它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;
提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;
为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。
2.3短信猫技术
所谓短信猫,其实是一种工业级GSMMODEM,通过串口与计算机连接,可以通过AT指令控制进行短信收发的设备。
国内目前应用较多的短信猫,都是以SIEMENS或WAVECOM模块为核心组装而成的,与普通手机相比更为稳定高效。
在购买短信猫时会附带SDK开发包。
其中提供了操作短信猫的函数(封装在dllforvc.dll动态链接库中)。
下面对操作短信猫的主要函数进行简单的介绍。
①GSMModemGetSnInfoNew函数(该函数用于获取短信猫注册需要的信息。
)
②GSMmodemGetDevice函数(该函数用于获取当前的通信端口。
③GSMmodemGetBaudrate函数(该函数用于获取当前波特率。
④GSMmodemInitNew函数(该函数用于初始化短信猫。
⑤GSMmodemSMSsend函数(该函数用于发送手机短信。
⑥GSMmodemSMSReadAll函数(该函数用于获取所有短信息,包括手机中的和SIM卡中的。
3概要设计
3.1需求分析
如果公司想通知远在外地的职员回公司报到,传统方法是拨打每个职员的电话进行通知,现在开发出企业短信群发系统,便可以编写一条告知职员回来报到的短信,然后添加所有身在外地的职员的电话号码,统一发送出去,大大提高了办公的效率。
但是,手机短信虽然方便使用,可是由于手机硬件条件的限制,它存在着打字不灵活、不能存储更多的客户信息等缺陷。
为了更好的将手机短信作为企业的一种交流与合作,对这些缺陷进行针对性的改进就显得很有必要了。
企业短信群发系统就是为了实现计算机上进行手机短信息的操作,也就是在计算机上将手机短信进行编辑和管理,通过手机上连接电脑的数据线,将需要群发的短信通过手机进行发送。
本文所开发和阐述的就是它开发和研制过程。
3.2结构设计
3.2.1各功能模块和示意图
本系统主要分为六大功能模块:
1名片管理
♦增加联系人:
增加、删除电话簿中的联系人
♦所有联系人:
查看所有联系人信息
2短信操作
♦短信群发:
发送短信
3短信记录
♦已发送短信:
查看已发送的短信信息
♦已接收短信:
查看已接收的短信信息
4常用短语
♦添加短语:
增加、删除常用短语
♦所有短语:
查看所有的常用短语
5系统管理
♦密码修改:
修改用户密码
♦退出系统:
退出本系统
♦锁定系统:
锁定本系统
6帮助
♦关于:
系统相关
企业短信群发系统功能结构图如下:
图1系统功能结构图
3.2.2各功能模块关系
“短信操作”、“系统管理”和“帮助”3个模块为一般用户和系统管理员所共有,主要进行短信群发和实现修改密码、退出系统、锁定系统的功能,以及查看系统相关信息等。
而“电话簿管理”、“短信记录”和“常用短语”则仅为系统管理员所拥有,主要实现增删联系人、查看短信的记录和增删及查看常用短语的功能。
图2各模块关系图
4数据库设计
4.1数据库概念设计
系统开发过程中,数据库设计占有重要的地位,数据库设计的原则是根据系统的整体需求而定的。
例如,在本系统中,为了增加系统的安全性,每个用户只有在系统登录模块严重成功后才能进入主窗体。
这时,就要在数据库中创建一个存储登录用户名、登录密码以及权限的管理员基本信息表。
管理员基本信息表实体E-R图如下:
图3管理员基本信息实体E-R图
为了能够减少短信息的输入量,系统将一些常用的短语存储在数据表中。
当需要插入常用短语的时候,就可以通过程序直接从数据表中提取。
为了实现此功能,在数据库中创建常用短语信息表。
常用短语信息实体E-R图如下:
图4常用短语信息实体E-R图
开发企业短信群发系统时,短信的群发与接收时系统必须具备的功能。
然而通过程序读取短信猫中SIM卡的内容时,读出的内容会呈现不规则的排列方式。
这时,需要将这些不规则的短信内容进行转换并且存储在数据表中,然后通过数据控件显示到窗体中。
已接收短信信息实体E-R图如下:
图5已接收短信实体E-R图
电话簿是用来存储一些常用联系人的名称以及手机号码。
如果忘记了某个人的联系方式,可以通过电话簿进行查找,同时发送短信息时还可以通过电话簿选择短信的接收者。
电话簿信息实体E-R图如下:
图6电话簿信息实体E-R图
系统将短信进行群发以后,应该将所有的发送记录存储起来,以便用户对已发送短信进行查询。
为了实现此功能,必须在数据库中建立一个存储已发信息的数据表。
已发信息实体E-R图如下:
图7已发短信实体E-R体
分析完系统的实体需求以后,根据每个实体的E-R图创建系统所需的各个表。
系统数据库中的所有表及其用途如图10及表1所示:
图8数据库db_SMS中的所有表
表1系统数据库中的所有数据表
数据表名称
用途
Tb_Admin
用于存储系统用户的登录用户名、密码和权限
Tb_note
用于存储系统的所有常用短语
Tb_Resvice
用于存储系统接收到的所有短消息
Tb_tel
用于存储系统电话簿中的所有联系人名称及其手机号码
Tb_TelSend
用于存储所有系统已发短信息
4.2数据库逻辑结构设计
根据设计好的E-R图创建数据库的逻辑结构,数据库中各表的结构如下:
●tb_Admin(管理员基本信息表)
表tb_Admin用于保存管理员的基本信息,该表的结构如表2所示:
表2管理员基本信息表
字段名
数据类型
主键
描述
ID
自动编号
是
管理员系统编号
AdminUserName
文本
否
登录用户名
AdminUserPwd
登录密码
power
管理员权限
●tb_note(常用短语信息表)
表tb_note用于保存一些常用的短语,该表的结构如下所示:
表3常用短语信息表
常用短语系统编号
type
常用短语类型
note
备注
常用内容
●tb_Resvice(已接收短信信息表)
表tb_Resvice用于保存已经接收的所有短信的内容,该表的结构如下所示:
表4已接收短信信息表
已接收短信系统编号
smsnum
发送短信的号码
smscontent
已接收短信内容
●tb_tel(电话簿信息表)
表tb_tel用于保存所有常用联系人的姓名、性别及其电话号码,该表的结构如下所示:
表5电话簿信息表
电话簿信息系统编号
UserName
联系人姓名
UserSex
联系人性别
UserTel
联系人手机号码
●tb_TelSend(已发短信信息表)
表tb_TelSend用于保存所有已发信息的历史记录,该表的结构如下所示:
表6已发短信信息表
已发短信系统编号
TelNum
接收者号码
TelContent
短信内容
TelTime
发送时间
4.3数据库的链接
本系统中主要创建了两个公共类:
ConnClass类和GSM类。
其中,ConnClass类主要用来MicrosoftAccess2000数据库。
下边主要对这个类进行介绍。
ConnClass类中,因为本系统使用的是MicrosoftAccess2000数据库,所以在命名空间区域内引用usingSymtem.Data.OleDb来连接数据库。
主要代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Data;
usingSystem.Data.OleDb;
//引用命名空间,以便连接Access数据库
usingSystem.Windows.Forms;
namespaceSMS.BaseClass
{
classConnClass
PublicstaticOleDbConnectionDataConn()
{
//获取Access数据库的绝对路径
stringstrg=Applicatins.StartupPath.ToString;
string=strg.Substring(0,strg.LastIndexOf(”\\”));
strg+=@”\DataBase”;
strg+=@”\db_SMS.mdb”;
returnnewOleDbConnection(”Provider=Microsoft.Jet.OLEDB.4.0;
DataSource=”+strg);
}
}
5详细设计
5.1各部分详细设计
从组成上来说,“登录模块”“主窗体模块”“短信群发模块”“短信接收模块”“电话簿管理模块”“常用短语模块”这6个模块构筑并实现了整个系统由登录到退出的所有功能。
下边分别对这6个模块进行介绍。
5.1.1登录模块
为了增强系统的安全性,基本上每一个管理系统都会有登录模块。
登录模块主要用于对进入系统的用户进行安全性检查,以防止非法用户进入系统。
只有登录模块验证成功的用户才可以进入管理系统的主界面。
所以,登录模块变得尤为重要。
而作为验证用户名和密码是否合法的重要部件,有必要先对COUNT(*)函数进行简单的介绍。
COUNT聚合函数用于返回组中项目的数量。
用法如下:
COUNT({[ALL|DISTINCT]expression})
参数说明:
ALL:
对所有的值进行聚合函数运算。
ALL是默认设置。
DISTINCT:
指定COUNT返回唯一非空值的常量。
expression:
一个表达式,其类型是除uniqueidentifier、text、image或next之外的任何类型。
不允许使用聚合函数和子查询。
返回类型:
int。
本模块使用的数据表为tb_Admin,然后通过COUNT(*)函数以登录的用户名和密码作为搜索条件,并返回符合查询的数目,最后根据返回的数目判断登录用户名和密码是否正确。
打开登陆窗口单击“登录”按钮后,登录模块首先判断是否输入了用户名和密码,如果没有输入,就会弹出提示框,提示用户登录系统的用户名和密码不能为空;
如果已经输入了用户名和密码,系统会判断输入的用户名和密码是否正确。
假如不正确,系统会弹出提示框进行提示。
privatevoidbtnLogin_Click(objectsender,EventArgse)
try
if(txtLoginName.Text=="
"
)//判断是否输入了用户名
{
MessageBox.Show("
用户名不能为空"
);
//弹出提示信息
}
else
{
if(txtLoginPwd.Text=="
)//判断是否输入密码
密码不能为空"
else
//创建数据库连接
OleDbConnectionconn=BaseClass.ConnClass.DataConn();
conn.Open();
OleDbCommandcmd=newOleDbCommand("
selectcount(*)fromtb_AdminwhereAdminUserName='
+txtLoginName.Text+"
'
andAdminUserPwd='
+txtLoginPwd.Text+"
conn);
//获取返回值
inti=Convert.ToInt32(cmd.ExecuteScalar());
if(i>
0)//如果i>
0,说明用户名和密码正确
frmMainmain=newfrmMain();
main.adminname=txtLoginName.Text;
main.admintime=DateTime.Now.ToShortDateString();
main.Show();
this.Hide();
//隐藏登录窗体
{
//弹出提示
用户名或者密码错误"
catch(Exceptionex)
MessageBox.Show(ex.ToString());
}
privatevoidbtnCancel_Click(objectsender,EventArgse)
this.Close();
privatevoidtxtLoginPwd_KeyPress(objectsender,KeyPressEventArgse)
if(e.KeyChar==13)
btnLogin_Click(sender,e);
图9登录流程图
5.1.2主窗体模块
每个系统的开发都离不开对主窗体的设计。
通过主窗体可以快速地连接和使用系统支持的所有功能。
当用户通过登录模块成功地登录系统以后,会进入系统的主窗体。
在主窗体中,大体可以分为3个部分。
上端是整个系统的操作菜单,其中包括名片管理、短信操作、短信记录、常用短语、系统管理和帮助,每个操作菜单下还有子菜单。
中间部分是所有功能显示区域。
下端是系统状态显示栏。
当窗体加载时,首先将登录用户名和登录时间显示到主窗体的状态栏中,并且根据登录用户名在数据库中查找与之对应的管理权限。
如果用户使用普通账号登录系统后,将进入普通用户的主窗体,在该窗体中只给出部分权限,只能进行一般的短信操作和系统管理。
关键代码如下:
privatevoidForm1_Load(objectsender,EventArgse)
toolStripStatusLabel5.Text=DateTime.Now.ToString();
toolStripStatusLabel2.Text=adminname;
toolStripStatusLabel8.Text=admintime;
//连接数据库
OleDbConnectionconn=BaseClass.ConnClass.DataConn();
OleDbCommandcmd=newOleDbCommand("
selectpowerfromtb_AdminwhereAdminUserName='
+adminname+"
conn);
conn.Open();
//打开数据库
stringuserPower=Convert.ToString(cmd.ExecuteScalar());
//判断登录用户的权限
if(userPower=="
0"
//禁用下列菜单
名片管理MToolStripMenuItem.Enabled=false;
短信记录SToolStripMenuItem.Enabled=false;
常用短语MToolStripMenuItem.Enabled=false;
conn.Close();
5.1.3短信群发模块
短信群发模块是整个系统中最为主要的模块。
通过此模块可以将短信发送给单个或多个联系人。
在本系统中,短信群发模块需要硬件短信猫的支持,所有短信都是通过短信群发模块调用短信猫发送出去的。
当用户通过登录模块登录成功之后,会进入系统的主界面,在系统主菜单中选择“短信操作”—“短信群发”命令,打开“短信群发”窗体。
在短信群发窗体中,需要用户手动输入短信接收者号码或者通过单击“电话簿”按钮打开“选择接收用户窗体”,从窗体中选择接收号码。
当输入短信内容时,可以手动输入短信内容,也可以通过单击“插入短语”按钮来打开常用短语窗体,选择需要的短语。
检查接受号码与短信内容无误后,单击“立即发送短消息”按钮即可完成对短消息的发送。
短信群发模块的作用在于能够对收入或者选择的一组电话号码发送短信。
系统首先连接硬件“短信猫”,然后在系统中通过程序控制短信的发送。
在短信群发模块中,实现了手动添加短信接收者号码、删除接收者号码、从电话簿中选择接收号码和插入常用短语等功能。
当用户输入一组接收号码并且输入短消息后,单击“立即发送短信息”按钮即可通过短信猫将短消息发送出去。
在短信群发模块中,关键技术是厂商提供的dllforvc.dll动态链接库中的GSMModemSMSsend函数,该函数用于将输入的短信通过短信猫发送到指定的电话号码中。
该函数的参数及说明如下:
[DllImport("
dllforvc.dll"
//发送短信息
EntryPoint="
GSMModemSMSsend"
CharSet=CharSet.Ansi,
CallingConvention=CallingConvention.StdCall)]
publicstaticexternboolGSMModemSMSsend(
stringserviceCenterAddress,//标识短信中心号码,为NULL即可
intencodeval,//标识短信息编码格式,如为8表示中文短信编码
stringtext,// 标识短信内容
inttextlen,//标识短信内容的长度
stringphonenu