C#和数据库应用实训报告(3)

2019-04-09 19:07

山东科技大学

Contents,发送时间SendTime,状态State(1发送、2撤回),如表2.3所示。

表2. 3 ToPerson表的设计

列名

Id(主键) Send(外键) Receive(外键) Contents State

SendTime

数据类型 int int int

nvarchar(400) int

datetime

允许Null值 否 是 是 是 是 是

Groups表设计:群列表编号Id设为主键,群名称GroupName,状态State(1代表群正常2代表解散群),如表2.4所示。

表2. 4 Groups表的设计

列名 Id(主键) GroupName State

数据类型 int

nvarchar(50) int

允许Null值 否 是 是

JoinGroup表设计:群成员表编号Id,群成员GroupUser设为外键(参照Users表中的编号Id),群号GroupId(参照群列表中的编号Id),状态State(1代表在群中2代表离开群),加群时间JoinTime,如表2.5所示。

表2. 5 JoinGroup表的设计

列名

Id(主键)

GroupUser(外键) GroupId(外键) JoinTime State

表2. 6 ToGroup表的设计

列名

Id(主键)

GroupId(外键) Send(外键) SendTime Contents

数据类型 int int int

datetime

nvarchar(400)

允许Null值 否 是 是 是 是

数据类型 int int int datetime int

允许Null值 否 是 是 是 是

ToGroup表设计:群消息表编号Id设为主键,群号GroupId设为外键(参照

8

实训总结

群列表中的编号Id),发送人Send设为外键(参照群成员表中的GroupUser),时间SendTime,内容Contents,如表2.6所示。

3 实训总结

本次实训实现了即时聊天系统的基本功能,虽然没有华丽的界面,超强的性能,就练手学习而言绰绰有余。

通过即时聊天室的设计,感觉动手能力增强了很多,C#编程能力有了比较大的提升。设计本系统,是对自己专业知识的一次检验,也是一次增强自身综合素质机会。C#程序设计这门课程将我们从局部的编写程序带入了整体开发软件的阶段,这是对我们知识与能力的一种挑战。还有本次实训和以往不同,本次实训还结合了数据库的应用,很大层次上对学生的动手实践能力提高了。通过C#和数据库的结合来实现即时聊天室这个系统,我们既可以操作前台又可以对后台进行操作,在聊天室里的所有操作,在数据库里都可以看到。

通过本次实训也发现了自己的很多问题,比如说,对C#和数据库的基础知识掌握不牢固,有时候用到的时候还要去翻翻书。每次的粗心马虎是必不可少,实训中有些地方就是因为粗心马虎,程序出错而且很难找到错点。

通过本次实训,学到了平时课堂上没有学到的东西,翻阅了很多资料,了解了不少以前没接触的东西。遇到不懂不会的问题借助资料书,互联网尽可能的将其解决。问题是死的人是活的,“众人拾柴火焰高”,通过小组成员对难题的讨论,将难题容易化,从每个小组成员那都可以学到不同的东西,三人行必有我师!

如果想提高自己的综合能力,必须多动手,多思考,多翻阅资料,多请教老师和同学,只有这样不断地磨炼才能有所成绩!!

9

山东科技大学

参考文献

[1]郑宇军.C#程序设计(第2版)[M].北京:人民邮电出版社,2016

[2]王小科,张金辉,杨贵发.C#程序开发范例宝典[M].北京:人民邮电出版社,2015 [3]唐汉明,翟振兴,关宝军,王洪权,黄潇.深入浅出MySQL数据库开发、优化与管理维护(第2版)[M].北京:人民邮电出版社,2016

[4]王珊,萨师煊.数据库系统概论(第5版)[M].北京:高等教育出版社,2015

10

附录

附录

附录A 主要源程序

ChatForm窗体代码: using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;

using System.Threading.Tasks; using System.Windows.Forms; using System.Net;

using System.Net.Sockets; using Model;

using DataService;

namespace Client {

public partial class ChatForm : Form {

D_ToPerson D_ToPerson = new D_ToPerson(); //端口号

const int PORT = 20001; //命令长度

const int COMMANDLENGTH = 9; //登录命令

const string LOGINCOMMAND = \ \ //私聊命令

const string TOPENSON = \ //群聊命令

const string TOGROUP = \ \ //添加好友命令

const string ADDFRIEND = \ //byte数组长度

const int SIZE = 8192; //字节数组,缓冲区

byte[] buffer = new byte[SIZE]; //声明客户端socket

Socket clientSocket = null; //用于保存所有用户

11

山东科技大学

List allClients = new List(); //保存个人信息

M_User MySelf = new M_User();

M_User Receivephone = new M_User(); //用户名长度

const string USERLENGTH = \ //定义一个数据更新的委托

public delegate void UpdateData(string data);

public ChatForm() {

InitializeComponent(); }

private void ChatForm_Load(object sender, EventArgs e) {

//实例化登陆窗口

Form1 frm = new Form1();

//登录窗口以模式对话框形式显示 frm.ShowDialog(); //判断对话框是否点击

if (frm.DialogResult != DialogResult.OK) {

this.Close(); } else {

M_User user = frm.user;

Lbl_UserName.Text = user.UserName; //实例化Socket

clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

IPAddress ip = IPAddress.Parse(frm.TxtIP);

EndPoint serverEp = new IPEndPoint(ip, PORT); clientSocket.Connect(serverEp); //接收消息(异步接收)

clientSocket.BeginReceive(buffer, 0, SIZE, SocketFlags.None, OnDataReceive, null);

MySelf.Phone = frm.TxtPhone; //连接数据库获得其他信息

SendMessage(LOGINCOMMAND + frm.TxtPhone);

} }

public void AddMessage(string message)

12


C#和数据库应用实训报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:钢结构人行天桥施工方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: