网络程序设计报告.docx
《网络程序设计报告.docx》由会员分享,可在线阅读,更多相关《网络程序设计报告.docx(18页珍藏版)》请在冰点文库上搜索。
网络程序设计报告
电子科技大学中山学院
课程设计报告
学生信息
系别
计算机工程系
专业
班级
A
小组成员:
课程设计信息
课程名称
网络程序设计
课程设计题目
i5u地带
课程设计时间
2010年12月03日—2010年12月31日
小组情况
1人1组
指导教师
彭政
批改情况
成绩
评阅教师
彭政
批改时间
年月日
2009-2010学年第2学期
目录
1.分析设计1
1.1.概要设计1
1.1.1功能概述1
1.1.2.界面设计2
1.1.3.开发工具介绍3
1.2.详细设计3
1.2.1.Net的应用3
1.2.2.MailMessage类和SmtpClient类4
1.2.3.Graphics对象的应用4
1.2.4.UDP的应用5
1.3.注册功能的实现5
1.4.登陆功能的实现6
1.5.发送邮件功能的实现6
1.6.聊天室功能的实现7
1.7.查询系统时钟功能的实现8
2.运行测试9
2.1.程序测试9
2.2.存在的不足9
教师评分10
i5u地带
1.分析设计
本项目主要实现一个属于自己的网络地盘的管理,主要功能为管理有关邮件发送,留言信息和系统信息等。
可见,本系统并不复杂,主要解决的问题是对数据库进行操作。
1.1.概要设计
1.1.1功能概述
系统的基本功能模块主要分以下几个:
模块编号
名称
功能
1
用户登录模块
对用户信息进行验证。
2
发送邮件模块
根据pop3的格式进行邮件的发送。
3
聊天室模块
进入广域网的聊天室。
4
时钟模块
查询系统默认时间。
功能分配模块图:
程序流程图:
1.1.2.界面设计
登录界面如下图所示:
登录/注册成功后,转即进入主界面,如下图所示:
1.1.3.开发工具介绍
系统开发平台:
VisualC#.NET2008
数据库管理系统软件:
SQLServer2000
1.2.详细设计
1.2.1.Net的应用
NET中,用ADO.NET对数据库的访问已做了很多优化。
在访问数据库时用到的类分别如下:
(1)SqlConnection:
用来建立和SQLSever服务器连接,表示打开的数据库连接。
(2)SqlCommand:
表示执行SQL语句或数据库存储过程的调用。
(3)SqlDataAdapter:
用于填充数据集合或更新数据库,也可以用于存储SQL语句。
(4)DataRow:
表示数据库对象中的一行记录。
(5)Server:
表示要连接的SQLSever实例名,其中local代表数据库的本地地址。
如果要连接远程计算机,只须把local换成远程计算机的IP地址或计算机名即可。
(6)Userid:
表示SQLSever数据库的登录用户名。
(7)pwd:
表示SQLSever数据库的登录密码。
(8)Database:
表示要连接的SQLSever数据库的名称。
1.2.2.MailMessage类和SmtpClient类
利用System.Net.Mail命名空间中的MailMessage类和SmtpClient类实现电子邮件的发送功能。
(1)MailMessage类表示可以使用System.Net.Mail.SmtpClient类发送的电子邮件,该类用到的属性和方法的意义如下:
1Body属性:
获取或设置邮件正文。
2Subject属性:
获取或设置此电子邮件的主题行。
3Sender属性:
获取或设置此电子邮件的发件人地址。
4MailMessage方法:
使用指定的System.Net.MailAddress类对象初始化System.Net.Mail.MaileMessage类的新实例。
(2)SmtpClient类允许应用程序使用简单邮件传输协议(SMTP)来发送电子邮件,该类用到的属性和方法意义如下:
①Timeout属性:
获取或设置一个值,该值指定同步Send调用的超时时间。
②Send方法:
将指定的电子邮件发送到SMTP服务器以便传递。
使用System.String对象指定邮件的发件人、收件人、主题和邮件正文。
③SmtpClient方法:
初始化System.Net.Mail.SmtpClient类的新实例,让其使用指定的SMTP服务器和端口发送电子邮件。
1.2.3.Graphics对象的应用
绘制直线是通过DrawLine方法来实现;绘制椭圆是通过DrawEllipse方法来实现。
DateTime类用来表示时间上的一刻,通常以日期和当天的时间表示。
该类用到的属性的意义如下:
(1)Hour属性:
获取DateTime对象所表示的日期的小时。
(2)Minute属性:
获取DateTime对象所表示的日期的分钟。
(3)Second属性:
获取Datetimeduixiang所表示的日期的秒数。
(4)Now属性:
获取一个DateTime对象,显示计算机上的当前日期和时间。
1.2.4.UDP的应用
UdpClient类位于System.Net.Sockets命名空间下。
该类用到的属性的意义如下:
(1)Connect方法:
建立默认远程主机。
(2)Send方法:
发送数据报。
(3)Receive方法:
接收数据报。
(4)Close方法:
关闭。
(5)Client属性:
获取或设置基础网络套接字。
(6)EnableBroadcast属性:
是否接收或发送广播。
1.3.注册功能的实现
若用户没有账号,必须注册后才能登陆主界面。
注册后的用户信息将会直接存储在数据库中的Users表里。
关键代码如下:
SqlConnectionconn;//定义SqlConnection对象实例
conn=newSqlConnection("server=.;database=Users;uid=sa;pwd=123456");
stringadd_table="insertintoUsersvalues("+"'"+txtName.Text+"'"+','+"'"+txtPassword.Text+"'"+")";
SqlCommandcomm=newSqlCommand(add_table,conn);//创建命名对象
comm.CommandType=CommandType.Text;
comm.Connection.Open();//连接打开
try//执行建表操作
{
inti=comm.ExecuteNonQuery();
//MessageBox.Show(i.ToString());
//label2.Text="影响的行数:
"+i.ToString();
MessageBox.Show("注册成功!
");
FrmLoginfrm=newFrmLogin();
frm.Show();
this.Hide();
txtName.Text="";
txtPassword.Text="";
}
catch
{
MessageBox.Show("操作失败,请重新操作!
");
}
conn.Close();
comm.Dispose();
1.4.登陆功能的实现
若已有账号可直接进行登陆,利用数据库的动态查询功能进行用户身份验证,成功即转入主界面。
stringConstrl="server=.;database=Users;uid=sa;pwd=123456";//生成连接数据库字符串
SqlConnectioncon=newSqlConnection(Constrl);//定义SqlConnection对象实例
stringSqlstrl="select*fromUserswhere昵称='"+txtName.Text+"'and密码='"+txtPassword.Text+"'";//动态查询
SqlDataAdapterada=newSqlDataAdapter(Sqlstrl,con);
DataTabledt=newDataTable();//创建DataTable对象实例
ada.Fill(dt);
inti=dt.Rows.Count;//提出数据表记录的行数
if(i>=1)
{
FrmLoadfrm=newFrmLoad();
frm.Show();//显示登陆主界面
this.Hide();
}
else
{
MessageBox.Show("输入登录信息有误,请重新输入!
","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);//提示框
}
1.5.发送邮件功能的实现
(1)自定义公用变量,具体代码如下:
MailMessageMail;
SmtpClientClient;
(2)自定义函数CreateTimeOutTestMessage实现电子邮件的发送,具体代码如下
publicvoidCreateTimeoutTestMessage(stringserver)
{
try
{//实例MailMessage类
Mail=newMailMessage(this.txtFrom.Text,this.txtGet.Text);
Mail.Subject=this.txtSubject.Text.Trim().ToString();
Mail.Body=this.richTextBox1.Text.Trim().ToString();
Client=newSmtpClient(server,25);//实例一个SmtpClient类
Client.Send(Mail);
MessageBox.Show("邮件发送成功!
");
}
catch(Exceptioney)
{
MessageBox.Show(ey.Message);
}
}
(3)双击“发送”按钮,添加该按钮的单击事件代码,具体如下:
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(this.richTextBox1.Text.Trim().ToString()!
="")
{
CreateTimeoutTestMessage("");//参数传的是POP3服务器的名称
}
else
{
MessageBox.Show("请注意邮件格式!
");
return;
}
}
1.6.聊天室功能的实现
(1)获取IP地址
(2)定义接收数据线程方法Receive
1.7.查询系统时钟功能的实现
(1)绘制时钟,自定义函数myclock,具体代码如下:
privatevoidmyclock(inth,intm,ints)
{
GraphicsmyGraphics=pictureBox1.CreateGraphics();//创建Graphics对象实例
myGraphics.Clear(Color.White);//设置背景色为白色
PenmyPen=newPen(Color.Black,1);//设置画笔的颜色和宽度
myGraphics.DrawEllipse(myPen,pictureBox1.ClientRectangle);//绘制椭圆
PointCPoint=newPoint(pictureBox1.ClientRectangle.Width/2,pictureBox1.ClientRectangle.Height/2);
PointSPoint=newPoint((int)(CPoint.X+(Math.Sin(6*s*Math.PI/180))*s_pinlen),(int)(CPoint.Y-(Math.Cos(6*s*Math.PI/180))*s_pinlen));
PointMPoint=newPoint((int)(CPoint.X+(Math.Sin(6*m*Math.PI/180))*m_pinlen),(int)(CPoint.Y-(Math.Cos(6*m*Math.PI/180))*m_pinlen));
PointHPoint=newPoint((int)(CPoint.X+(Math.Sin(((30*h)+(m/2))*Math.PI/180))*h_pinlen),(int)(CPoint.Y-(Math.Cos(((30*h)+(m/2))*Math.PI/180))*h_pinlen));
myGraphics.DrawLine(myPen,CPoint,SPoint);//绘制直线
myPen=newPen(Color.Black,2);
myGraphics.DrawLine(myPen,CPoint,MPoint);
myPen=newPen(Color.Black,4);
myGraphics.DrawLine(myPen,CPoint,HPoint);
}
(2)计时器控件Tick事件代码,具体如下:
privatevoidtimer1_Tick(objectsender,EventArgse)
{
inth=DateTime.Now.Hour;//定义变量并赋值
intm=DateTime.Now.Minute;
ints=DateTime.Now.Second;
myclock(h,m,s);//调用myclock函数
this.Text="现在的时间是:
"+h.ToString()+":
"+m.ToString()+":
"+s.ToString();//为窗体的Text属性赋值
}
2.运行测试
2.1.程序测试
(1)具体步骤:
在本地主机附加相对应的数据库后输入自定义的昵称和密码注册。
(2)具体步骤:
注册成功后,分别出现信息提示框①和②,点击即可进入主界面。
提示框①提示框②
(3)具体步骤:
对主界面进行操作选择。
(4)具体步骤:
若选择发送邮件,即可进入发送邮件界面,按格式输入。
(5)具体步骤:
若选择聊天室,即可进入局域网广播聊天室界面。
(6)具体步骤:
若选择时钟,即可进入系统时钟界面。
(7)具体步骤:
若选择退出,项目关闭。
2.2.存在的不足
本项目存在的不足仍有很多,界面过于单调,可再加入flash或音乐,鼠标的操作也可加入动态显示。
菜单的功能覆盖面不广,可结合当今时代潮流的元素,如:
围脖,rebot对话……现有功能的完整度也有待提高,与数据库的的结合还不够紧密,还不能很好地利用到。
3.总结
1.多看多写
看一下,别人写的代码,会养成一个好的编程习惯。
但是更加重要的是,要看一个比较成熟的代码。
2.多编多敲
看了代码,就要写代码,,可以跟他们相同。
这是了解他们的代码,也了解代码的执行过程。
特别是在编译的时候,你会发现的你的进步和不足。
在失败中取的微小的成功,是一件很快乐的事情。
在敲代码的时候,你会发现,你的很多英文都会输入错误。
3.多多交流
也许很简单的,问题。
都是一些很简单的属性设置的问题,或许一些你很想不到的边边角角的问题,你总是会感到迷茫,但是,不要担心,你要充分利用帮助文件,很网络的资源。
特别是,在学习C#的时候,很多人,很懒得安装MSDN,确实,那些占用很多空间。
但是,那些里面有很多好东西,会教你很多的属性的资料,和很多方法。
通过,网络的搜索,很会找到很多,有关的话题的解决方法,很多你遇到的问题,很有可能,早就被人发现,和被人解决。
你会在寻找问题的答案中,获得进步。
本身发现问题和解决问题,就是一大进步。
教师评分
创新性(5)
难/复杂度(15)
完成情况(50)
设计报告(30)
总计