C# 第一个项目的规划和开发步骤

C# 第一个项目的规划和开发步骤,c#,sql,wpf,project-planning,C#,Sql,Wpf,Project Planning,我正处于编写第一个真实程序的准备阶段。我设计了一套表格来存储我的财务数据。我知道 1) 哪些数据在表中的位置 2) 表和字段之间存在什么关系 3) 需要什么查询 4) 表单将数据写入表时的外观 5) 我需要什么输出以及应该如何组织输出 我决定使用C#,GUI使用WPF,数据使用SQL数据库。如果我理解正确,我将需要ADO.NET与SQL db接口。我的问题是,现在我只熟悉使用文本文件(或键盘)来编写非GUI C++。p> 我不想成为一名拥有各种各样的、适销对路的技能的程序员,所以我宁愿避免花时间

我正处于编写第一个真实程序的准备阶段。我设计了一套表格来存储我的财务数据。我知道 1) 哪些数据在表中的位置 2) 表和字段之间存在什么关系 3) 需要什么查询 4) 表单将数据写入表时的外观 5) 我需要什么输出以及应该如何组织输出 我决定使用C#,GUI使用WPF,数据使用SQL数据库。如果我理解正确,我将需要ADO.NET与SQL db接口。我的问题是,现在我只熟悉使用文本文件(或键盘)来编写非GUI C++。p> 我不想成为一名拥有各种各样的、适销对路的技能的程序员,所以我宁愿避免花时间学习那些不适用于这个项目的东西。我正在寻找从这里到有用的工作(和可维护)程序的最直接的路线

这就是我需要帮助的情况。如果我遗漏了任何相关内容,请告诉我。
我的问题是,从现在开始,我需要采取什么步骤来完成它?
感谢您的帮助。

您是否有任何文档指定应用程序将要执行的操作,而不是指定如何执行操作

如果你没有,那么退一步,在你有了之后写一封信,你可能想重做一些你已经做过的工作

您还应该花一些时间来思考如何对代码进行粗制滥造。您将使用什么名称空间和类。您将把代码放在哪里:

  • 用户界面
  • 业务逻辑
  • 数据库访问
您应该隔离应用程序的这些部分,以便于维护

我不想成为一名教师 具有多样性和适销性的程序员 技能,所以我宁愿避免花钱 花时间学习那些不适用的东西 对这个项目的支持

在这种情况下,跳过.Net。你要花时间把它学好,才能把工作做好。既然你提到了(也许最小)C++经验,我可能会使用QT来代替QT设计器来配置GUI。从这一点来看,应用程序的其余部分应该与您已经完成的工作非常相似

除非你知道你在用.Net做什么,否则你很快就会得到无法维护的代码。我把这归咎于VisualStudio。默认情况下,它鼓励“将这个东西拖到这里,将那个东西拖到那里,双击并编写代码”的编码方法,这通常会导致可怕的混乱

如果你坚持要使用C#/.Net,我鼓励你从后端开始,继续前进。在考虑GUI之前,花点时间对实体、数据访问和业务层进行建模。您甚至可以更进一步,编写两个项目。一个是dll,包含业务和数据访问逻辑。另一个是可执行文件,您可以在其中将UI事件连接到dll的api中


祝你好运。

我给你的建议是,首先在你选择的平台下编写你的第一个原型作为控制台/文本程序。当您以您想要的方式获得输入和输出时,再次请求重构帮助以您想要的方式获得UI。您还可以轻松地测试db查询,并在早期更有效地使用现有技能以获得正确的功能,但UI有限

然后,您的控制台程序还将验证程序的GUI版本是否按预期工作

编辑:并将其显示在屏幕上

using System;
using System.Data;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        using (SqlConnection connection = new SqlConnection("Data Source=server;database=mydb; Integrated Security=SSPI"))
        {
            SqlCommand command = connection.CreateCommand();
            command.CommandText = "SELECT CategoryID, CategoryName FROM dbo.Categories;";

            try
            {
                connection.Open();

                SqlDataReader reader = command.ExecuteReader();

                // process each row one at a time
                while (reader.Read())
                {
                    // reader contains the row (reader[0] is first column, etc)
                    Console.WriteLine("\t{0}\t{1}", reader[0], reader[1]);
                }
                reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
使用此链接(以及我从中获得另一个版本的链接)最初可以通过ado.net帮助您完成。作为一名经验丰富的程序员,您可以看到,如果遵循此模型,您可以创建基于传入查询返回数据的公共函数。当您想要返回数据表而不是简单的值时,我建议从ExecuteReader转移到函数

注意。 一般来说,我不建议您从这里开始—我建议,但对于初学者来说,这要复杂一点,并且在您理解了代码(在.net中)与数据库及其数据之间的关系之后,这会更好


杰苏特也有一个想法。如果您想使用另一种技术,而不是SqlClient,那么您可以使用它。事实上,网上有一些非常有用的免费视频。

开始一个新的答案,因为我以前的答案不适用于这些非常具体的步骤。这个答案是为了支持Preet Sangha的回答,但比我们任何人都要具体

启动控制台应用程序,并在应用程序顶部添加“using System.Data.SqlClient”行。您需要从连接对象开始,然后是命令对象。尝试使用命令对象执行查询。请尝试“插入”语句和“选择”语句。对于“select”,您将从数据库中获取一些信息。为此使用SqlDataReader(命令上的executeReader)并尝试提取值(reader.read()&getXXX,其中XXX是要检索的数据类型)。这些应该会让你感到足够舒服,让你的手臂围绕着问题,然后回答一个更直接的问题

考虑到您对这一点有多么陌生,MSDN将是您最好的朋友。这应该有助于你开始:)

听起来不错。我选择C#是因为我可能希望有一天可以出售该程序,而且我可以告诉你,C#/.NET将使未知Windows机器上的非技术性安装变得容易(至少相对而言)。另外,我认为我发现适用的许可证将允许商业使用和私有代码。我简单地看了一眼Qt,现在我已经忘记了我不选择它的原因是什么,而且对于大多数情况来说,我都是新手,可能我选择错了。你怎么看?Qt许可证是LGPL,它不排除商业可能性。你真的不该这么做