دانلود سورس پروژه سی شارپ شبیه سازی صف بانک تحت شبکه

این پروژه شامل سه برنامه است که تحت شبکه با هم ارتباط بر قرار می کنند و اطلاعات مورد نظر خود را رد و بدل می کنند.
سورس برنامه را می توانید در پایین صفحه دانلود کنید.
برنامه سمت سرور :
این برنامه هماهنگ کننده بین همه برنامه هاست و همیشه منتظر درخواست ارتباط از برنامه کارمند یا مشتری است .و پس از برقراری ارتباط خدمات مورد نظر را به آنها ارائه می دهد.
اگر کلاینت مربوط به کارمند به آن وصل شود خدمات مربوط به ارسال مشتری به سمت کارمند را ارائه می دهد.
و اگر کلاینت مربوط به مشتری به آن وصل شود خدمات مربوط به نوبت دهی مشتری و مشخص کردن کارمند مربوطه را ارائه می دهد.
این هم کد برنامه ی سمت سرور:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.IO;
using System.Net.Sockets;
using System.Net;
using System.Collections;
// programer:Taher Shali
// www.SourceCodes.ir
namespace bankQ
{
public partial class server : Form
{
public server()
{
InitializeComponent();
}
private void btn_startSystem_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim() != "")
{
textBox1.BackColor = Color.White;
Thread t = new Thread(new ThreadStart(lesinit));
t.IsBackground = true;
t.Start();
MessageBox.Show("سرور آماده دریافت درخواست ها میباشد");
btn_startSystem.Enabled = false;
textBox1.Enabled = false;
}
else
textBox1.BackColor = Color.Yellow;
}
TcpListener tc;
Socket s;
private void lesinit()// in metod hamishe montazere yeki besh vasl beshe
{
IPAddress ip = IPAddress.Parse("127.0.0.1");
tc = new TcpListener(ip, 8086);
tc.Start();
while (true)
{
s = tc.AcceptSocket();
Thread t = new Thread(new ThreadStart(replay));//harki vasl shod in metodo barash faal mikone (metode pasokhguyi)
t.IsBackground = true;
t.Start();
// bad dobare mire bala montazere nafare badi mishe
}
}
private void replay()// (metode pasokhguyi)
{
Socket sok = s;
NetworkStream ns = new NetworkStream(sok);
StreamReader reader = new StreamReader(ns);
StreamWriter writer = new StreamWriter(ns);
string str = "", response = "";
// daryafte code az client tu inja alakie har chi mitune bashe masalan "request"
try { str = reader.ReadLine(); }
catch { str = "error"; }
if (str == "request")
{
if (employee.Count > 0)
{
addQueue();
response = tim.ToString() + "," + count.ToString() + "," + num.ToString();
}
else
response ="noemployee, , ";
}
else if (str == "employee_register")
{
numberemployee++;
employee.Add("کارمند شماره "+numberemployee.ToString());
string nc = "";
if (Customer.Count > 0)
{
nc = Customer.Dequeue().ToString();
customers.Remove("مشتری شماره " + nc.ToString());
}
response ="registered,"+numberemployee.ToString()+","+nc;
}
else if (str == "employee_next")
{
string nc = "";
if (Customer.Count > 0)
{
nc = Customer.Dequeue().ToString();
customers.Remove("مشتری شماره " + nc.ToString());
}
response = nc;
}
//replay from server
writer.WriteLine(response);
writer.Flush();
// hala javab dad ertebato ghat mikone ba in client
ns.Close();
sok.Close();
}
// client فراخوانی این تابع هنگام درخواست کاربر
Queue Customer = new Queue(2000);
int numberCustomer = 0,numberemployee=0;
int tim, count, num;
List customers = new List();
List employee = new List();
public void addQueue()
{
........
}
private void timing_Tick(object sender, EventArgs e)
{
if (customers.Count != lst_view.Items.Count)
{
lst_view.Items.Clear();
foreach (string item in customers)
{
lst_view.Items.Add(item);
}
}
if (employee.Count != listBox1.Items.Count)
{
listBox1.Items.Clear();
foreach (string item in employee)
{
listBox1.Items.Add(item);
}
}
}
private void server_Load(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("http://www.sourcecodes.ir");
}
// client بعد از اجرای تابع بالایی ارسال این سه مقدار پایین به کاربر
// int tim, count, num;
}
}
برنامه سمت کارمند:
این برنامه ابتدا درخواست اتصال را به سمت سرور می فرستد و سپس پس از ارائه ی سرویس به مشتری ، درخواست دریافت مشتری بعدی را به سمت سرور ارسال می کند
این هم کد برنامه ی سمت کارمند:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.IO;
// programer :Taher shali
// www.SourceCodes.ir
namespace karmand_bank
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
TcpClient tcp;
NetworkStream ns;
StreamReader reader;
StreamWriter writer;
string strin = "";
private void button1_Click(object sender, EventArgs e)
{
try
{
......
if (strsplit[0] == "registered")
{
button1.Visible = false;
btn_client.Visible = true;
while (this.Size.Height < 300)
this.Size = new Size(this.Size.Width, this.Size.Height + 1);
this.Text="کارمند شماره "+strsplit[1];
label1.Text="در حال سرویس به مشتری شماره "+strsplit[2];
}
}
catch
{
MessageBox.Show("خطا در اتصال به سرور سرور را اجرا کرده و یا پورت اتصال را تغییر دهید");
return;
}
}
private void btn_client_Click(object sender, EventArgs e)
{
try
{
tcp = new TcpClient("127.0.0.1", 8086);
tcp.ReceiveBufferSize = 25000;
tcp.NoDelay = true;
ns = tcp.GetStream();
reader = new StreamReader(ns);
writer = new StreamWriter(ns);
writer.WriteLine("employee_next");
writer.Flush();
strin = reader.ReadLine();// javabe serevero migire
while (this.Size.Height > 160)
this.Size = new Size(this.Size.Width, this.Size.Height - 1);
while (this.Size.Height < 300)
this.Size = new Size(this.Size.Width, this.Size.Height + 1);
if (strin != "")
label1.Text = "در حال سرویس به مشتری شماره " + strin;
else
label1.Text = "مشتریی در صف وجود ندارد";
}
catch
{
MessageBox.Show("خطا در اتصال به سرور سرور را اجرا کرده و یا پورت اتصال را تغییر دهید");
return;
}
}
private void Form1_Load(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("http://www.sourcecodes.ir");
}
}
}
برنامه سمت مشتری:
این برنامه ابتدا درخواست دریافت نوبت را به سمت سرور ارسال می کند و سرور زمان انتظار و نوبت آن را به این برنامه اطلاع می دهد
این هم کد برنامه ی سمت کارمند:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.IO;
// programer :Taher shali
// www.SourceCodes.ir
namespace request_bank
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
TcpClient tcp;
NetworkStream ns;
StreamReader reader;
StreamWriter writer;
string strin = "";
private void btn_client_Click(object sender, EventArgs e)
{
string tim, count, num;
try
{
....
writer.Flush();
strin = reader.ReadLine();// javabe serevero migire
string[] strsplit = null;
strsplit = strin.Split(',');//taghsimesh mikone bar asase ","
if (strsplit[0] != "noemployee")
{
tim = strsplit[0];
count = strsplit[1];
num = strsplit[2];
label1.Text = " نوبت شما حدود " + tim.ToString() + " دقیقه دیگر ";
label2.Text = " تعداد افراد موجود در صف : " + count.ToString() + " نفر ";
label3.Text = " شماره شما : " + num.ToString();
while (this.Size.Height > 170)
this.Size = new Size(this.Size.Width, this.Size.Height - 1);
Application.DoEvents();
while (this.Size.Height < 280)
this.Size = new Size(this.Size.Width, this.Size.Height + 1);
}
else
MessageBox.Show("کارمندی برای پاسخگویی آماده نیست");
}
catch
{
MessageBox.Show("خطا در اتصال به سرور سرور را اجرا کرده و یا پورت اتصال را تغییر دهید");
return;
}
}
private void Form1_Load(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("http://www.sourcecodes.ir");
}
}
}
هم اکنون می توانید سورس این پروژه را پس ار پرداخت دانلود کنید
حجم فایل :145 KB
خرید محصول
قیمت این محصول: 10000 تومانخرید محصول از طریق پرداخت اینترنتی
- ← پرداخت از طریق درگاه شاپرک با همه کارت های بانکی انجام خواهد شد .
- ← پس از پرداخت مبلغ به این صفحه ارجاع داده می شوید و میتوانید فایل مورد نظر را با لینک مستقیم دانلود کنید.
- ← لطفا در صورتی که مرورگر شما بروز نیست برای خرید ، آن را بروز کنید.
- ← عدم به روز بودن مرورگر باعث می شود، بجای صفحه درگاه بانک، خطای عدم تایید SSL را مشاهده نمایید.
- ← در صورت بروز مشکل ، در قسمت تماس با ما از تیم پشتیبانی کمک بگیرید.