歡迎進入MyKTV前後臺點歌系統展示

来源:http://www.cnblogs.com/bdpsc/archive/2016/01/31/5172908.html
-Advertisement-
Play Games

一個項目,一分收穫;一個項目,一些資源。Ktv項目也是一樣的,所以我想分享我的收穫,讓你們獲得你需要的資源。 一. 那MyKTV點歌系統具體的功能有哪些呢?我們就來看看吧! 1.MyKTV前臺功能: 01.歌星點歌 、拼音點歌 、數字點歌 、類型選擇 、金榜排行 02.切歌 、點歌 、重唱和退出 2


     一個項目,一分收穫;一個項目,一些資源。Ktv項目也是一樣的,所以我想分享我的收穫,讓你們獲得你需要的資源。

     一. 那MyKTV點歌系統具體的功能有哪些呢?我們就來看看吧!

    1.MyKTV前臺功能:

     01.歌星點歌 、拼音點歌 、數字點歌 、類型選擇 、金榜排行

     02.切歌 、點歌 、重唱和退出

 

     2.MyKTV後臺功能:

      01.歌手管理 、歌曲管理 、設置資源路徑

      02.新增歌手、歌曲 ,查詢歌手、歌曲信息,設置歌曲路徑和退出

 

      二. 功能已經概括的差不多了,就讓我們一起來看看MyKTV的項目吧

        1.首先就是展現KTV的主界面,讓我們先瞭解一下那些功能

         

         01.實現各個共功能的主代碼:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace MyKTVClient
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }
        //當前播放的歌曲
        private Song song;
        // 退出系統
        SqlConnection con = new SqlConnection(DBHelper.str);
        private void tsbtnExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        private void MainForm_Load(object sender, EventArgs e)
        {
            DBHelper.frm = this;
            // 載入時,運行播放窗體               
            // 啟動計時器
            this.tim.Start();

            // 歌手照片路徑   
            string sql = "select resource_path from resource_path where resource_id=1";
            SqlCommand cmd = new SqlCommand(sql, con);
            // 歌手照片路徑
            con.Open();
            KTVUtil.singerPhotoPath = cmd.ExecuteScalar().ToString();
            // 歌曲路徑
            sql = "select resource_path from resource_path where resource_id=2";
            cmd.CommandText = sql;
            KTVUtil.songPath = cmd.ExecuteScalar().ToString();
            con.Close();
        }
           //已點歌曲窗體
        private void tsbtnOrdered_Click(object sender, EventArgs e)
        {
            frmOrderedSongList frm = new frmOrderedSongList();
            frm.Show();
        }

        // 重新播放當前歌曲
        private void tsbtnAgain_Click(object sender, EventArgs e)
        {
            PlayList.PlayAgain();
            PlaySong();
        }

        // 切歌
        private void tsbtnCut_Click(object sender, EventArgs e)
        {
            if (txtnextsong.Text=="")
            {
                MessageBox.Show("暫無已點歌曲");
            }
            else
            {
                PlayList.CutSong(-1);
            }
            
        }
        // 服務
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("當前無服務!");
        }
        //播放歌曲
        private void PlaySong()
        {
            this.song = PlayList.GetPlayingSong(); // 獲取當前要播放的歌曲
            if (song != null)
            {
                this.song.SetSongPlayed();             // 將當前歌曲播放狀態設為已播放
                this.Winplaymedia.URL = KTVUtil.songPath + "\\" + this.song.SongURL;  // 得到當前播放歌曲的路徑
                string urlls = KTVUtil.singerPhotoPath +"\\"+ this.song.Singerurl;//歌手圖片
                lblsongname.Text = this.song.Singername;//歌手名字
                try
                {
                    this.pblist.Image = Image.FromFile(urlls);
                }
                catch (Exception)
                {

                    MessageBox.Show("暫無歌手圖片"); ;
                }
               
            }
        }
        // 定時掃描歌曲列表,顯示當前播放歌曲的名稱
        private void timer1_Tick(object sender, EventArgs e)
        {
            // 在文本框中顯示當前播放的歌曲名字
            this.txtplay.Text = PlayList.PlayingSongName();
            this.txtnextsong.Text = PlayList.NextSongName();
            if (this.song == null)
            {
                this.PlaySong();
            }
            if (this.Winplaymedia.playState == WMPLib.WMPPlayState.wmppsStopped)
            {
                this.song = null; // 將歌曲設為空
                PlayList.MoveOn();
            }
            // 切歌
            if (this.song != null && this.song.PlayState == SongPlayState.cut)
            {
                this.Winplaymedia.URL = "";
                this.song = null;
            }       
        }
        // 按歌手點歌
        private void picSinger_Click(object sender, EventArgs e)
        {
            frmOrderBySinger frm = new frmOrderBySinger();
            frm.Show();
        }

        // 拼音點歌
        private void picSongName_Click(object sender, EventArgs e)
        {
            frmOrderBySongName frm = new frmOrderBySongName();
            frm.Show();
        }

        // 分類點歌
        private void picSongType_Click(object sender, EventArgs e)
        {
            frmOrderBySongType frm = new frmOrderBySongType();
            frm.Show();
        }

        // 排行榜點歌
        private void picSongList_Click(object sender, EventArgs e)
        {
            frmSongList frm = new frmSongList();
            string sql = "select song_id,song_name,singer_info.singer_name,song_url,singer_info.singer_photo_url from song_info inner join singer_info on song_info.singer_id=singer_info.singer_id order by song_play_count desc";
            frm.Sql = sql;
            frm.Onform = FanhuiForm.Main;
            frm.Show();
        }

        // 字數點歌
        private void picWordCount_Click(object sender, EventArgs e)
        {
            frmOrderByWordCount frm = new frmOrderByWordCount();
            frm.Show();
        }

        private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            //關閉應用
            Application.Exit();
        }

        //點擊窗體移動
        private Point mouseOffset;        //記錄滑鼠指針的坐標        
        private bool isMouseDown = false; //記錄滑鼠按鍵是否按下 
        private void pnlTop_MouseDown(object sender, MouseEventArgs e)
        {
            int xOffset;
            int yOffset;
            if (e.Button == MouseButtons.Left)
            {
                xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
                yOffset = -e.Y - SystemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height;
                mouseOffset = new Point(xOffset, yOffset);
                isMouseDown = true;
            }
        }

        private void pnlTop_MouseMove(object sender, MouseEventArgs e)
        {
            if (isMouseDown)
            {
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouseOffset.X + 5, mouseOffset.Y + 30);
                Location = mousePos;
            }
        }

        private void pnlTop_MouseUp(object sender, MouseEventArgs e)
        {

            // 修改滑鼠狀態isMouseDown的值      
            // 確保只有滑鼠左鍵按下並移動時,才移動窗體       
            if (e.Button == MouseButtons.Left)
            {
                isMouseDown = false;
            }
        }

        private void pnlTop_Paint(object sender, PaintEventArgs e)
        {

        }
      
    }
}

     

       2.歌星點歌(三個listview的集成窗體)

      01.歌手類別

   

     02.歌手地區

    

 

     03.歌手姓名

   

  

    04.代碼

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient; // ADO.NET

