Giao diện form cập nhật đầu số điện thoại

Một phần của tài liệu Xây dựng phần mềm tương tác giữa người dạy với người học qua tin nhắn SMS (Trang 57 - 74)

Mô tả: Chức năng cập nhật đầu số điện thoại cho phép người quản trị cập nhật (thêm, sửa, xóa) đầu số điện thoại. Đây là danh sách các đầu số mà phần mềm SMSGateway nhận để xử lý tin nhắn.

Hình 3.8. Giao diện form cập nhật đầu số điện thoại.

Các bước cập nhật đầu số điện thoại như sau:

+ Để thêm đầu số, kích chọn nút “Thêm” để làm trống ô nhập đầu số, sau đó nhập đầu số cần thêm và chọn nút “Lưu” để thêm đầu số điện thoại vào cơ sở dữ liệu.

+ Để sửa đầu số điện thoại, chọn đầu số trong khung bên trái, chọn nút “Sửa” rồi thay đổi đầu số, cuối cùng chọn nút “Lưu” để lưu thay đổi.

+ Khi muốn xóa đầu số điện thoại, chọn đầu số muốn xóa trong khung bên trái rồi chọn nút xóa.

KẾT LUẬN

Trong thời gian thực hiện đề tài, em đã xây dựng được phần mềm tương tác giữa người dạy với người học qua tin nhắn SMS với kết quả cho thấy như sau:

● Về cơ bản, phần mềm sản phẩm đã thực hiện được chức năng tương tác giữa người dạy với người học bằng việc thực hiện kiểm tra qua tin nhắn SMS.

● So với các hệ thống có cùng chức năng khác thì đây là một hệ thống rẻ tiền có thể lưu trữ và xử lý tin nhắn, chỉ cần một máy cấu hình bình thường, kết nối cơ sở dữ liệu và có modem GSM.

● Phần mềm có giao diện thân thiện, thuận tiện cho người sử dụng và hướng đến đối tượng người sử dụng không có mạng Internet.

● Sử dụng hai cơ sở dữ liệu, do đó người quản trị dễ dàng thao tác, bảo trì và đặc biệt tính bảo mật tương đối cao.

Để thực hiện được những chức năng trên tác giả đã tìm hiểu, nghiên cứu các vấn đề có liên quan tới đề tài như: Công nghệ GSM, dịch vụ SMS trên nền công nghệ GSM, ngôn ngữ lập trình C#, ứng dụng của hệ thống SMS trong một số hệ thống tương tác,…và các vấn đề khác liên quan tới đề tài.

Bên cạnh đó, phần mềm vẫn còn tồn tại những vấn đề, hạn chế sau: ● Do chưa được đưa vào thử nghiệm nên phần mềm có thể chưa đáp ứng được hết các yêu cầu của người sử dụng.

● Tốc độ xử lý chậm khi có nhiều tin nhắn đến. ● Cần thiết phải có người quản trị và bảo trì.

Trên cơ sở những vấn đề còn tồn tại và khả năng phát triển phần mềm trong tương lai, đề tài có thể được tiếp tục phát triển như sau:

Tiếp tục xây dựng và hoàn thiện để đáp ứng được nhiều hơn các yêu cầu của người sử dụng.

Phát triển phần mềm trên cả hệ thống Online: Người dạy học có thể truy cập vào website của hệ thống và thực hiện kiểm tra người học ở bất kỳ đâu mà không cần truy cập vào máy tính chạy phần mềm.

Đề tài “Xây dựng phần mềm tương tác giữa người dạy với người học qua tin nhắn SMS” là một đề tài hữu ích, mang tính thực tế cao. Ứng dụng phần mềm này trong quá trình dạy học, người dạy có thể kiểm tra kiến thức của người học bất kỳ lúc nào và vì vậy, giúp người học hình thành được tính tự giác trong học tập.

TÀI LIỆU THAM KHẢO

[1]. Phạm Hữu Khang (chủ biên), Đoàn Thiện Ngân (2008), C# 2008 & Lập trình WINDOWS FORMS, Nhà xuất bản Lao động - Xã hội.

[2]. Phạm Hữu Khang (2005), Lập trình ứng dụng chuyên nghiệp SQL SERVER, Nhà xuất bản Lao động - Xã hội.

[3]. Nguyễn Ngọc Bình Phương, Thái Thanh Phong (2006), Các giải pháp lập trình C sharp, Nhà xuất bản Giao thông Vận tải.

