Планирование и этапы разработки для первой программы

2

Я нахожусь на стадии подготовки моей первой настоящей программы. Я разработал набор таблиц для хранения моих финансовых данных. я знаю

1) какие данные идут, где в таблицах

2) какие отношения существуют между таблицами и полями

3) какие запросы необходимы

4) какие формы должны выглядеть так, чтобы записывать данные в таблицы

5) какой результат мне нужен и как он должен быть организован

Я решил использовать С# с WPF для графического интерфейса и базу данных SQL для данных. Если я правильно понял, мне понадобится ADO.NET для взаимодействия с SQL db. Проблема для меня в том, что сейчас я знаком с написанием не-GUI С++ с использованием текстовых файлов (или клавиатуры) для ввода.

Я не желаю стать программистом с разнообразными и рыночными навыками, поэтому я бы предпочел не тратить время на изучение вещей, которые не будут применяться к этому проекту. Я ищу самый прямой маршрут отсюда до полезной рабочей (и поддерживаемой) программы.

Итак, мне нужна помощь. Пожалуйста, дайте мне знать, если я оставил что-либо релевантное.

Мой вопрос: каковы шаги, которые мне нужно предпринять, чтобы сделать это?

Спасибо за вашу помощь.

Теги:
wpf
project-planning

4 ответа

2
Лучший ответ

Мое предложение для вас - сначала написать свой первый прототип в качестве консольной/текстовой программы под платформой выбора. Когда у вас есть вход и выход, как вы хотите, попробуйте снова для рефакторинга помощи в получении пользовательского интерфейса так, как вы этого хотите. Вы также можете легко проверить свои запросы на db, и более эффективно использовать свои существующие навыки раньше, чтобы получить функциональность правильно, но с ограниченным интерфейсом.

Ваша консольная программа также будет проверкой того, что версия вашей программы 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 к функциям других функций данных.

N.B. В общем, я бы не предложил вам начать здесь - я предлагаю беглого NHbernate, но это немного сложнее для новичков, и было бы лучше после вы понимаете взаимосвязь вашего кода (в .net) с БД и данными в нем.

Также у меня возникла мысль. Если вы хотите использовать другую технологию, а SqlClient вы можете использовать Linq2Sql. Посмотрите это видео, чтобы узнать, полезен ли он.. На самом деле есть несколько очень полезных бесплатных видео на DimeCasts.net.

  • 0
    Спасибо, Прит.
2

Запуск нового ответа, потому что мое старое не относится к этим очень конкретным шагам. Этот ответ поддерживается в ответ на сообщение Preet Sangha, но он должен быть более конкретным, чем кто-либо из нас еще не был.

Запустите консольное приложение и добавьте строку "using System.Data.SqlClient" в верхней части приложения. Вам нужно будет начать с объекта Connection, а затем с объекта Command. Поэкспериментируйте с выполнением запросов с помощью объекта команды. Попробуйте как оператор "insert", так и оператор "select". Для "select" вы получите что-то обратно из базы данных. Для этого используйте SqlDataReader (executeReader в команде) и экспериментируйте с выталкиванием значений (reader.read() и getXXX, где XXX - тип данных, которые вы хотите получить). Они должны сделать вас достаточно удобными, чтобы обнять проблему и вернуться с более направленным вопросом.

Учитывая, насколько вы новичок в этом, MSDN станет вашим лучшим другом. Это должно помочь вам начать:) http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection(VS.71).aspx

  • 0
    Благодарю. Итак, в следующем я должен 1) загрузить и установить программное обеспечение SQL db, 2) настроить свои таблицы и поместить в них данные, 3) написать код консоли и 4) начать играть с запросами?
  • 0
    Если вы не используете «экспресс-выпуски» Visual Studio (и, может быть, даже тогда, но я не знаю), у вас уже должен быть доступный сервер базы данных. Sql Express был бы установлен при установке VS. Да, в остальном.
