计算机毕业设计论文:vs20xx客户管理系统内容摘要:

联 系 电 话规 模 大 小所 属 行 业对 手 名 称 图 10 主要表的结构  tb_CInfo(企业基本信息表 ),用于保存企业的基本信息,其结构如图表 4 所示。 图表 4 企业基本信息表 字段名 数据类型 长度 主键否 描述 Cname varchar 50 否 企业名称 CManager varchar 20 否 法人代表 Cphone varchar 20 否 联系电话 CPostCode bigint 8 否 邮政编码 CFax varchar 20 否 传真号码 CEmail varchar 50 否 Email 地址 CNAddress varchar 50 否 企业网址 CAddress varchar 100 否 联系地址 Cremark varchar 1000 否 备注  tb_ClientInfo(客户信息表 ),用于保存企业客户的详细资料,其结构如图表 5 所示。 图表 5 客户信息表 字段名 数据类型 长度 主键否 描述 ClientID varchar 20 是 客户编号 CName varchar 50 否 客户名称 CStep varchar 20 否 客户级别 CRoot varchar 20 否 客户来源 CTrade varchar 20 否 所属行业 CType char 10 否 客户类别 CArea varchar 50 否 所在区域 CPhone varchar 20 否 联系电话 CFax varchar 20 否 传真号码 CPostCode bigint 8 否 邮政编码 CAddress varchar 50 否 联系地址 CEmail varchar 50 否 Email 地址 CRemark varchar 1000 否 备注  tb_Employss(员工信息表 ),用于保存企业内部员工的详细资料,其结构如图表 6所示。 图表 6 员工信息表 字段名 数据类型 长度 主键否 描述 EID varchar 20 主键 员工编号 EName varchar 20 否 员工姓名 ESex char 4 否 员工性别 EBirthday varchar 20 否 员工生日 EWDate varchar 20 否 工作日期 EDiploma char 10 否 员工学历 EDepartment varchar 50 否 所在部门 EPosition varchar 20 否 当前职务 EType varchar 20 否 员工类别  tb_GoodsInfo(货物信息表 ),用于保存企业内部货物的详细信息,其结构如图表 7所示。 图表 7 货物信息表 字段名 数据类型 长度 主键否 描述 GID varchar 20 主键 货物编号 GName varchar 50 否 货物名称 GType varchar 50 否 货物类型 GSpec varchar 50 否 货物规格 GIPrice money 8 否 进货价格 GOPrice money 8 否 售货价格 GUnit char 10 否 计量单位 Gremark varchar 1000 否 备注  tb_User(用户信息表 ),用于保存本系统用户的基本信息及权限其结构如图表 8 所示。 图表 8 用户信息表 字段名 数据类型 长度 主键否 描述 UserID varchar 20 主键 用户编号 UserName varchar 20 否 用户名称 UserPwd varchar 20 否 仓库名称 UserRight char 10 否 货物规格 (五) 对象模型的建立 数据库对象的建立 打开“服务器资源管理器”,选择新建连接。 图 11 1 使用 Visual Studio 2020 建立实体类 建立实体类的方式有很多种,例如手动编码建立、使用 XML 文件映射、使用命令行工具 SqlMetal 生成、使用 LINQ to SQL 设计器等。 其中最方便 的方法就是使用 LINQ to SQL 设计器。 步骤如下。 1) 在 专 用 于 数 据 处理 的 命 名 空间 下 选 择“ 新 建 项 ”, 添 加 一 个名 称 为“ CRMClasses”的“ LINQ to SQL 类”,如下图。 图 12 2) 在“服务器资源管理器”窗口需要使用的表格拖入左边,把设计好的函数和存储过程等方法拖入右边,如图。 图 13 3) 保存“ CRMClasses”之后,实体类就这样建立完毕了,若需要还可以从“属性”窗口修改实体类的属性名称、存储过程映射的方法名 ,以及实体类的添加、删除、修改行为中使用的方法等。 4) 使用 LINQ to SQL 设计器设计出来的实体类是代码自动生成的,如果需要修改,过程是比较麻烦的,对于本文所述系统,由于其本身复杂度不够,系统自动生成的实体类已经足够,如果对更复杂的系统,手动编码建立、使用 XML 文件映射等方法建立的实体类更加的简介,也更符合具体系统的要求。 (六) 界面设计 1 登录系统的设计 系统登录主要用于对进入企业客户资源管理系统的用户进行安全性检查,以防止非法用户进入该系统。 在登录时,只有合法的用户才可以进入该系统,同事,系统根据登录用户的级 别,给予其不同的操作权限,系统登录窗体运行结果如下所示 图 14 根据用户选择的用户名,系统自动判断用户权限,并且比较密码是否与数据库内纪录一致,如果是则可以进入系统主界面。 1 主界面的设计 系统主界面由三部分构成,分别为菜单栏、导航栏和底部的状态栏,其中在制作导航栏的时候,使用了第三方的控件“ NavNarControl”,做出来的效果还是相当的不错, 其运行结果如下图。 图 15 菜单栏和导航栏的功能基本一致,只是从两种途 径来实现,底部的状态栏通过一系列字符串的合并显示用户名,登录时间等信息。 通过点击菜单栏或者导航栏的相应功能,开启子窗口就可以进行子项目的操作了。 1 通用信息管理界面的设计 资料管理和我方信息管理里的 7 个小项目都具有一个共同的特点,都是对数据库进行的插入、删除及修改的操作,不同的只是针对的具体数据库表和字段的不同,以客户资料管理为例,预期的运行结果如下图。 图 16 整个界面由三个部分组成:  最上方的工具栏:提供新建及删除资料的服务,并且可以根据查询条件进行查询,还能 调用邮件相关组件给客户发送 Email。  中间的组合框:使用了 textbox 和 bobox 完成每一条记录详细显示,以供用户添加新信息或者修改现有信息。 其中的联系电话, Email 等还应设置正则表达式来检验数据输入的合法性。  下面的 DataGridView 列出了符合当前查询的所有条目,供用户查看,双击其条目可以在中间的组合框内显示改条目的详细内容,供用户修改。 1 联系客户窗体的设计 联系客户窗体用来实现企业与客户的交流、沟通功能。 实现该功能时调用了 命名空间下的 MailMessage 类和 SmtpClient 类。 界面设计如下图所示。 图 17 在窗体 Load 的时候自动载入客户的编号、名称和邮箱。 如果选择了上传附件,则会打开一个 OpenFileDialog 对话框,供用户选择文件,并返回该文件的路径。 点击发送后,调用系统函数发送邮件。 1 水晶报表的设计 客户级别分析窗体主要反映不同级别的客户情况,操作人员可以通过选择客户等级,查看制定级别的客户详细信息。 客户级别分析窗体运行结果如下图所示。 图 18 (七) 关键性代码解析 1 邮件的发送 在联系客户的窗体中,实现了通过客户端发送邮件的功能,在事先给客户发送邮件时,需要制定邮件的发送者、接受者、主题、内容、发送邮件的 SMTP 服务器的地址及端口号。 特别的,如果有附件的存在,还需要声明一个 ContentDispotion 类的对象,并通过其属性,完成附件属性的设置,其运行代码如下。 using System。 using。 using。 using。 using。 using。 using。 using。 using。 namespace { public partial class frmRClient : Form { boperate = new ()。 opAndvalidate = new ()。 public frmRClient() { InitializeComponent()。 } private void frmRClient_Load(object sender, EventArgs e) { (select distinct ClientID from tb_ClientInfo, tb_ClientInfo, ClientID, cboxCID)。 } private void cboxCID_SelectedIndexChanged(object sender, EventArgs e) { SqlDataReader sqlread = (select CName,CEmail from tb_ClientInfo where ClientID=39。 + () + 39。 )。 ()。 if () { = sqlread[CName].ToString().Trim()。 = sqlread[CEmail].ToString().Trim()。 } ()。 } //选择附件 private void btnUP_Click(object sender, EventArgs e) { = C:\\。 = all files (*.*)|*.*。 = true。 ()。 (())。 } //删除附件 private void btnDel_Click(object sender, EventArgs e) { if ( == ) { (没有附件可删。 , 提示 , , )。 } else { (())。 } } //发送邮件 private void btnSend_Click(object sender, EventArgs e) { //邮箱格式验证 if (!(())) { (txtSEmail, 输入的邮箱格式不正确。 )。 } else { ()。 try { //创建 MailMessage对象,使用邮件功能 string file = +。 myMail = new ()。 myMail = new ((), ())。 = ()。 = ()。 if ( 0) { for (int。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。