C#课程设计通讯录软件设计.docx

上传人:b****5 文档编号:3565160 上传时间:2022-11-23 格式:DOCX 页数:31 大小:1.99MB
下载 相关 举报
C#课程设计通讯录软件设计.docx_第1页
第1页 / 共31页
C#课程设计通讯录软件设计.docx_第2页
第2页 / 共31页
C#课程设计通讯录软件设计.docx_第3页
第3页 / 共31页
C#课程设计通讯录软件设计.docx_第4页
第4页 / 共31页
C#课程设计通讯录软件设计.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

C#课程设计通讯录软件设计.docx

《C#课程设计通讯录软件设计.docx》由会员分享,可在线阅读,更多相关《C#课程设计通讯录软件设计.docx(31页珍藏版)》请在冰豆网上搜索。

C#课程设计通讯录软件设计.docx

C#课程设计通讯录软件设计

 

**学院

课程设计说明书

(2012/2013学年第一学期)

 

课程名称:

软件程序设计

题目:

通讯录软件设计

专业班级:

学生姓名:

放羊娃

学号:

·

指导教师:

设计周数:

2周

设计成绩:

 

2013年1月18日

 

1.课程设计目的…………………………………………………………………………………..3

2.课程(三级项目—软件)分析及设计3

2.1通讯录系统分析3

2.2通讯录系统设计3

2.2.1通讯录系统的功能模块3

2.2.2通讯录系统流程图4

2.2.3通讯录系统功能图4

2.2.4数据库系统设计5

3、课程设计步骤6

3.1、设计登录界面6

3.2、设计数据库6

3.3、注册界面6

3.4、设计主界面10

3.5、整体设计17

4、系统调试和相关问题12

5课程设计总结18

6参考文献19

 

1.课程(三级项目—软件)目的

本次课程设计旨在加强学生对面向对象程序设计思想的理解,增强对C#程序语言的灵活运用及其其中的控件和属性的熟练的操作与使用。

并在此过程中要求学生能结合数据库知识和visualstudio中的windows窗体,实现基本的应用软件,激发学生对c#的兴趣,以此来激发学生对软件的热爱,加强学生的自我编程能力。

2.课程(三级项目—软件)分析及设计

2.1通讯录系统分析

根据技术要求和现有开发环境,分析通讯录系统,一个简单的通讯录可以实现用户登录,用户注册,联系人的添加,修改,删除,用户的密码修改,刷新,精确查找和模糊查找等功能;可能的话,支持相片功能,随心更换图片。

在课程设计中,使用了采用windows窗体和C#语言来进行实际设计,涉及到了多用户登录等相关操作和SQLSERVER数据库连接使用。

2.2通讯录系统设计

2.2.1通讯录系统的功能模块

该通讯录系统大致可分为两大部分:

登录界面和主界面。

登录界面:

简洁,靓丽的登录界面会给使用者一种愉悦的心情;该界面包括基本的用户登录,还可以注册,第一次使用时,可以先注册一个新用户,登录就去。

主界面:

通讯录的的基本功能都在主界面中,使用tabcontrol控件,来回切换,简单方便,主要包括联系人的添加,修改,删除查看,精确查找和模糊查找;窗体上端有menuStrip1,可以实现用户的密码修改,刷新,退出功能。

2.2.2通讯录系统流程图

 

 

图1通讯录程序流程图

2.2.3通讯录系统功能图

·

2.2.4数据库系统设计

用户信息表(UserInfo)

列名

数据类型

长度

是否为主键

是否为空

注释

UserName

nverchar

20

用户名

UserPwd

nverchar

20

密码

联系人信息表(FriInfo)

列名

数据类型

长度

是否为主键

是否为空

注释

id

int

编号

头像

nvarchar(MAX)

MAX

本人

nvarchar

20

UserName(用户名)

姓名

nvarchar

20

性别

char

2

出生日期

datetime

电话

char

20

qq

char

20

