最近忙着做POS項目,心血來來潮寫了點小項目。
更具要求是隨機顯示數據並且產生的數據是可以控制的。前台交互顯示能夠倒敘,切每次只顯示一條,頁面不能超過20條超過的部分做刪除。
我先展示一下前台的代碼,比較簡單適合初學者。
因為時間問題,這里采用的是Dbfirst

因為不能讓加載頁面的時候出現空數據所以在加載的時候會初始化數據到頁面上

然后是ajax調用的json數據

頁面的ajax

前台大概就是這樣
至於后台用的是winform
我直接貼出初始化數據庫的代碼
using PCDD.Service;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PCDD
{
static class Program
{
/// <summary>
/// 應用程序的主入口點。
/// </summary>
[STAThread]
static void Main()
{
string sql = string.Empty;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
sql = "create database if not exists pcdd";
MySqlHelper.exc(sql);
string path = AppDomain.CurrentDomain.BaseDirectory + @"Script\";
sql = "select count(1) from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='pcdd'";
var obj = MySqlHelper.ExNone(sql);
#region 判斷數據是否存在 不存在初始化
if (obj.ToString().Equals("0"))
{
var i = MySqlHelper.InitData(path);
Login lo = new Login();
lo.ShowDialog();
if (lo.DialogResult == DialogResult.OK)
{
Application.Run(new CRM());
}
else
{
return;
}
}
else
{
Login lo = new Login();
lo.ShowDialog();
if (lo.DialogResult == DialogResult.OK)
{
Application.Run(new CRM());
}
else
{
return;
}
}
#endregion
}
}
}
MySqlhelper類
using System; using System.Collections.Generic; using System.Linq; using System.Text; using MySql.Data.MySqlClient; using System.Configuration; using System.Data; using System.IO; namespace PCDD.Service { public class MySqlHelper { #region field private static readonly string constr = ConfigurationManager.ConnectionStrings["mysql"].ToString(); private static readonly string cstr = ConfigurationManager.ConnectionStrings["mysql1"].ToString(); private static MySqlConnection con = new MySqlConnection(constr); private static MySqlCommand cmd = new MySqlCommand(); #endregion #region PCDD /// <summary> /// 查詢Datatable /// </summary> /// <param name="sql"></param> /// <returns></returns> public static DataTable Query(string sql) { Open(); State(sql); DataTable dt = new DataTable(); MySqlDataAdapter da = new MySqlDataAdapter(cmd); da.Fill(dt); Close(); return dt; } /// <summary> /// 返回None /// </summary> /// <param name="sql"></param> /// <returns></returns> public static object ExNone(string sql) { Open(); State(sql); var x = cmd.ExecuteScalar(); Close(); return x; } /// <summary> /// 執行刪除 /// </summary> /// <param name="sql"></param> /// <returns></returns> public static int ExDelete(string sql) { Open(); State(sql); var x = cmd.ExecuteNonQuery(); Close(); return x; } public static void State(string sql) { cmd.Connection = con; cmd.CommandText = sql; } public static void Open() { con.Open(); } public static void Close() { con.Close(); } /// <summary> /// 初始化數據 /// </summary> /// <param name="path"></param> /// <returns></returns> public static int InitData(string path) { try { int i; DirectoryInfo di = new DirectoryInfo(path); foreach (FileInfo fo in di.GetFiles()) { if (fo.Name.ToUpper().EndsWith("SQL")) { var st = fo.OpenText(); var sql = st.ReadToEnd(); st.Close(); Open(); State(sql); cmd.ExecuteNonQuery(); var filename = (fo.Name).Split('.')[0]; State(filename); i = cmd.ExecuteNonQuery(); Close(); return i; } } return -1; } catch (Exception) { throw; } } #endregion #region 數據庫不存在 public static int exc(string sql) { using (MySqlConnection mcon = new MySqlConnection(cstr)) { mcon.Open(); MySqlCommand com = new MySqlCommand(sql,mcon); int i = com.ExecuteNonQuery(); mcon.Close(); return i; } } #endregion } }
后台管理的代碼如下:
using PCDD.Service;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PCDD
{
public partial class CRM : Form
{
private string sql = string.Empty;
private int no = 0;
#region 初始化
public CRM()
{
InitializeComponent();
}
private void CRM_Load(object sender, EventArgs e)
{
l13.Text = "當前用戶:" + pojo.UserName;
}
#endregion
#region 自動模式
/// <summary>
/// 定時器
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tm_Tick(object sender, EventArgs e)
{
sql = "INSERT INTO pc_module(Non,Num1,Num2,Num3,Snum,SmallSingle,BigSingle,SmallBoth,BigBoth,ModifyTime)VALUES('{0}',{1},{2},{3},{4},'{5}','{6}','{7}','{8}','{9}') ";
var x = GenerateRandom(10, 4);
t1.Text = x[1].ToString();
t2.Text = x[2].ToString();
t3.Text = x[3].ToString();
t4.Text = (x[1] + x[2] + x[3]).ToString();
var sum = x[1] + x[2] + x[3];
if (sum % 2 == 0)
{
if (sum >= 14)
{
t5.Text = string.Empty;
t6.Text = string.Empty;
t7.Text = string.Empty;
t8.Text = string.Empty;
t8.Text = "大雙";
}
else
{
t5.Text = string.Empty;
t6.Text = string.Empty;
t7.Text = string.Empty;
t8.Text = string.Empty;
t7.Text = "小雙";
}
}
else
{
if (sum >= 15)
{
t5.Text = string.Empty;
t6.Text = string.Empty;
t7.Text = string.Empty;
t8.Text = string.Empty;
t6.Text = "大單";
}
else
{
t5.Text = string.Empty;
t6.Text = string.Empty;
t7.Text = string.Empty;
t8.Text = string.Empty;
t5.Text = "小單";
}
}
if (no == 0)
{
no = 819000;
no++;
}
else
{
no++;
}
sql = string.Format(sql, no, x[1].ToString(), x[2].ToString(), x[3].ToString(), sum.ToString(), t5.Text.ToString(), t6.Text.ToString(), t7.Text.ToString(), t8.Text.ToString(), Convert.ToDateTime(DateTime.Now));
MySqlHelper.ExNone(sql);
}
/// <summary>
/// 產生隨機數
/// </summary>
/// <param name="iMax">最大范圍</param>
/// <param name="iNum">產生的個數</param>
/// <returns></returns>
List<int> GenerateRandom(int iMax, int iNum)
{
long lTick = DateTime.Now.Ticks;
List<int> lstRet = new List<int>();
for (int i = 0; i < iNum; i++)
{
Random ran = new Random((int)lTick * i);
int iTmp = ran.Next(iMax);
lstRet.Add(iTmp);
lTick += (new Random((int)lTick).Next(10));
}
return lstRet;
}
/// <summary>
/// 設置時間間隔
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void b1_Click(object sender, EventArgs e)
{
var bl = IsFloat(t9.Text);
if (t9.Text == null && t9.Text == "")
{
//t9.Text = "1000";//1秒
t9.Text = "240000";//4分鍾
tm.Interval = int.Parse(t9.Text);
if (tm.Enabled == false)
{
tm.Enabled = true;
l12.Text = "自動模式成功開啟";
}
}
else if (bl == false)
{
t9.Text = string.Empty;
}
else if (Convert.ToDouble(t9.Text) != 0)
{
var s = Convert.ToDouble(t9.Text) * 1000;
var ins = (int)s;
//測試專用代碼
#region 測試用
//tm.Interval = ins;
//if (tm.Enabled == false)
//{
// tm.Enabled = true;
// l12.Text = "自動模式成功開啟";
//}
//else
//{
// l12.Text = "自動模式成功開啟";
//}
#endregion
#region 發布版本代碼
if (ins >= 240000)
{
tm.Interval = ins;
if (tm.Enabled == false)
{
tm.Enabled = true;
l12.Text = "自動模式成功開啟";
}
else {
l12.Text = "自動模式成功開啟";
}
}
else {
tm.Interval = 240000;
if (tm.Enabled == false)
{
tm.Enabled = true;
l12.Text = "對不起!你輸入的值小於240(單位:秒)默認時間間隔為4分鍾";
}
else {
l12.Text = "對不起!你輸入的值小於240(單位:秒)默認時間間隔為4分鍾";
}
}
#endregion
}
else
{
tm.Enabled = false;
l12.Text = "自動模式成功關閉";
}
MessageBox.Show("設置成功!");
Thread.Sleep(3000);
l12.Text = "";
}
#endregion
#region 手動模式
/// <summary>
/// 手動模式
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void b2_Click(object sender, EventArgs e)
{
sql = "UPDATE pc_module set Num1 ={0},Num2={1},Num3 ={2},Snum ={3},SmallSingle='{4}',BigSingle='{5}',SmallBoth='{6}',BigBoth='{7}' WHERE 1 ORDER BY ModifyTime DESC LIMIT 1";
tm.Enabled = false;
var s0 = t10.Text;
var s1 = t11.Text;
var s2 = t12.Text;
if ((IsFloat(s0) == false) || (IsFloat(s1) == false) || (IsFloat(s2) == false))
{
ShowMsg();
}
else
{
if ((Convert.ToDouble(s0) >= 0 && Convert.ToDouble(s0) <= 9) && (Convert.ToDouble(s1) >= 0 && Convert.ToDouble(s1) <= 9) && (Convert.ToDouble(s2) >= 0 && Convert.ToDouble(s2) <= 9))
{
var sum = Convert.ToDouble(s0) + Convert.ToDouble(s1) + Convert.ToDouble(s2);
l24.Text = sum.ToString();
l25.Text = string.Empty;
l26.Text = string.Empty;
l27.Text = string.Empty;
l28.Text = string.Empty;
if (sum % 2 == 0)
{
if (sum >= 14)
{
l25.Text = string.Empty;
l26.Text = string.Empty;
l27.Text = string.Empty;
l28.Text = string.Empty;
l28.Text = "大雙";
}
else
{
l25.Text = string.Empty;
l26.Text = string.Empty;
l27.Text = string.Empty;
l28.Text = string.Empty;
l27.Text = "小雙";
}
}
else
{
if (sum >= 15)
{
l25.Text = string.Empty;
l26.Text = string.Empty;
l27.Text = string.Empty;
l28.Text = string.Empty;
l26.Text = "大單";
}
else
{
l25.Text = string.Empty;
l26.Text = string.Empty;
l27.Text = string.Empty;
l28.Text = string.Empty;
l25.Text = "小單";
}
}
sql = string.Format(sql, s0.ToString(), s1.ToString(), s2.ToString(), sum.ToString(), l25.Text.ToString(), l26.Text.ToString(), l27.Text.ToString(), l28.Text.ToString());
MySqlHelper.ExNone(sql);
}
else
{
MessageBox.Show("請輸入0-9之間的數字");
}
}
}
#endregion
#region 模式切換
//自動
private void b3_Click(object sender, EventArgs e)
{
tm.Enabled = true;
tm.Interval = 240000;
//tm.Interval = 1000;
MessageBox.Show("隨機模式開啟");
}
//手動
private void b4_Click(object sender, EventArgs e)
{
tm.Enabled = false;
//清空手動數據
l24.Text = string.Empty;
l25.Text = string.Empty;
l26.Text = string.Empty;
l27.Text = string.Empty;
l28.Text = string.Empty;
//清空自動數據
t1.Text = string.Empty;
t2.Text = string.Empty;
t3.Text = string.Empty;
t4.Text = string.Empty;
t5.Text = string.Empty;
t6.Text = string.Empty;
t7.Text = string.Empty;
t8.Text = string.Empty;
t9.Text = string.Empty;
t10.Text = "0";
t11.Text = "0";
t12.Text = "0";
l24.Text = "0";
l27.Text = "小雙";
MessageBox.Show("手動模式開啟");
}
#endregion
#region 基礎方法
/// <summary>
/// 判斷是否輸入為數字
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static bool IsFloat(string str)
{
string regextext = @"^(-?\d+)(\.\d+)?$";
Regex regex = new Regex(regextext, RegexOptions.None);
return regex.IsMatch(str.Trim());
}
public void ShowMsg()
{
MessageBox.Show("請檢查輸入的三個隨機數是否非法!");
}
#endregion
#region 超級方法
private void b5_Click(object sender, EventArgs e)
{
sql = "delete from pc_module";
var obj = MySqlHelper.ExDelete(sql);
if (obj != 0)
{
MessageBox.Show("已成功清空所有數據!");
}
}
private void b6_Click(object sender, EventArgs e)
{
sql = "delete from Pc_Module where ModifyTime BETWEEN '{0}' AND '{1}'";
var time1 = Convert.ToDateTime(DateTime.Now.AddHours(-15));
var time2 = Convert.ToDateTime(DateTime.Now);
sql = string.Format(sql, time1, time2);
var res = MySqlHelper.ExDelete(sql);
if (res != 0)
{
MessageBox.Show("已經刪除當天數據!");
}
}
private void Non_Click(object sender, EventArgs e)
{
if (IsFloat(Non_text.Text))
{
no = Convert.ToInt32(Non_text.Text);
}
else
{
no = 819000;//默認值
}
}
#endregion
}
}
以上僅供學習使用。目前博主正在研究DDD,歡迎大神做DDD的技術分享。
