C#课程设计通讯录软件设计Word文档下载推荐.docx
《C#课程设计通讯录软件设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C#课程设计通讯录软件设计Word文档下载推荐.docx(31页珍藏版)》请在冰豆网上搜索。
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
密码
联系人信息表(FriInfo)
id
int
编号
头像
nvarchar(MAX)
MAX
本人
nvarchar
UserName(用户名)
姓名
性别
char
2
出生日期
datetime
电话
qq
籍贯
邮箱
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=="
请输入验证码!
MessageBoxButtons.OK,MessageBoxIcon.Information);
if(txtYanZheng.Text==str)
stringsql1="
select*fromUserInfowhereUserName='
+txtUsername.Text.Trim()+"
boolcount=(bool)OperateDB.ExecuteReader(sql1);
if(count==false)
stringsql="
insertintoUserInfo(UserName,UserPwd)values('
'
+txtZhuPwd.Text.Trim()+"
)"
if(OperateDB.ExecuteNonQuery(sql)==1)
用户注册成功!
MessageBoxButtons.OK);
用户注册失败!
用户名已存在!
验证码错误!
str="
两次输入的密码不一致!
用®
?
户¡
ì
名?
不?
能¨
¹
为a空?
!
来¤
¡
ä
自Á
软¨
¨
ª
件t消?
息¡
é
}//产生随机数的函数
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
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
//生成随机生¦
成器
g.Clear(Color.White);
//清空图片背景色
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);
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)
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="
+frmLogin.username+"
+txtOldPwd.Text.Trim()+"
if(OperateDB.ExecuteReader(sqlCheckPwd))
updateUserInfosetUserPwd='
+txtNewPwd.Text.Trim()+"
whereUserName='
密码修改成功!
);
密码修改失败!
旧密码不正确!
两次修改的密码不一!
图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)
女"
insertintoFriInfo(本人,姓名,性别,出生日期,电话,QQ,籍贯,邮箱,头像)Values('
+txtName.Text.Trim().ToLower()+"
'
+FriSex+"
+dateTimePicker1.Value+"
+mtxtPhone.Text+"
+txtQq.Text+"
+comboBox1.SelectedItem+"
+txtYxiang.Text+"
+newName+"
添加联系人成功!
添加联系人失败!
添加失败,不能重复记录!
头像不能为空!
请输入11位有效电话号码..."
"
MessageBoxButtons.OK);
电话不能为空!
姓名不能为空!
图6管理联系人
修改头像按钮的程序设计:
stringcc=String.Empty;
//定义字符类型
stringdbName=String.Empty;
OpenFileDialogopen=newOpenFileDialog();
//打开文件
open.Filter="
图片文件(*.jpg;
*.gif;
*.png;
*.bmp)|*.jpg;
*.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"
bmp"
gif"
ico"
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);
//复制文件到新目录
updateFriInfoset头像='
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<
j;
c++)
l[c]=dataGridView1.SelectedRows[c].Index;
intk=0;
while(k<
j)
a=ds.Tables[0].Rows[l[k]][1].ToString();
b=ds.Tables[0].Rows[l[k]][0].ToString();
Imageimage=newBitmap(a);
k++;
intx=cmd.ExecuteNonQuery();
删除联系人的程序设计:
DialogResultdlResult=MessageBox.Show(this,"
确定删除所选信息吗?
MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if(dlResult==DialogResult.Yes)
{
int[]m=newint[j];
inti;
for(i=0;
i<
j;
i++)