namespace MyKTVClient
{
    public partial class frmOrderBySinger : Form
    {
        // 當前選擇的歌手性別
        private string singergender = "";
        // 當前選擇的歌手類型的編號
        private int singerTypeId = 0;
        
        public frmOrderBySinger()
        {
            InitializeComponent();
        }


        // 關閉當前窗體,顯示主界面
        private void tsbtnHome_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        // 重新播放當前歌曲
        private void tsbtnAgain_Click(object sender, EventArgs e)
        {
            PlayList.PlayAgain();
        }

        // 切歌
        private void tsbtnCut_Click(object sender, EventArgs e)
        {           
                PlayList.CutSong(-1);
           
        }

        // 打開已點歌曲窗體
        private void tsbtnOrdered_Click(object sender, EventArgs e)
        {
            frmOrderedSongList frm= new frmOrderedSongList();
            frm.Show();
        }

        // 呼叫服務
        private void tsbtnService_Click(object sender, EventArgs e)
        {
            MessageBox.Show("服務!");
        }

        // 處理返回按鈕的事件
        private void tsbtnExit_Click(object sender, EventArgs e)
        {
            if (this.pnlSingerList.Visible)
            {

                this.pnlSingerType.Visible = true;
                this.pnlSingerList.Visible = false;
            }
            else if (this.pnlSingerType.Visible)
            {
                this.pnlSingerSex.Visible = true;
                this.pnlSingerType.Visible = false;
            }
            else if (this.pnlSingerSex.Visible)
            {
                this.Close();
            }
        }
        //點擊歌手的信息窗體時,彈出歌曲列表
        private void lvlistthree_Click(object sender, EventArgs e)
        {

            // 讀取資料庫,讀出該歌手的所有歌曲
            SqlConnection con = new SqlConnection(DBHelper.str);
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("select song_id,song_name,singer_info.singer_name,song_url,singer_info.singer_photo_url from song_info,singer_info where song_info.singer_id=singer_info.singer_id and singer_name='{0}' and song_info.singer_id={1}",
                lvlistthree.SelectedItems[0].Text, Convert.ToInt32(lvlistthree.SelectedItems[0].Tag));

            frmSongList frm = new frmSongList();
            frm.Sql = sb.ToString();


            frm.Onform = FanhuiForm.Singergender; // 指定返回的窗體是按歌手點歌
            frm.Show();
        }
        //當點擊歌手類別的窗體時,彈出某歌手的信息的船體
        private void lvlisttwo_Click(object sender, EventArgs e)
        {
            // 隱藏歌手類別,顯示歌手列表
            pnlSingerType.Visible = false;
            pnlSingerList.Location = pnlSingerSex.Location;
            pnlSingerList.Dock = DockStyle.Fill;
            pnlSingerList.Visible = true;
            this.singerTypeId = Convert.ToInt32(lvlisttwo.SelectedItems[0].Tag); // 保存選中的類別編號

            // 讀取資料庫,讀出歌手信息
            SqlConnection con = new SqlConnection(DBHelper.str);
            StringBuilder sql = new StringBuilder();
            sql.AppendFormat("select singer_id,singer_name,singer_photo_url from singer_info where singertype_id={0} and singer_gender='{1}'",
                this.singerTypeId, this.singergender);

            try
            {
                SqlCommand cmd = new SqlCommand(sql.ToString(), con);
                con.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                int imageIndex = 0; // 代表歌手頭像的索引
                imglistthree.Images.Clear();

                // 迴圈讀出歌手信息添加到窗體中顯示
                lvlistthree.Items.Clear();
                while (dr.Read())
                {
                    // 將歌手頭像放在ImageList控制項中
                    string photoURL = KTVUtil.singerPhotoPath + "\\" + Convert.ToString(dr["singer_photo_url"]);
                    imglistthree.Images.Add(Image.FromFile(photoURL));

                    // 將歌手添加到ListView中
                    ListViewItem item = new ListViewItem();
                    item.Text = Convert.ToString(dr["singer_name"]);
                    item.Tag = Convert.ToString(dr["singer_id"]);
                    item.ImageIndex = imageIndex;
                    lvlistthree.Items.Add(item);

                    imageIndex++;
                }
                dr.Close();
            }
            catch (Exception)
            {

                MessageBox.Show("錯誤!");
            }
            finally
            {
                con.Close();
            } 
        }
        //當點擊歌手的性別窗體時,彈出歌手的類別窗體的第一個listview
        private void lvlistone_Click(object sender, EventArgs e)
        {

            if (lvlistone.SelectedItems[0] != null)
            {
                // 隱藏歌手性別,顯示歌手類別
                pnlSingerSex.Visible = false;
                pnlSingerType.Location = pnlSingerSex.Location;
                pnlSingerType.Dock = DockStyle.Fill;
                pnlSingerType.Visible = true;
                // 記錄選擇的性別
                this.singergender = Convert.ToString(lvlistone.SelectedItems[0].Tag); 
            }

            // 讀取歌手類別
            SqlConnection con = new SqlConnection(DBHelper.str);
            string sql = "select * from singer_type";
            try
            {
                // 查詢資料庫
                SqlCommand command = new SqlCommand(sql, con);

                con.Open();
                SqlDataReader dr = command.ExecuteReader();

                // 迴圈將類別讀取出來添加到ListView中
                lvlisttwo.Items.Clear();
                int i = 0;
                while (dr.Read())
                {
                    ListViewItem item = new ListViewItem();
                    item.Text = Convert.ToString(dr["singertype_name"]);
                    item.Tag = Convert.ToInt32(dr["singertype_id"]);
                    item.ImageIndex = i;
                    lvlisttwo.Items.Add(item);
                    i++;
                }
                dr.Close();
            }
            catch (Exception)
            {

                MessageBox.Show("錯誤!");

            }
            finally
            {
                con.Close();
            }
        }
        private Point mouseOffset;        //記錄滑鼠指針的坐標        
        private bool isMouseDown = false; //記錄滑鼠按鍵是否按下  
        private void pnlon_MouseDown(object sender, MouseEventArgs e)
        {
            int xOffset;
            int yOffset;
            if (e.Button == MouseButtons.Left)
            {
                xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
                yOffset = -e.Y - SystemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height;
                mouseOffset = new Point(xOffset, yOffset);
                isMouseDown = true;
            }
        }

