網站首頁 編程語言 正文
功能需求
1,利用隨機數模擬產生每次考試成績
2,將每次考試成績存入到數據庫
3,將每次考試成績劃分優、良、中、差、不及格五類,并作為查詢條件,查詢符合每種水平的成績
技術知識點
1.random類的使用
2.數據庫的鏈接、添加數據、查詢數據、讀取數據
3,combox控件的使用
4,DataGridView控件的使用
準備工作
創建數據庫,本文案例使用Sql Server2014,數據庫表如下:
實現步驟
1.模擬產生考試成績,點擊考試按鈕,產生六科考試成績
Random rd = new Random();//實例化random類
int[] scores = new int[6];
for(int i = 0;i<scores.Length;i++)
{
scores[i] = rd.Next(0, 100);
SumScore += scores[i];//總成績
}
AvgScore = SumScore / scores.Length;//平均分
ScoreLevel = GetScoreLevel(SumScore);
tbx01.Text = scores[0].ToString();
tbx02.Text = scores[1].ToString();
tbx03.Text = scores[2].ToString();
tbx04.Text = scores[3].ToString();
tbx05.Text = scores[4].ToString();
tbx06.Text = scores[5].ToString();
2.將每次考試成績存儲到數據庫中,通過按鈕觸發。
//創建數據庫操作類,DBOpera,方便其他功能在進行數據庫操作時,減少重復工作。
//數據庫鏈接字符串,使用private防止為外部訪問修改
private static string connstring = @"Data source = RANDOM\SQLEXPRESS; Initial Catalog = DB1;User ID=sa; pwd = 123456";
//數據庫鏈接對象
public static SqlConnection conn = new SqlConnection(connstring);
//定義執行sql查詢語句方法
public int ExecSQL(string sql)
{
//執行查詢語句后并不需要返回所有的查詢結果,而僅需要返回一個值,
//例如查詢表中的記錄行數
//實例化sqlcommand類。
SqlCommand cmd = new SqlCommand(sql, conn);
if (conn.State == ConnectionState.Closed)//如果當前數據庫鏈接處于關閉狀態
conn.Open();
int num = Convert.ToInt32(cmd.ExecuteScalar());//執行查詢
conn.Close();
return num;
}
public int ExecSQLResult(string sql)
{
/*執行非查詢 SQL 語句時并不需要返回表中的數據
增加、修改、刪除的操作
該方法的返回值是一個整數,表示 SqlCommand 類在執行 SQL 語句后,
對表中數據影響的行數。返回值為-1時,代表 SQL 語句執行失敗,返回值為 0 時,代表 SQL 語句對當前數據表中的數據沒有影響。*/
//實例化sqlcommand對象
SqlCommand cmd = new SqlCommand(sql, conn);
if (conn.State == ConnectionState.Closed)
conn.Open();
int result = cmd.ExecuteNonQuery();
conn.Close();
return result;
}
public DataSet GetDataSet(string sql)
{
//將數據表中的數據查詢出來并添加到 DataSet 中
//每個 DataSet 都是由若干個數據表構成的,DataTable 即數據表,
//每個 DataTable 也都是由行和列構成的,
//行使用 DataRow 類表示、列使用 DataColumn 類表示。
SqlDataAdapter sqlda = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
sqlda.Fill(ds); //填充數據集
return ds; // 返回數據集
}
public SqlDataReader GetDataReader(string sql)
{
//讀取表中的查詢結果,以只讀方式讀取的(即不能修改 DataReader 中存放的數據)
//當查詢結果僅為一條時,可以使用 if 語句查詢 DataReader 對象中的數據,
//如果返回值是多條數據,需要通過 while 語句遍歷 DataReader 對象中的數據。
SqlCommand cmd = new SqlCommand(sql, conn);
if (conn.State == ConnectionState.Closed)
conn.Open();
SqlDataReader sqlDR = cmd.ExecuteReader();
return sqlDR;
}
}
//外部調用DBOpera類,將模擬產生的考試成績存儲到數據庫中
//將考試成績保存到數據庫中
//調用DataOperaor類中ExecSQLResult方法
string sql = "insert into MScore(Level,Math,Chinese,English," +
"Chemical,Physics,Biology,TotalScore,AvgScore) values" +
"('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}')";
//填充SQL語句
sql = string.Format(sql, ScoreLevel, tbx01.Text, tbx02.Text, tbx03.Text, tbx04.Text, tbx05.Text,
tbx06.Text, SumScore.ToString(), AvgScore.ToString());
int result = DbOpera.ExecSQLResult(sql);
if (result != -1)
{
MessageBox.Show("數據存儲成功");
}
else
{
MessageBox.Show("數據存儲失敗!");
}
3.利用組合框,顯示所有考試成績的評語
//創建方法,判斷成績的評語
public static string GetScoreLevel(int score)
{
string level = null;
//總分540-600為優,480-540為良,420-480為中,360-420為差,低于420為不及格
if(score >= 540)
{
level = "優";
}
else if(score >= 480)
{
level = "良";
}
else if (score >= 420)
{
level = "中";
}
else if (score >= 360)
{
level = "差";
}
else
{
level = "不及格";
}
return level;
}
//從數據庫讀取每次考試成績評語,并將數據顯示到組合框中
//查詢考試成績所處分段,并將這些信息在組合框中顯示
//定時查詢語句
//cbx01為控件combox名稱
ArrayList arylist = new ArrayList();
string sql = "select distinct level from MScore";
DataSet ds = DbOpera.GetDataSet(sql);
if(ds.Tables[0].Rows.Count >0)
{
DataTable dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows)
{
arylist.Add(dr[0].ToString().Trim());
}
cbx01.DataSource = arylist;
}
4.根據查詢條件,查詢符合條件的數據,并使用DataGridView控件顯示
private void button3_Click(object sender, EventArgs e)
{
//查詢考試總成績大于查詢值的成績分布數據
//定義查詢語句
string sql = "select Math,Chinese,English,Chemical,Physics,BIology,TotalScore,AvgScore from mscore where level ='" + cbx01.Text.ToString().Trim()+"'";
//創建DataSet類的對象
//datagridview1為控件datagridview名稱
DataSet ds = DbOpera.GetDataSet(sql);
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.Columns[0].HeaderText = "數學";
dataGridView1.Columns[1].HeaderText = "語文";
dataGridView1.Columns[2].HeaderText = "英語";
dataGridView1.Columns[3].HeaderText = "化學";
dataGridView1.Columns[4].HeaderText = "物理";
dataGridView1.Columns[5].HeaderText = "生物";
dataGridView1.Columns[6].HeaderText = "總分";
dataGridView1.Columns[7].HeaderText = "平均分";
// 設置數據表格為只讀
dataGridView1.ReadOnly = true;
//不允許添加行
dataGridView1.AllowUserToAddRows = false;
//背景為白色
dataGridView1.BackgroundColor = Color.White;
//只允許選中單行
dataGridView1.MultiSelect = false;
//整行選中
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
}
動畫演示效果
原文鏈接:https://blog.csdn.net/yue008/article/details/125946872
相關推薦
- 2022-07-14 python如何獲取當前系統的日期_python
- 2022-09-17 用C++來解決3*3拼圖的問題_C 語言
- 2022-04-18 python全面解析接口返回數據_python
- 2022-06-21 詳解C#中檢查null的語法糖_C#教程
- 2023-05-15 Bash中test命令的使用_linux shell
- 2022-07-07 C語言實現順序表的插入刪除_C 語言
- 2022-09-08 Pandas如何將Timestamp轉為datetime類型_python
- 2022-08-07 詳解Qt使用QImage類實現圖像基本操作_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支