C#课程设计报告_通讯录管理系统.doc_第1页
C#课程设计报告_通讯录管理系统.doc_第2页
C#课程设计报告_通讯录管理系统.doc_第3页
C#课程设计报告_通讯录管理系统.doc_第4页
C#课程设计报告_通讯录管理系统.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

郑州科技学院c#课程设计设计(论文)课题:通讯录管理系统 目录 摘要3一整体设计411设计构思412系统数据流图:513开发及运行环境:521 数据库需求分析622 e-r图723 数据表设计724 管理员信息表(db.admin):725 用户信息表(db.user):826 资料信息表(db.records):8三通讯录管理系统的实现931 类的编写932 系统用户功能模块设计:933 系统管理员功能模块设计:1134 系统设计运行过程中所遇到的问题:163.4.1 数据库的连接问题163.4.2 登录模块出现角色选择问题173.4.3 用户信息添加模块问题20四 c#课程设计总结26五主要参考书及手册28六 致谢29摘要 日益繁多的人际交往使得我们很难搞清楚与每个人之间的联系方式,特别是对于做经常出差的人来说更是难,所以通讯录能够便捷的给我们带来所需要的相关信息。而随着计算机的普及,人们的生活摆脱了传统式的记事本、电话簿,越来越多的靠计算机来帮助人们记住这些事情,极其简便。这就需要有一个使用的通讯录管理系统,用户可以方便的通过自己电脑的通讯录管理系统,来随时查阅自己所需要的信息,而不必再大费周折去翻开那繁琐的记事本。通讯录管理系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统,它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能,大大减少了查找过程的时间。一整体设计11设计构思通讯录管理系统功能需求分析:通讯录管理系统主要功能分为三个模块:用户登录、系统维护以及数据的备份输出。用户登录:实现管理员用户与游客用户的不同权限,对系统的实用权的区别系统维护:包括对用户的添加,信息添加、删除、查找、排序、修改,修改密码,注销等操作数据的备份:主要是对相关信息的备份,输出,打印。以便日后查询,使用。12系统数据流图:备份资料添加资料删除资料查询资料修改资料管理员普通用户登录注册登录添加修改退出通讯录管理系统数据流图13开发及运行环境:本系统开发平台及运行环境如下:系统开发平台:microsoft visual studio 2005系统开发语言:c#数据库管理软件:sql server 2000运行平台:windows xp (sp2) / windows7(32位或64位)/ windows server 2003 (sp1)运行环境:microsoft visual studio 20082 数据库设计21 数据库需求分析1)针对通讯录管理系统,分别对用户登录、添加通讯录和查找、删除以及修改数据进行详细的调研和分析,总结出如下的需求信息:1. 每条原始记录要有姓名、生日、电话、邮箱、地址信息,其中姓名不能为空。2. 保证查询到的数据与姓名相一致3. 根据相应姓名删除对应的全部数据2)本数据用于登录用户实体以及通讯录信息实体22 e-r图用户用户名密码信息操作n1姓名生日邮箱电话地址23 数据表设计数据库名称:databasehomework,共有3个表:1、管理员信息表(db.admin) 2、用户信息表(db.user) 3、资料信息表(db.records)24 管理员信息表(db.admin):字段名数据类型长度主键否描述adminnamenchar30否用户名称 adminpwdnchar20否用户密码25 用户信息表(db.user):字段名数据类型长度主键否描述usernamenchar30是用户名称 userpwdnchar30否用户密码26 资料信息表(db.records):字段名数据类型长度主键否描述用户名nchar30是记录用户的名称姓名nchar30否记录用户姓名性别nchar10否记录用户性别出生日期datetime否记录用户出生日期星座nchar10否记录用户星座生肖nchar10否记录用户生肖家庭住址nchar100否记录用户家庭住址电话nchar30否记录用户电话手机nchar20否记录用户手机号emailnchar100否记录用户emailqqnchar15否记录用户qq图片image否记录用户的图片三通讯录管理系统的实现31 类的编写开发项目时,以类的形式来组织、封装一些常用的方法和事件,以便提高代码的重用率,大大方便了代码的管理。本系统中创建了四个类: adminform.cs、registerform.cs、 login.cs、和userinformation.cs其中adminform.cs主要用来管理用户权限,用户信息,实现对用户的信息的查询,添加,删除以及备份用户登录信息和用户信息。registerform.cs是用来实现用户登录的用户名和密码的注册。login.cs是用来实现用户登录,登录时可以选择角色登录,用户或者是管理员。userinformation.cs是用来实现用户对自己信息的详细添加。32 系统用户功能模块设计:3.2.1 系统登录模块运行结果如图所示:3.2.2 系统注册模块运行结果如图所示: 3.2.3 用户信息添加模块运行结果如图所示:33 系统管理员功能模块设计:3.3.1 系统管理员登录模块运行结果如图所示:3.3.2 管理员用户信息表的添加、删除、更改:3.3.3 管理员登录信息的添加、删除、更改:3.3.4 管理员对用户信息数据的添加、删除、更改:3.3.5 管理员对用户信息的搜索查询功能的使用:34 系统设计运行过程中所遇到的问题:3.4.1 数据库的连接问题连接数据库的字符串add key=connectstring value=data source=zprjas6wzmxy36b;initialcatalog=databasehomework;integrated security=true以及sql的测试连接:3.4.2 登录模块出现角色选择问题private void initializecomponent() system.componentmodel.componentresourcemanager resources = new system.componentmodel.componentresourcemanager(typeof(login); this.radiobutton1 = new system.windows.forms.radiobutton();this.radiobutton2 = new system.windows.forms.radiobutton();this.label1 = new system.windows.forms.label();this.label2 = new system.windows.forms.label();this.label3 = new system.windows.forms.label();this.textbox1 = new system.windows.forms.textbox();this.textbox2 = new system.windows.forms.textbox();this.button1 = new system.windows.forms.button();this.button2 = new system.windows.forms.button();this.button3 = new system.windows.forms.button();this.sqlcommand1 = new system.data.sqlclient.sqlcommand();this.sqlconnection1=newsystem.data.sqlclient.sqlconnection();this.sqlselectcommandnewsystem.data.sqlclient.sqlcommand();this.sqlinsertcommand1=newsystem.data.sqlclient.sqlcommand();this.sqlupdatecommand1=newsystem.data.sqlclient.sqlcommand();this.sqldeletecommand1=newsystem.data.sqlclient.sqlcommand();this.sqldataadapter1=newsystem.data.sqlclient.sqldataadapter();this.suspendlayout();this.radiobutton1.autosize = true;this.radiobutton1.location = new system.drawing.point(69, 51);this.radiobutton1.name = radiobutton1;this.radiobutton1.size = new system.drawing.size(59, 16);this.radiobutton1.tabindex = 1;this.radiobutton1.tabstop = true;this.radiobutton1.text = 管理员;this.radiobutton1.usevisualstylebackcolor = true;this.radiobutton1.checkedchanged+=newsystem.eventhandler(this.radiobutton1_checkedchanged); this.radiobutton2.autosize = true;this.radiobutton2.location = new system.drawing.point(197, 51);this.radiobutton2.name = radiobutton2;this.radiobutton2.size = new system.drawing.size(47, 16);this.radiobutton2.tabindex = 0;this.radiobutton2.tabstop = true;this.radiobutton2.text = 用户;this.radiobutton2.usevisualstylebackcolor = true; this.label1.autosize = true;this.label1.location = new system.drawing.point(120, 9);this.label1.name = label1;this.label1.size = new system.drawing.size(77, 12);this.label1.tabindex = 2;this.label1.text = 选择登陆角色; this.label2.autosize = true;this.label2.location = new system.drawing.point(26, 128);this.label2.name = label2;this.label2.size = new system.drawing.size(41, 12);this.label2.tabindex = 3;this.label2.text = 用户名; this.label3.autosize = true;this.label3.location = new system.drawing.point(26, 170);this.label3.name = label3;this.label3.size = new system.drawing.size(29, 12);this.label3.tabindex = 4;this.label3.text = 密码; this.textbox1.location = new system.drawing.point(87, 128);this.textbox1.name = textbox1;this.textbox1.size = new system.drawing.size(100, 21);this.textbox1.tabindex = 2; this.textbox2.location = new system.drawing.point(87, 167);this.textbox2.name = textbox2;this.textbox2.passwordchar = *;this.textbox2.size = new system.drawing.size(100, 21);this.textbox2.tabindex = 3; this.button1.location = new system.drawing.point(135, 227);this.button1.name = button1;this.button1.size = new system.drawing.size(75, 23);this.button1.tabindex = 7;this.button1.text = 登陆;this.button1.usevisualstylebackcolor = true;this.button1.click+=newsystem.eventhandler(this.button1_click);this.button2.location = new system.drawing.point(28, 226);this.button2.name = button2;this.button2.size = new system.drawing.size(75, 23);this.button2.tabindex = 8;this.button2.text = 用户注册;this.button2.usevisualstylebackcolor = true;this.button2.click+=newsystem.eventhandler(this.button2_click);this.button3.location = new system.drawing.point(238, 227);this.button3.name = button3;this.button3.size = new system.drawing.size(75, 23);this.button3.tabindex = 9;this.button3.text = 退出;this.button3.usevisualstylebackcolor = true;this.button3.click+=newsystem.eventhandler(this.button3_click);this.sqlconnection1.fireinfomessageeventonusererrors=false;this.sqldataadapter1.deletecommand = this.sqldeletecommand1;this.sqldataadapter1.insertcommand = this.sqlinsertcommand1;this.sqldataadapter1.selectcommand = this.sqlselectcommand1;this.sqldataadapter1.updatecommand = this.sqlupdatecommand1; / / login / this.autoscaledimensions = new system.drawing.sizef(6f, 12f);this.autoscalemode=system.windows.forms.autoscalemode.font;this.backgroundimage=(system.drawing.image)(resources.getobject($this.backgroundimage);this.clientsize = new system.drawing.size(338, 293); this.controls.add(this.button3); this.controls.add(this.button2); this.controls.add(this.button1); this.controls.add(this.textbox2); this.controls.add(this.textbox1); this.controls.add(this.label3); this.controls.add(this.label2); this.controls.add(this.label1); this.controls.add(this.radiobutton2); this.controls.add(this.radiobutton1); this.maximizebox = false; this.name = login;this.startposition=system.windows.forms.formstartposition.centerscreen;this.text = form1;this.load += new system.eventhandler(this.login_load);this.resumelayout(false);this.performlayout(); 3.4.3 用户信息添加模块问题建立一个内存流把图片内存写入该内存流 if (!mydatareader.isdbnull(11) /以字节为单位传入数据 byte mydata = new byte0; mydata = (byte)mydatareader.getvalue(11); int jpgsize = mydata.length; /建立一个内存流 memorystream ms = new memorystream(); /把图片内存写入该内存流 /写入的二进制数组,偏移量,最多的字节数 ms.write(mydata, 0, jpgsize); bitmap bitmap = new bitmap(ms); picturebox1.image = bitmap; / mydatareader.close() /退出 private void button3_click(object sender, eventargs e) this.close(); /浏览private void button1_click_1(object sender, eventargs e) image image; bitmap bitmap; string path; openfiledialog opendialog = new openfiledialog(); opendialog.filter = 可用文件(*.jpg)|*.jpg|所有文件(*.*)|*.*; opendialog.multiselect = false; opendialog.initialdirectory = d:微软my productionstepstep; if (opendialog.showdialog() = dialogresult.ok) path = opendialog.filename; image = new bitmap(path); /改变图像大小-符合相框大小 bitmap = new bitmap(image, picturebox1.width, picturebox1.height); picturebox1.image = bitmap; 管理员管理用户信息添加模块出现错误用户表和用户信息表设置了关联,用户信息只能添加用户表中已经注册过的用户名。管理员对用户信息备份失败/备份 private void 备份toolstripmenuitem_click(object sender, eventargs e) try if (用户信息toolstripmenuitem.checked = true) /创建数据库/string strtocopy = data source=.sqlexpress;initial catalog= + textbox2.text + ;integrated security=true; string strtocopy = data source=.sqlexpress;initial catalog=databasehomework;integrated security=true;sqlconnection myconnect3 = new sqlconnection(strconnect); myconnect3.open();sqlcommand mycommand3 = new sqlcommand(); mycommand3.connection = myconnect3; mycommand3.commandtext = create database + textbox2.text.trim(); mycommand3.executenonquery(); mycommand3.commandtext = use + textbox2.text.trim() + create table + textbox3.text.trim() + (用户名 nchar(20) primary key not null,姓名 nchar(30),性别 nchar(10),出生日期 datetime,星座 nchar(10),生肖 nchar(10),家庭住址 nchar(100),电话 nchar(30),手机 nchar(20),email nchar(100),qq nchar(15),图片 image); mycommand3.executenonquery(); myconnect3.close();sqlconnectionmyconnect1=newsqlconnection(strconnect);sqlconnection myconnect2 = new sqlconnection(strtocopy); sqldatareader mydataread; myconnect1.open(); myconnect2.open();sqlcommand mycommand1 = new sqlcommand();sqlcommand mycommand2 = new sqlcommand();mycommand1.connection = myconnect1;mycommand1.commandtext = select * from records;mydataread = mycommand1.executereader();mycommand2.connection = myconnect2;mycommand2.commandtext = insert into + textbox3.text.trim() + values(s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12);mycommand2.parameters.add(s1, sqldbtype.nchar);mycommand2.parameters.add(s2, sqldbtype.nchar);mycommand2.parameters.add(s3, sqldbtype.nchar);mycommand2.parameters.add(s4, sqldbtype.datetime);mycommand2.parameters.add(s5, sqldbtype.nchar);mycommand2.parameters.add(s6, sqldbtype.nchar);mycommand2.parameters.add(s7, sqldbtype.nchar);mycommand2.parameters.add(s8, sqldbtype.nchar);mycommand2.parameters.add(s9, sqldbtype.nchar);mycommand2.parameters.add(s10, sqldbtype.nchar);mycommand2.parameters.add(s11, sqldbtype.nchar);mycommand2.parameters.add(s12, sqldbtype.image);while (mydataread.read() mycommand2.parameters0.value = mydataread.getvalue(0);mycommand2.parameters1.value = mydataread.getvalue(1);mycommand2.parameters2.value = mydataread.getvalue(2);mycommand2.parameters3.value = mydataread.getvalue(3);mycommand2.parameters4.value = mydataread.getvalue(4);mycommand2.parameters5.value = mydataread.getvalue(5);mycommand2.parameters6.value = mydataread.getvalue(6);mycommand2.parameters7.value = mydataread.getvalue(7);mycommand2.parameters8.value = mydataread.getvalue(8);mycommand2.parameters9.value = mydataread.getvalue(9);mycommand2.parameters10.value = mydataread.getvalue(10);mycommand2.parameters11.value = mydataread.getvalue(11); mycommand2.executenonquery(); messag

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论