Показать ещё 2 комментария
1

Я не желаю стать программист с разнообразными и продаваемыми навыки, поэтому я бы предпочел избежать расходов время изучать вещи, которые не будут применяться к этому проекту.

В этом случае пропустите .Net. Это займет у вас время, чтобы изучить его достаточно хорошо, чтобы сделать хорошую работу. Поскольку вы упомянули, что у вас есть (возможно, минимальный) опыт работы на С++, я бы, возможно, использовал Qt с помощью Qt Designer для компоновки графического интерфейса. С этого момента остальное приложение должно быть похоже на то, что вы уже сделали.

Если вы не знаете, что вы делаете с .Net, вы получите очень неизученный код очень быстро. Я виню Visual Studio за это. По умолчанию он поощряет "перетащить эту штуку сюда, отказаться от того, что там, двойной щелчок и писать код" подходит к кодированию, что обычно приводит к ужасающему беспорядку.

Если вы настаиваете на том, что хотите С#/.NET в любом случае, я рекомендую вам начать работу с бэкэнд и проложить свой путь вперед. Потратьте время на моделирование объектов и доступ к данным и бизнес-уровень, прежде чем вы даже подумаете о графическом интерфейсе. Вы даже можете сделать еще один шаг и написать два проекта. Один из них - ваша dll, содержащая логику доступа к бизнесу и данным. Другой будет вашим исполняемым файлом, где вы связываете свои события пользовательского интерфейса с dll api.

Удачи.

  • 0
    Это звучит неплохо. Я выбрал C #, потому что мне может потребоваться однажды продать программу, и, насколько я могу судить, C # / .NET упростит (по крайней мере, относительно) установку нетехнических приложений на неизвестных компьютерах с Windows. Также я думаю, что я нашел, что применимые лицензии позволят коммерческое использование и частный код. Я кратко взглянул на Qt, и теперь я забыл, по какой причине я не выбрал его, и, будучи новичком в большей части этого, возможно, я выбрал неправильно. Как вы думаете?
  • 0
    Лицензия Qt - LGPL, которая не исключает коммерческих возможностей. У вас действительно не должно быть проблем с простой установкой. Тем не менее, мне бы не пришлось подталкивать вас в направлении, куда вы не хотите идти. C # с Click Once развертывание действительно привлекательно, если вы собираетесь ориентироваться только на аудиторию Windows. Qt откроет коммерческие возможности на других платформах. В конце концов, все сводится к тому, что вы хотите.
Показать ещё 4 комментария
1

Есть ли у вас документ, определяющий, что приложение будет делать, а не спецификацию, как это будет сделано?

Если у вас этого нет, сделайте шаг назад и напишите Функциональная спецификация. После этого вы можете захотеть повторите часть работы, которую вы уже сделали.

Вам также потребуется немного времени, чтобы подумать, как вы собираетесь усовершенствовать свой код. Какие пространства имен и классы вы собираетесь использовать. Где вы поместите код для:

  • Пользовательский интерфейс
  • Бизнес-логика
  • Доступ к базе данных

Вы должны изолировать те части вашего приложения, чтобы упростить их обслуживание.

  • 0
    Михал, спасибо за ответ. У меня уже есть функциональные характеристики. Я использовал их для планирования структуры таблицы и отношений. Кроме того, в моем чтении я обнаружил, что должен держать разделенный пользовательский интерфейс и бизнес-логику, однако должен признать, что действительно не знаю точно, как это будет достигнуто из-за моей неопытности в создании программ такого типа с нуля. Я думаю, что это немного дальше по дороге для меня.
  • 1
    Вам следует избегать того, что Шон назвал «бросьте это туда, дважды щелкните и напишите код». Не помещайте доступ к данным и код бизнес-логики в обработчики событий. создайте отдельные пространства имен и классы, куда вы все это поместите. Затем вы можете вызвать этот код из обработчиков событий
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню