这个作业属于哪个课程 | https://bbs.csdn.net/forums/ssynkqtd-05 |
这个作业要求在哪里 | https://bbs.csdn.net/topics/617377308 |
这个作业的目标 | 继续实现更完善的计算器功能,体现前后端分离 |
其他参考文献 |
目录
1,Gitcode项目地址
2,PSP表格
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 50 | 60 |
• Estimate | • 估计这个任务需要多少时间 | 30 | 45 |
Development | 开发 | 450 | 600 |
• Analysis | • 需求分析 (包括学习新技术) | 600 | 720 |
• Design Spec | • 生成设计文档 | 40 | 30 |
• Design Review | 设计复审 | 60 | 50 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 30 | 30 |
• Design | • 具体设计 | 120 | 180 |
• Coding | • 具体编码 | 300 | 360 |
• Code Review | • 代码复审 | 120 | 140 |
• Test | • 测试(自我测试,修改代码,提交修改) | 90 | 100 |
Reporting | 报告 | 120 | 150 |
•Test Report | • 测试报告 | 80 | 90 |
• Size Measurement | • 计算工作量 | 30 | 35 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 60 | 60 |
合计 | 2180 | 2650 |
3,成品展示
4,代码说明
后端部分关键代码样例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using WebAppStudyCore01.Common;
namespace WebAppStudyCore01.Models {
public class ShoppingCarts {
public static int AddCart(string cityname, string count)
{
return SqlHelp.ExecuteNonQuery($"INSERT INTO Study01 (cityName, info) VALUES('{cityname}', '{count}')");
}
}
}
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Threading.Tasks;
namespace WebAppStudyCore01.Common {
public class SqlHelp {
public static string ConStr { get; set; }
/// <summary>
/// 执行查询语句
/// </summary>
/// <param name="cmdText">SQL语句</param>
/// <returns>返回 SQL语句 查询数据</returns>
public static DataTable ExecuteTable(string cmdText)
{
using (SqlConnection con = new SqlConnection(ConStr))
{
con.Open();
SqlCommand cmd = new SqlCommand(cmdText, con);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds.Tables[0];
// 取数据库数据
}
}
/// <summary>
/// 执行【增、删、改】语句
/// </summary>
/// <param name="cmdText">SQL语句</param>
/// <returns>返回受影响行数</returns>
public static int ExecuteNonQuery(string cmdText)
{
using (SqlConnection con = new SqlConnection(ConStr))
{
con.Open();
SqlCommand cmd = new SqlCommand(cmdText, con);
int rows = cmd.ExecuteNonQuery();
if (rows <= 0)
{
throw new Exception("数据库执行错误");
}
return rows;
}
}
}
}
前端部分代码样例:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 简易计算器2
{
public partial class Form1 : Form
{
Button btn;
double num1;
double num2;
string fh;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text += 1;
}
private void num(object sender, EventArgs e)
{
btn = (Button)sender;
textBox1.Text += btn.Text;
}
private void button17_Click(object sender, EventArgs e)
{
textBox1.Text = "";
}
private void fuhao(object sender, EventArgs e)
{
btn = (Button)sender;
num1 = Convert.ToDouble(textBox1.Text);
fh = btn.Text;
textBox1.Text = "";
}
private void button18_Click(object sender, EventArgs e)
{
btn = (Button)sender;
num2 = Convert.ToDouble(textBox1.Text);
switch (fh)
{
case "*":
textBox1.Text = (num1 * num2).ToString();
break;
case "/":
textBox1.Text = (num1 / num2).ToString();
break;
case "+":
textBox1.Text = (num1 + num2).ToString();
break;
case "-":
textBox1.Text = (num1 - num2).ToString();
break;
case "%":
textBox1.Text = (num1 % num2).ToString();
break;
case "^":
textBox1.Text = (Math.Pow(num1,num2)).ToString();
break;
case "sin":
double num3 = num2 * (Math.PI / 180);
textBox1.Text = (Math.Sin(num3)).ToString();
break;
case "cos":
num3 = num2 * (Math.PI / 180);
textBox1.Text = (Math.Cos(num3)).ToString();
break;
case "tan":
num3 = num2 * (Math.PI / 180);
textBox1.Text = (Math.Tan(num3)).ToString();
break;
case "e":
textBox1.Text = (Math.Exp(num2)).ToString();
break;
case "log":
textBox1.Text = (Math.Log(num2)).ToString();
break;
}
}
}
}
5,心得体会
很难,好多东西没学会,也还没学完搞了个冷门的东西C#,其实应该学JAVA啥的,只做了最基本的,汇率啥的都没有,就基础功能和以及不太合格的前后端,时间紧张,之后会继续学习完善。