[4]. Phạm Đức Thọ (2013), “Xây dựng hệ thống tra cứu điểm thi, thời khóa biểu tại trường Đại học Hùng Vương qua tin nhắn SMS”, Tạp chí KHCN Trường Đại học Hùng Vương, số 26, tr. 56-61.

[5]. Nguyễn Trần Quốc Vinh (2008), “Một số vấn đề trong xây dựng hệ thống gửi/nhận SMS dùng Mô-đem GSM”, Tạp chí khoa học & công nghệ trường Đại học Đà Nẵng, Số 5(28), tr. 46-53.

[6]. http://vi.wikipedia.org.

PHỤ LỤC PHỤ LỤC 1: Mã nguồn lớp kết nối 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.Data.SqlClient; namespace KHOALUAN { class ketnoi {

public static string pq = ""; public static string tentk = "";

public static SqlConnection GetCon() {

return new SqlConnection("Data

Source=PC2014020608ITM;Initial Catalog=SMSGateway;Integrated Security=True");

}

public static SqlConnection GetCon1() {

return new SqlConnection("Data

Source=PC2014020608ITM;Initial Catalog=dangkyhv_dangky;Integrated Security=True");

}

public SqlConnection con = GetCon(); public SqlConnection con1 = GetCon1(); public void ketnoiSMS()

{

con.Open(); }

public void ketnoiEdu() {

con1.Open(); }

public void dongknSMS() {

con.Close(); }

public void dongknEdu() {

con1.Close(); }

//kiem tra csdl

public static bool Checklogin(string sql) {

SqlConnection con = GetCon(); con.Open();

SqlCommand cmd = new SqlCommand(sql, con); // SqlDataReader dr = cmd.ExecuteReader(); object ob = cmd.ExecuteScalar(); con.Close(); cmd.Dispose(); if (ob == null) return false; else return true; }

//hàm load dữ liệu lên datatable edu

public DataTable TaobangEdu(string sql) {

try {

SqlCommand cmd = new SqlCommand(sql,con1); SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable();

da.Fill(dt); return (dt); }

catch (Exception e) {

throw new Exception(e.Message); }

}

//hàm load dữ liệu lên datatable SMS

public DataTable load_TaobangSMS(string sqlSMS) {

try {

SqlCommand cmd = new SqlCommand(sqlSMS, con); SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable();

da.Fill(dt); return (dt); } catch (Exception e) {

throw new Exception(e.Message); }

}

public static string phanquyen(string taikhoan) {

SqlConnection con = GetCon();

SqlCommand cmd = new SqlCommand("select quyen from dangnhap where tendangnhap='" + taikhoan + "'", con);

con.Open();

string kq = Convert.ToString(cmd.ExecuteScalar()); con.Close();

}

public static bool KiemTra(string Sqlxoa) {

bool tem = false; SqlDataReader Dr;

SqlConnection con = GetCon(); con.Open();

SqlCommand Cmd = new SqlCommand(Sqlxoa, con); Dr = Cmd.ExecuteReader(); if (Dr.Read()) { tem = true; } Dr.Close(); con.Close(); return (tem); }

public void ThucHienLenhSMS(string sql) {

try {

SqlCommand cmd = new SqlCommand(sql,con); cmd.ExecuteNonQuery();

}

catch (SqlException ex) {

MessageBox.Show(" Lỗi CSDL SMS " + "\n" + ex.Message); }

}

public void ThucHienLenhEdu(string sql) {

try {

SqlCommand cmd = new SqlCommand(sql,con1); cmd.ExecuteNonQuery();

}

catch (SqlException ex) {

MessageBox.Show(" Lỗi CSDL Edusoft " + "\n" + ex.Message);

} }

public DataSet rptreportSMS(string lenh, DataSet das, string tenbang)

{

ketnoiSMS();

SqlCommand cm = new SqlCommand(lenh, con); SqlDataAdapter da = new SqlDataAdapter(cm); da.Fill(das, tenbang);

return das; }

public DataSet rptreportEdu(string lenh, DataSet das, string tenbang)

{

ketnoiEdu();

SqlCommand cm = new SqlCommand(lenh, con1); SqlDataAdapter da = new SqlDataAdapter(cm); da.Fill(das, tenbang);

return das; }

internal object truyvan(string sql1) {

throw new NotImplementedException(); }

} }

PHỤ LỤC 2: Mã nguồn form cập nhật câu hỏi 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.Data.SqlClient; namespace KHOALUAN {

public partial class frmcncauhoi: Form {

public frmcncauhoi() {

InitializeComponent(); }

ketnoi kn = new ketnoi(); int kt = 0;

string mamh, mach, noidung, pa1, pa2, pa3, pa4,pad; public void resettext()

{ rtxtNoidung.ResetText(); txtDA1.ResetText(); txtDA2.ResetText(); txtDA3.ResetText(); txtDA4.ResetText(); checkBox1.Checked = false; checkBox2.Checked = false; checkBox3.Checked = false; checkBox4.Checked = false; }

public void load_cmbmh() {

cmbMaMH.DataSource = load_cmb.loadmonhoc(); cmbMaMH.DisplayMember = "TenMH";

cmbMaMH.ValueMember = "MaMH"; }

public void load_cmbch() { cmbMaCH.DataSource = load_cmb.loadCH_MH(cmbMaMH.SelectedValue.ToString()); cmbMaCH.DisplayMember = "MaCH"; cmbMaCH.ValueMember = "MaCH"; }

EventArgs e) {

cmbMaMH.ResetText(); cmbMaCH.ResetText(); resettext();

//load combo mã môn học load_cmbmh();

}

private void cmbMaMH_SelectedIndexChanged(object sender, EventArgs e)

{

//load combobox mã câu hỏi load_cmbch();

}

private void cmbMaCH_SelectedIndexChanged(object sender, EventArgs e) { rtxtNoidung.ResetText(); txtDA1.ResetText(); txtDA2.ResetText(); txtDA3.ResetText(); txtDA4.ResetText(); checkBox1.Checked = false; checkBox2.Checked = false; checkBox3.Checked = false; checkBox4.Checked = false; kn.ketnoiSMS();

string sql = "SELECT * from CauHoi where MaMH = '" + cmbMaMH.SelectedValue.ToString() + "' and MaCH = '" + cmbMaCH.SelectedValue.ToString() + "'";

SqlCommand cmd = new SqlCommand(sql, kn.con); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { rtxtNoidung.Text=dr["Noidung"].ToString(); txtDA1.Text = dr["DA1"].ToString(); txtDA2.Text = dr["DA2"].ToString(); txtDA3.Text = dr["DA3"].ToString(); txtDA4.Text = dr["DA4"].ToString(); if (dr["DAD"].ToString() == "A”) checkBox1.Checked = true; else if (dr["DAD"].ToString() == "B") checkBox2.Checked = true; else if (dr["DAD"].ToString() == "C") checkBox3.Checked = true; else if (dr["DAD"].ToString() == "C") checkBox4.Checked = true;

}

dr.Close(); dr.Dispose(); kn.dongknSMS(); }

private void btnrefresh_Click(object sender, EventArgs e)

{

cmbMaCH.ResetText(); resettext();

}

private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (checkBox1.Checked) { checkBox2.Checked = false; checkBox3.Checked = false; checkBox4.Checked = false; } }

private void checkBox2_CheckedChanged(object sender, EventArgs e) { if (checkBox2.Checked) { checkBox1.Checked = false; checkBox3.Checked = false; checkBox4.Checked = false; } }

private void checkBox3_CheckedChanged(object sender, EventArgs e) { if (checkBox3.Checked) { checkBox1.Checked = false; checkBox2.Checked = false; checkBox4.Checked = false; } }

private void checkBox4_CheckedChanged(object sender, EventArgs e) { if (checkBox4.Checked) { checkBox1.Checked = false; checkBox2.Checked = false; checkBox3.Checked = false;

} }

private void btnThem_Click(object sender, EventArgs e) { mamh = cmbMaMH.SelectedValue.ToString(); mach = cmbMaCH.Text.ToString(); noidung = rtxtNoidung.Text; pa1 = txtDA1.Text; pa2 = txtDA2.Text; pa3 = txtDA3.Text; pa4 = txtDA4.Text; pad = "";

if (checkBox1.Checked == true) pad = "A";

else if (checkBox2.Checked == true) pad = "B"; else if (checkBox3.Checked == true) pad = "C"; else if (checkBox4.Checked == true) pad = "D"; try

{

kn.ketnoiSMS();

string sql = "insert into CauHoi values('" + mach + "','" + mamh + "',N'" + noidung + "',N'" + pa1 + "',N'" + pa2 + "',N'" + pa3 + "',N'" + pa4 + "','" + pad + "')";

SqlCommand command = new SqlCommand(sql, kn.con);

command.ExecuteNonQuery();

MessageBox.Show("Bạn đã thêm thành công", "Thông báo"); resettext(); kn.dongknSMS(); load_cmbch(); } catch (Exception) { MessageBox.Show(" Bạn đã nhập trùng khóa chính", "Mời bạn nhập lại", MessageBoxButtons.OK,

MessageBoxIcon.Warning); }

}

private void btnXoa_Click(object sender, EventArgs e) {

DialogResult dialog = new DialogResult();

dialog = MessageBox.Show("Bạn có chắc muốn xóa? ", "Cảnh báo!", MessageBoxButtons.YesNo,

MessageBoxIcon.Question);

if (dialog == DialogResult.Yes) {

kn.ketnoiSMS();

MaCH='" + cmbMaCH.Text + "'";

SqlCommand command1 = new SqlCommand(sql2, kn.con);

command1.ExecuteNonQuery(); cmbMaCH.ResetText();

resettext();

MessageBox.Show("Bạn đã xóa thành công!", "Thông báo");

kn.dongknSMS(); load_cmbch(); }

}

private void btnSua_Click(object sender, EventArgs e) { mamh = cmbMaMH.SelectedValue.ToString(); mach = cmbMaCH.Text; noidung = rtxtNoidung.Text; pa1 = txtDA1.Text; pa2 = txtDA2.Text; pa3 = txtDA3.Text; pa4 = txtDA4.Text; pad = "";

if (checkBox1.Checked == true) pad = "A";

else if (checkBox2.Checked == true) pad = "B"; else if (checkBox3.Checked == true) pad = "C"; else if (checkBox4.Checked == true) pad = "D"; kn.ketnoiSMS();

string sql = "update CauHoi set MaCH = '" + mach + "', MaMH = '" + mamh + "', Noidung = N'" + noidung + "', DA1 = N'" + pa1 + "', DA2 = N'" + pa2 + "', DA3 = N'" + pa3 + "', DA4 = N'" + pa4 + "', DAD = N'" + pad + "' where MaCH = '" + cmbMaCH.SelectedValue.ToString() + "'";

SqlCommand command = new SqlCommand(sql, kn.con);

command.ExecuteNonQuery();

MessageBox.Show("Bạn đã sửa thành công", "Thông báo");

resettext(); kn.dongknSMS(); load_cmbch(); }

private void btnThoat_Click(object sender, EventArgs e) { this.Close(); } } }

PHỤ LỤC 3: Mã nguồn form gửi câu hỏi kiểm tra 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.Data.SqlClient; namespace KHOALUAN {

public partial class frmguicauhoi: Form {

public frmguicauhoi() {

InitializeComponent(); }

ketnoi kn = new ketnoi(); public string noidung = "";

private void frmguicauhoi_Load(object sender, EventArgs e)

{

listBox1.Items.Clear(); listBox2.Items.Clear(); //load combo mã môn học

cmbXmaMH.DataSource = load_cmb.loadmonhoc(); cmbXmaMH.DisplayMember = "TenMH";

cmbXmaMH.ValueMember = "MaMH";

}

private void cmbXmaMH_SelectedIndexChanged(object sender, EventArgs e)

{

//load combo mã câu hỏi

cmbXMaCH.DataSource = load_cmb.loadcauhoi(); cmbXMaCH.DisplayMember = "MaCH";

cmbXMaCH.ValueMember = "MaCH"; //load danh sách sinh viên

string sql1 = "SELECT KQDK.MaSV,

SinhVien.HoTenSV from KQDK,SinhVien where KQDK.MaSV = SinhVien.MaSV and KQDK.MaMH = '" +

cmbXmaMH.SelectedValue.ToString() + "'"; kn.ketnoiEdu();

SqlCommand cmd1 = new SqlCommand(sql1, kn.con1);

SqlDataReader dr = cmd1.ExecuteReader(); while (dr.Read()) listBox1.Items.Add(dr["MaSV"].ToString() + "-" + dr["HoTenSV"].ToString()); kn.dongknEdu(); }

public ListViewItem item;

private void button1_Click(object sender, EventArgs e)

{

int n = listBox1.Items.Count; for (int i = 0; i < n; i++) { if (listBox1.GetSelected(i)) { kn.ketnoiSMS(); string sv=listBox1.Items[i].ToString(); item = listView1.Items.Add(sv.Substring(0, sv.IndexOf("-"))); item.SubItems.Add(sv.Substring(sv.IndexOf("-") + 1)); string sql1 = "SELECT SoDT from

SinhVien_SDT where SinhVien_SDT.MaSV = '" + sv.Substring(0, sv.IndexOf("-")) + "'";

SqlCommand cmd1 = new SqlCommand(sql1, kn.con); SqlDataReader dr = cmd1.ExecuteReader(); if (dr.Read()) item.SubItems.Add(dr["SoDT"].ToString()); kn.dongknSMS(); } } }

private void button2_Click(object sender, EventArgs e) { int n = listBox1.Items.Count; for(int i=0;i<n;i++) { string sv = listBox1.Items[i].ToString(); item = listView1.Items.Add(sv.Substring(0, sv.IndexOf("-"))); item.SubItems.Add(sv.Substring(sv.IndexOf("-") + 1)); string sql1 = "SELECT SoDT from

SinhVien_SDT where SinhVien_SDT.MaSV = '" + sv.Substring(0, sv.IndexOf("-")) + "'";

kn.ketnoiSMS();

SqlCommand cmd1 = new SqlCommand(sql1, kn.con); SqlDataReader dr = cmd1.ExecuteReader(); if (dr.Read()) item.SubItems.Add(dr["SoDT"].ToString()); kn.dongknSMS(); } }

private void btnXoa_Click(object sender, EventArgs e) {

foreach (ListViewItem item in listView1.SelectedItems)

{

listView1.Items.Remove(item); }

}

private void btnXoahet_Click(object sender, EventArgs e)

{

listView1.Items.Clear(); }

private void cmbXMaCH_SelectedIndexChanged(object sender, EventArgs e)

{

string sql1 = "SELECT * from CauHoi where MaCH = '" + cmbXMaCH.SelectedItem.ToString() + "'";

kn.ketnoiSMS();

SqlCommand cmd1 = new SqlCommand(sql1, kn.con1); SqlDataReader dr = cmd1.ExecuteReader(); if (dr.Read()) { listBox2.Items.Add(dr["Noidung"].ToString()); listBox2.Items.Add("A." + dr["DA1"].ToString() + "\t" + "B." + dr["DA2"].ToString()); listBox2.Items.Add("C." + dr["DA3"].ToString() + "\t" + "D." + dr["DA4"].ToString()); noidung = dr["Noidung"].ToString() + " " + "A." + dr["DA1"].ToString() + " " + "B." + dr["DA2"].ToString() + " " + "C." + dr["DA3"].ToString() + " " + "D." + dr["DA4"].ToString(); } kn.dongknSMS(); }

private void btnchon_Click(object sender, EventArgs e) {

kn.ketnoiSMS();

foreach (ListViewItem item in listView1.Items) {

string sql = "Insert into Nhap Values('" + cmbXmaMH.Text.ToString() + "', '" + item.Text + "', N'" + item.SubItems[1].Text + "', N'" + item.SubItems[2].Text + "', '" + cmbXMaCH.Text.ToString() + "', N'" +

noidung.ToString() + "'";

SqlCommand command = new SqlCommand(sql, kn.con);

command.ExecuteNonQuery(); }

kn.dongknSMS(); }

private void btnkhaosat_Click(object sender, EventArgs e)

{

kn.ketnoiSMS();

foreach (ListViewItem item in listView1.Items) {

string sql1 = "Insert into

TinNhanChoGui(SoDT,NoiDung,Trangthai) values(N'" +

item.SubItems[2].Text + "',N' Ban co the thuc hien bai kiem tra ngay bay gio khong? Neu co the ban hay soan tin theo cu phap TH YES','0')";

SqlCommand command1 = new SqlCommand(sql1, kn.con);

command1.ExecuteNonQuery(); }

kn.dongknSMS(); }

private void btngui_Click(object sender, EventArgs e) {

kn.ketnoiSMS();

foreach (ListViewItem item in listView1.Items) {

string sql = "Insert into KhaoSat Values('" + cmbXmaMH.Text.ToString() + "', '" + item.Text + "', '" + item.SubItems[1].Text + "', '" + item.SubItems[2].Text + "', '" + cmbXMaCH.Text.ToString() + "', '" +

noidung.ToString() + "'";

SqlCommand command = new SqlCommand(sql, kn.con);

command.ExecuteNonQuery(); }

kn.dongknSMS();

frmxacnhangui frm = new frmxacnhangui(); frm.ShowDialog();

} } }

Một phần của tài liệu Xây dựng phần mềm tương tác giữa người dạy với người học qua tin nhắn SMS (Trang 57 - 74)