差分方程自動計算專案
需求分析
在Windows端,從阿里雲伺服器中獲取差分資料,然後進行差分計算,最後以表格形式呈現結果。
軟體功能
1.在PC端的客戶端軟體實現登入。
2.登入後,從雲伺服器端獲取批量資料,儲存在本地。
3.客戶端根據獲取的資料,執行差分計算。
4.客戶端使用MFC實現結果展示。
拓撲圖
處理流程
程式碼模組
資料庫連線
標頭檔案SQLQuery.h
#pragma once
#include "mysql.h"
#include "DifferEqu.h"
#include <vector>
struct SQLQuery
{
bool init();
std::vector<DifferEqu> getData();
private:
MYSQL* conn = NULL;
};
連線程式碼
#include "pch.h"
#include "SQLQuery.h"
#include <vector>
#include "DifferEqu.h"
#pragma comment(lib, "libmysql.lib")
bool SQLQuery::init()
{
conn = mysql_init(NULL);
//建立MySQL資料庫連線
if (mysql_real_connect(
conn, "192.168.175.140", "root", "marry123",
"equation", 3306, NULL, 0) == NULL) {
printf("資料庫伺服器連線失敗, 錯誤原因: %s\n", mysql_error(conn));
return false;
}
else {
printf("資料庫伺服器連線成功!");
return true;
}
return false;
}
std::vector<DifferEqu> SQLQuery::getData()
{
//傳送資料請求命令
const char* sql = "select * from factor";
std::vector<DifferEqu> data;
DifferEqu tmp;
//傳送命令
if (mysql_query(
conn, sql) != 0) {
printf("Error: 傳送查詢命令失敗!\n");
exit(1);
}
//從資料庫伺服器獲取處理結果
//返回值,是指向結果的指標
//不適合大量資料傳輸
MYSQL_RES* res_ptr = mysql_store_result(conn);
if (res_ptr == NULL) {
printf("Error: 傳送查詢命令失敗\n");
exit(1);
}
int row = mysql_num_rows(res_ptr);
for (int i = 0; i < row; i++) {
//從結果中返回一行資料
MYSQL_ROW ret_row = mysql_fetch_row(res_ptr);
//解析資料
tmp.a = atoi(ret_row[0]);
tmp.y0 = atoi(ret_row[1]);
data.push_back(tmp);
//處理資料
//顯示資料
}
//返回的資料用vector儲存
return data;
}
差分計算程式碼
#pragma once
struct DifferEqu
{
int a;
int y0;
int calc(int n); //計算函式,n表示冪
};
#include "DifferEqu.h"
int DifferEqu::calc(int n)
{
int ret = 0;
int tmp = 1;
//計算 a的n次方
for (int i = 1; i <= n; i++) {
tmp = tmp * a;
}
ret = tmp * y0;
return ret;
}
顯示到圖形介面
在MFC中的BOOL CequarionDlg::OnInitDialog()函式中新增如下程式碼進行表單設計。
//1.設定表頭樣式
m_list.SetExtendedStyle(
m_list.GetExtendedStyle()|
LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
//2.設定表頭的表格
m_list.InsertColumn(0, L"係數a", LVCFMT_LEFT, 100);
for (int i = 1; i < 6; i++)
{
CString str = L"Y";
int c = i - 1;
str.Format(L"%s%d", str, c);
m_list.InsertColumn(i, str, LVCFMT_LEFT, 100);
}
return TRUE; // 除非將焦點設定到控制元件,否則返回 TRUE
資料載入
void CequarionDlg::OnBnClickedLoaddatabtn()
{
//載入資料
//1.使用資料庫管理介面,來獲取資料
SQLQuery sql;
sql.init();
m_data = sql.getData();
//獲取資料填充到使用者介面
for (int i = 0; i < m_data.size(); i++) {
m_data[i].a;
CString str;
str.Format(L"%d", m_data[i].a);
m_list.InsertItem(i, str);
str.Format(L"%d", m_data[i].y0);
m_list.SetItemText(i, 1, str);
}
}
差分計算
void CequarionDlg::OnBnClickedEqucalbtn()
{
CString str;
for (int i = 0; i < m_data.size(); i++)
{
for (int k = 1; k <= 4; k++)
{
int value = m_data[i].calc(k);
str.Format(L"%d", value);
m_list.SetItemText(i, k + 1, str);
}
}
}
結果展示
資料庫中的資料
計算結果
相關文章
- 藍橋杯 計算方程
- 單像空間後方交會計算誤差方程係數矩陣矩陣
- Dynamics CRM使用計算欄位自動計算兩個時間欄位的天數差
- 計算誤差函式的積分--erf(x)函式
- 時間差計算
- 專案管理的成功方程式專案管理
- 函式計算進行自動化運維專題函式運維
- CO聯產品成本差異分攤計算邏輯
- ABAP計算自動義公式公式
- JS計算時間差JS
- 專案管理的成功方程式(轉)專案管理
- Git Webhook自動部署專案GitWebHook
- 專案成本管理計算公式公式
- 3 分鐘輕鬆搭建 Ruby 專案自動化持續整合
- matlab符號函式的求導與差分的計算Matlab符號函式求導
- bash shell計算時間差
- 註冊時間差計算
- 計算兩個時間差
- BT自動檔案分發系統
- playwright自動化專案搭建
- 三.介面自動化專案1
- 結對專案:複利計算
- iOS-UITableView行高自動計算iOSUIView
- 自動化測試ROI計算器
- 分庫分表的框架如何設計自動路由框架路由
- 【UniApp】-uni-app-專案計算功能(蘋果計算器)APP蘋果
- 差分
- 資料專案與erp專案的差異
- Android 計算倆個日期差Android
- 視差和深度分析與計算
- JavaScript計算時間差詳解JavaScript
- 世界時區及時差計算
- 專案經理值得一試的思維方式:專案成功方程式
- 輕鬆搞定專案流程自動化
- 使用 CODING 自動部署 Hyperf 專案
- Github-Pages自動部署VuePress專案GithubVue
- 對專案版本自動控制——利用gitversionGit
- 實戰專案之自動簡歷