籍贯

nvarchar

20

邮箱

char

20

3、课程设计步骤

3.1、设计登录界面

两个textbox控件组成一个简单的登录界面:

用户名输入框、密码输入框,建立数据库后,可以链接数据库验证用户名和密码是否存在或一致;必不可少的两个触发按钮:

登录、重置;另外加上注册按钮,新用户必须先注册,其也与数据库相链接。

图2.登录窗口

登录按钮的程序设计:

stringsql="select*fromUserInfowhereUserName='"+txtUserName.Text.Trim().ToLower()+"'andUserPwd='"+txtPassword.Text.Trim()+"'";

if(OperateDB.ExecuteReader(sql))

{

username=txtUserName.Text.Trim().ToLower();

frmMain1frm=newfrmMain1();

frm.Show();

this.Hide();

}

else

{

MessageBox.Show("用户名或密码错误!

","来自软件消息",MessageBoxButtons.OK,MessageBoxIcon.Error);

}

3.2、设计数据库

yx数据库包括UserInfo(用户信息)、FriInfo(联系人信息)两个表。

3.3、注册界面

简单的注册界面包括:

用户名、密码、在此输入密码,可以的话加上验证码;每个新注册的用户在数据库中必有数据;因为链接数据库,输入已有的用户名或者每天写某一项时,会报错。

图3.用户注册界面

程序设计(该窗体的全部功能的实现):

privatevoidForm3_Load(objectsender,EventArgse)//主窗体的代码区

{

CodeImage(CheckCode(refstr));

}

stringstr="";

privatevoidbtnCompelet_Click(objectsender,EventArgse)

{

if(txtUsername.Text.Trim()!

="")

{

if(txtZhuPwd.Text.Trim()==txtZhuPwdAgain.Text.Trim())

{

if(txtYanZheng.Text=="")

{

MessageBox.Show("请输入验证码!

","来自软件消息",MessageBoxButtons.OK,MessageBoxIcon.Information);

}

else

{

if(txtYanZheng.Text==str)

{

stringsql1="select*fromUserInfowhereUserName='"+txtUsername.Text.Trim()+"'";

boolcount=(bool)OperateDB.ExecuteReader(sql1);

if(count==false)

{

stringsql="insertintoUserInfo(UserName,UserPwd)values('"+txtUsername.Text.Trim()+"','"+txtZhuPwd.Text.Trim()+"')";

if(OperateDB.ExecuteNonQuery(sql)==1)

{

MessageBox.Show("用户注册成功!

","来自软件消息",MessageBoxButtons.OK);

}

else

{

MessageBox.Show("用户注册失败!

","来自软件消息",MessageBoxButtons.OK);

}

}

else

{

MessageBox.Show("用户名已存在!

","来自软件消息",MessageBoxButtons.OK);

}

}

else

{

MessageBox.Show("验证码错误!

","来自软件消息",MessageBoxButtons.OK,MessageBoxIcon.Information);

str="";

CodeImage(CheckCode(refstr));

}

}

}

else

{

MessageBox.Show("两次输入的密码不一致!

","来自软件消息",MessageBoxButtons.OK);

}

}

else

{

MessageBox.Show("用®?

户¡ì名?

不?

能¨¹为a空?

!

","来¤¡ä自Á?

软¨¨ª件t消?

息¡é",MessageBoxButtons.OK);

}

}//产生随机数的函数

privatestringCheckCode(refstrings)

{

intnumber;

charcode;

stringcheckCode=String.Empty;//空字符串且为只读属性

Randomrandom=newRandom();//新建一个随机数产生器

for(inti=0;i<4;i++)

{

number=random.Next();//随机产生一个整数

if(number%2==0)//如果随机数是偶数取余

code=(char)('0'+(char)(number%10));

else

code=(char)('A'+(char)(number%26));//如果随机数是奇数选择从[A-Z]

checkCode+=""+code.ToString();//4个字符的组¦合

s=s+code.ToString();

}

returncheckCode;//返回字符串checkCode

}

privatevoidCodeImage(stringcheckCode)//建立一个随机图形

{

if(checkCode==null||checkCode.Trim()==String.Empty)

return;

//建立一个位图文件确立长宽¨ª

System.Drawing.Bitmapimage=newSystem.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length*8.5)),20);

Graphicsg=Graphics.FromImage(image);

try

{

Randomrandom=newRandom();//生成随机生¦成器

g.Clear(Color.White);//清空图片背景色

for(inti=0;i<3;i++)//画图片的背景噪音线

{

intx1=random.Next(image.Width);

intx2=random.Next(image.Width);

inty1=random.Next(image.Height);

inty2=random.Next(image.Height);

g.DrawLine(newPen(Color.Black),x1,y1,x2,y2);

}//把产生的随机数以字体的形式写入画面

Fontfont=newSystem.Drawing.Font("Arial",12,(System.Drawing.FontStyle.Bold));

g.DrawString(checkCode,font,newSolidBrush(Color.Red),2,2);

for(inti=0;i<150;i++)//画图片的前景噪音点

{

intx=random.Next(image.Width);

inty=random.Next(image.Height);

image.SetPixel(x,y,Color.FromArgb(random.Next()));

}//画图片的边框线?

g.DrawRectangle(newPen(Color.Silver),0,0,image.Width-1,image.Height-1);

this.pictureBox1.Width=image.Width;

this.pictureBox1.Height=image.Height;

this.pictureBox1.BackgroundImage=image;

}

catch

{}

}

privatevoidtimer1_Tick(objectsender,EventArgse)

{

this.Opacity+=0.05;

}

privatevoidpictureBox1_Click(objectsender,EventArgse)

{

str="";

CodeImage(CheckCode(refstr));

}

privatevoidbtnReset_Click(objectsender,EventArgse)

{

txtUsername.Text="";

txtZhuPwd.Text="";

txtZhuPwdAgain.Text="";

txtYanZheng.Text="";

}

3.4、设计主界面

按照我的思路主页面有两个大体的控件:

menuStrip、tabControl。

1、menuStrip主要包括管理帐号、刷新、退出

2、tabControl:

在该控件上建立几个选项卡,分别命名:

显示主页、查看、添加、管理联系人、关于

其中大部分必须链接数据库:

stringsql=”select/update(from)表名where/set…….”;

其次加上”欢迎观临:

用户名”,当前时间,背景音乐(独曲)

显示时间的程序设计:

DateTimedt=DateTime.Now;//当前时间的实例

label10.Text=dt.ToString();

图4.修改密码

管理帐号(即修改密码)程序设计:

if(txtNewPwd.Text.Trim()==txtNewPwdAgain.Text.Trim())

{//使用类封装

stringsqlCheckPwd="select*fromUserInfowhereUserName='"+frmLogin.username+"'andUserPwd='"+txtOldPwd.Text.Trim()+"'";

if(OperateDB.ExecuteReader(sqlCheckPwd))

{

stringsql="updateUserInfosetUserPwd='"+txtNewPwd.Text.Trim()+"'whereUserName='"+frmLogin.username+"'";

if(OperateDB.ExecuteNonQuery(sql)==1)

{

MessageBox.Show("密码修改成功!

");

this.Hide();

}

else

{

MessageBox.Show("密码修改失败!

");

}

}

else

{

MessageBox.Show("旧密码不正确!

");

}

}

else

{

MessageBox.Show("两次修改的密码不一!

");

}

图5添加联系人

添加头像的程序设计如4.系统调试和问题解决

添加联系人的程序设计:

if(txtName.Text.Trim()!

="")

{

if(mtxtPhone.Text.Trim()!

="")

{

if(mtxtPhone.Text.Trim().Length==11)

{

if(pictureBox1.Image!

=null)

{

stringFriSex="";

if(optMale.Checked)

{

FriSex="男";

}

if(optFemale.Checked)

{

FriSex="女";

}

stringsql="insertintoFriInfo(本人,姓名,性别,出生日期,电话,QQ,籍贯,邮箱,头像)Values('"+frmLogin.username+"','"

+txtName.Text.Trim().ToLower()+"','"+FriSex+"','"+dateTimePicker1.Value+"','"

+mtxtPhone.Text+"','"+txtQq.Text+"','"+comboBox1.SelectedItem+"','"+txtYxiang.Text+"','"+newName+"')";

try

{

if(OperateDB.ExecuteNonQuery(sql)==1)

{

MessageBox.Show("添加联系人成功!

");

}

else

{

MessageBox.Show("添加联系人失败!

");

}

}

catch

{

MessageBox.Show("添加失败,不能重复记录!

");

}

}

else

{

MessageBox.Show("头像不能为空!

");

}

}

else

{

MessageBox.Show("请输入11位有效电话号码...","来自软件消息",MessageBoxButtons.OK);

}

}

else

{

MessageBox.Show("电话不能为空!

");

}

}

else

{

MessageBox.Show("姓名不能为空!

");

}

图6管理联系人

修改头像按钮的程序设计:

stringcc=String.Empty;//定义字符类型

stringdbName=String.Empty;

OpenFileDialogopen=newOpenFileDialog();//打开文件

open.Filter="图片文件(*.jpg;*.gif;*.png;*.bmp)|*.jpg;*.gif;*.png;*.bmp|所有文(*.*)|*.*";

if(open.ShowDialog()==DialogResult.OK)

{

cc=open.FileName;//

Imageimage=System.Drawing.Image.FromFile(cc);//索要打开的图像

pictureBox2.Image=image;

string[]splitName=cc.Split('.');//分割字符串,为获得扩展名做准备

stringext=splitName[splitName.Length-1];//获取文件的扩展名

if(ext=="jpg"||ext=="jpeg"||ext=="bmp"||ext=="gif"||ext=="ico"||ext=="png")

{

dbName=DateTime.Now.ToString("yyyymmddhhmmss")+"."+ext;

//给上传的图片起名字,以时间为名字

newName=AppDomain.CurrentDomain.BaseDirectory+"images\\"+dbName;//新路径即当前的相对路径\images\dbName;

File.Copy(cc,newName,true);

Imagedd=System.Drawing.Image.FromFile(newName);//复制文件到新目录

stringsql="updateFriInfoset头像='"+newName+"'whereID='"+b+"'";

SqlConnectionconn=newSqlConnection(OperateDB.ConnString);

conn.Open();

SqlCommandcmd=newSqlCommand(sql,conn);

inti=cmd.ExecuteNonQuery();

conn.Close();

BindData();

修改联系人修改按钮的程序设计:

intj=dataGridView1.SelectedRows.Count;

int[]l=newint[j];

intc;

for(c=0;c

{

l[c]=dataGridView1.SelectedRows[c].Index;

}

intk=0;

while(k

{

a=ds.Tables[0].Rows[l[k]][1].ToString();

b=ds.Tables[0].Rows[l[k]][0].ToString();

Imageimage=newBitmap(a);

pictureBox2.Image=image;

k++;

}

stringsql="updateFriInfoset头像='"+newName+"'whereID='"+b+"'";

SqlConnectionconn=newSqlConnection(OperateDB.ConnString);

conn.Open();

SqlCommandcmd=newSqlCommand(sql,conn);

intx=cmd.ExecuteNonQuery();

conn.Close();

BindData();

删除联系人的程序设计:

DialogResultdlResult=MessageBox.Show(this,"确定删除所选信息吗?

","来自软件消息",MessageBoxButtons.YesNo,MessageBoxIcon.Question);

if(dlResult==DialogResult.Yes)

{

intj=dataGridView1.SelectedRows.Count;

int[]m=newint[j];

inti;

for(i=0;i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1