        private void pnlon_MouseMove(object sender, MouseEventArgs e)
        {
            if (isMouseDown)
            {
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouseOffset.X + 5, mouseOffset.Y + 30);
                Location = mousePos;
            }
        }

        private void pnlon_MouseUp(object sender, MouseEventArgs e)
        {
            // 修改滑鼠狀態isMouseDown的值      
            // 確保只有滑鼠左鍵按下並移動時,才移動窗體       
            if (e.Button == MouseButtons.Left)
            {
                isMouseDown = false;
            }
        }

      
    }
}

 

    05.歌曲列表

  

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace MyKTVClient
{


    // 定義枚舉,代表當前應該返回到的上一個窗體
    public enum FanhuiForm
    {
        Main, Singergender, SongType, WordCount, SongName, SongList
    }

    public partial class frmSongList : Form
    {
        private string sql = "";
        private FanhuiForm onform;  // 上一個窗體


        // 該窗體應該返回到的上一個窗體

        public FanhuiForm Onform
        {
            get { return onform; }
            set { onform = value; }
        }


        // 歌曲列表查詢語句

        public string Sql
        {
            get { return sql; }
            set { sql = value; }
        }


        public frmSongList()
        {
            InitializeComponent();
        }

        // 返回
        SqlConnection con = new SqlConnection(DBHelper.str);
        private void tsbtnExit_Click(object sender, EventArgs e)
        {
            switch (this.Onform)
            {
                // 返回到歌手點歌
                case FanhuiForm.Singergender:
                    frmOrderBySinger frm = new frmOrderBySinger();
                    frm.Show();
                    break;
                // 返回到歌曲類型點歌
                case FanhuiForm.SongType:
                    frmOrderBySongType frm1 = new frmOrderBySongType();
                    frm1.Show();
                    break;
                // 返回到字數點歌
                case FanhuiForm.WordCount:
                    frmOrderByWordCount frm2 = new frmOrderByWordCount();
                    frm2.Show();
                    break;
            }
            this.Close();
        }

        // 窗體載入時查詢歌曲列表
        private void SongListForm_Load(object sender, EventArgs e)
        {

            DataSet dataSet = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(this.Sql, con);
            da.Fill(dataSet, "info");
            dgvlist.DataSource = dataSet.Tables["info"];
        }        
   
  
      
       
     
     
        private void tsbtnService_Click(object sender, EventArgs e)
        {
            MessageBox.Show("服務中");
        }
        // 點播一首歌曲
        private void dgvlist_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            // 創建一個歌曲對象,並將選中的歌曲名和路徑賦給該對象
            Song song = new Song();
            song.SongName = dgvlist.SelectedRows[0].Cells["songName"].Value.ToString();
            song.SongURL = dgvlist.SelectedRows[0].Cells["songURL"].Value.ToString();
            song.Singerurl = dgvlist.SelectedRows[0].Cells["singerUrl"].Value.ToString();
            song.Singername = dgvlist.SelectedRows[0].Cells["singer"].Value.ToString();
            PlayList.AddSong(song);

            // 更新資料庫,將選中的歌曲點播次數加1
            int sId = Convert.ToInt32(dgvlist.SelectedRows[0].Cells["songId"].Value);
      //string sql = "update song_info set song_play_count=song_play_count+1 where song_id="+sId+"";
            string sql = string.Format("update song_info set song_play_count=song_play_count+1 where song_id={0}", sId);
            try
            {
                SqlCommand cmd = new SqlCommand(sql, con);
                con.Open();
                cmd.ExecuteNonQuery();
            }
            catch (Exception)
            {

                MessageBox.Show("出錯!");
            }
            finally
            {
                con.Close();
            }
        }
        //返回
        private void tsbtnExit_Click_1(object sender, EventArgs e)
        {
            this.Close();
        }
        // 切歌
        private void tsbtnCut_Click(object sender, EventArgs e)
        {
            PlayList.CutSong(-1);
        }
        // 打開已點歌曲窗體
        private void tsbtnOrdered_Click(object sender, EventArgs e)
        {
            frmOrderedSongList frm = new frmOrderedSongList();
            frm.Show();
        }
        // 重新播放當前歌曲
        private void tsbtnAgain_Click(object sender, EventArgs e)
        {
            PlayList.PlayAgain();
        }
        //主界面
        private void tsbtnHome_Click(object sender, EventArgs e)
        {
            this.Close();
        }
         
        private void frmSongList_MouseDown(object sender, MouseEventArgs e)
        {
            
        }

        private void frmSongList_MouseMove(object sender, MouseEventArgs e)
        {
            
        }

        private void frmSongList_MouseUp(object sender, MouseEventArgs e)
        {
            
        }

        private void pnlTop_MouseUp(object sender, MouseEventArgs e)
        {
            // 修改滑鼠狀態isMouseDown的值      
            // 確保只有滑鼠左鍵按下並移動時,才移動窗體       
            if (e.Button == MouseButtons.Left)
            {
                isMouseDown = false;
            }
        }
        private Point mouseOffset;        //記錄滑鼠指針的坐標        
        private bool isMouseDown = false; //記錄滑鼠按鍵是否按下 
        private void pnlTop_MouseDown(object sender, MouseEventArgs e)
        {
            int xOffset;
            int yOffset;
            if (e.Button == MouseButtons.Left)
            {
                xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
                yOffset = -e.Y - SystemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height;
                mouseOffset = new Point(xOffset, yOffset);
                isMouseDown = true;
            }
        }

        private void pnlTop_MouseMove(object sender, MouseEventArgs e)
        {
            if (isMouseDown)
            {
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouseOffset.X + 5, mouseOffset.Y + 30);
                Location = mousePos;
            }
        }

       

    }
}

 

  01. 播放界面

 

 

   02. 已點歌曲

 

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace MyKTVClient
{
    public partial class frmOrderedSongList : Form
    {
        private FanhuiForm onform;  // 上一個窗體

        /// <summary>
        /// 該窗體應該返回到的上一個窗體
        /// </summary>
        public string name;
        public FanhuiForm Onform
        {
            get { return onform; }
            set { onform = value; }
        }

        public frmOrderedSongList()
        {
            InitializeComponent();
        }

        private void OrderedSongListForm_Load(object sender, EventArgs e)
        {
            this.newSonglist();
            tim.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            //this.newSonglist();
        }


        //刷新歌曲列表
        private void newSonglist()
        {
            // 清空原列表
            lvlist.Items.Clear();
            int index = 0;
            while (PlayList.SongList[index] != null)
            {
                ListViewItem item = new ListViewItem();
                //獲取歌曲的名稱
                item.Text = PlayList.SongList[index].SongName;
                item.Tag = index;
                //歌曲的播放狀態
                string playState = PlayList.SongList[index].PlayState == SongPlayState.unplayed ? "未播放" : "已播放";
                item.SubItems.Add(playState);
                lvlist.Items.Add(item);
                index++;
            }
        }

        // 返回到上一個窗體
        private void tsbtnExit_Click(object sender, EventArgs e)
        {
            switch (this.Onform)
            {
                case FanhuiForm.Singergender:
                    frmOrderBySinger frm = new frmOrderBySinger();
                    frm.Show();
                    break;
                case FanhuiForm.SongList:
                    frmSongList frm1 = new frmSongList();
                    frm1.Show();
                    break;
                case FanhuiForm.SongName:
                    frmOrderBySongName frm2 = new frmOrderBySongName();
                    frm2.Show();
                    break;
                case FanhuiForm.SongType:
                    frmOrderBySongType frm3 = new frmOrderBySongType();
                    frm3.Show();
                    break;
                case FanhuiForm.WordCount:
                    frmOrderByWordCount frm4 = new frmOrderByWordCount();
                    frm4.Show();
                    break;
            }

            this.Close();
        } 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 為App Store開發程式,開發者必須遵守 Program License Agreement (PLA)、人機交互指南(HIG)以及開發者和蘋果簽訂的任何協議和合同。 以下規則和示例旨在幫助開發者的程式能獲得。 編號 中文內容 1.1 為App Store開發程式,開發者必須遵守 Program
  • 最近在看Unity shader開發實戰詳解,剛開始看陰影部分,稍微有了點思路.在這裡寫點筆記,算是小結吧. .陰影實現方法 一種是通過模擬光照的原理,用向量的方法 找到被光線照射的點 映射到平面的位置。這個需要高中的立體幾何知識就能解決,通過向量的計算找到一條線相交於一個平面的點。將點的顏色改變
  • 1、關於頭文件 #include <stdio.h> #import <Foundation/Foundation.h> 區別:#import指令導入更快更有效率。#include指令告訴編譯器做呆板的複製粘貼,將包含的內容粘貼到目標文件中來。而#import則會先檢查之前是否已經導入過這個文件或是
  • 1、為何引入input system? 以前我們寫一些輸入設備(鍵盤、滑鼠等)的驅動都是採用字元設備、混雜設備處理的。問題由此而來,Linux開源社區的大神們看到了這大量輸入設備如此分散不堪,有木有可以實現一種機制,可以對分散的、不同類別的輸入設備進行統一的驅動,所以才出現了輸入子系統。 輸入子系統
  • 轉自:http://www.infoq.com/cn/news/2015/12/linux-performance 如果你的Linux伺服器突然負載暴增,告警簡訊快發爆你的手機,如何在最短時間內找出Linux性能問題所在?來看Netflix性能工程團隊的這篇博文,看它們通過十條命令在一分鐘內對機器性
  • 目的:把本地上傳的圖片放置到跟目錄下的Images/Upload文件夾下。 修改步驟: 1、ueditor.config.js文件中的, imagePath: URL + "net/" 修改為: imagePath: "/" 2、net文件夾下的Config.cs文件中, public static
  • class ServicePinger { private static readonly ILog log = LogManager.GetLogger(typeof(ServicePinger)); public ServicePinger(string siteName, string sit
  • 前臺代碼: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 <div> <asp:GridView ID="GridView1" runa
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...