Задание:
Автоматизировать хранение компьютерных комплектующих, ноутбуков. Добавить возможность ручного сбора нужной пользователю конфигурации. Добавить возможность заказа и покупки ноутбука.
В проекте имеется разделение на администратора и пользователя:
Администратор может:
- Авторизироваться;
- Полный CRUD (Create, Read, Update, Delete);
- Добавлять полную конфигурацию;
- Настраивать соединение с базой данных.
Пользователь может:
- Авторизироваться;
- Просматривать информацию;
- Делать заказ на определённую модель;
- Распечатать данные заказа.
Данный проект содержит в себе пояснительную записку состоящую из следующих пунктов:

Содержимое проекта:

Содержимое папки Data (bin/Debug/Data):
- DB - папка с исходным SQL кодом, для создания базы данных и её заполнения
- Help - папка со справкой проекта
- Icons - папка с икон паком проекта
- Images - папка для хранения изображений проекта
- connection.cfg - конфигурационный файл проекта. Содержит строку подключения к БД

Пример кода:
#region Screen
case 0:
if (AdminStatus == true)
{
dGVMain.ReadOnly = false;
dGVMain.AllowUserToAddRows = true;
}
else
{
dGVMain.ReadOnly = true;
dGVMain.AllowUserToAddRows = false;
}
if (command.Equals("Load"))
{
_conn.LoadTable("Screen", "SELECT * FROM Screen", _conn.binSourceScreen, dGVMain, binNavigatorMain);
}
else if (command.Equals("AddEdit"))
{
if (checkEmptyDataGridCell(3, dGVMain) == true)
{
if (_conn.QueryToBool("SELECT * FROM Screen") == false)
{
Insert = "INSERT INTO Screen VALUES("
+ 1
+ ",'" + dGVMain[1, currentRow].Value
+ "','" + dGVMain[2, currentRow].Value
+ "','" + dGVMain[3, currentRow].Value + "')";
if (_conn.QueryToBool(Insert) == false & _conn.CheckException == false)
{
currentRow++;
MessageBox.Show("Строка " + currentRow + " успешно сохранена!", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
currentRow++;
MessageBox.Show("Строка " + currentRow + " не сохранена!", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
else
{
Count = _conn.AgregateQueryToDataGrid("SELECT COUNT(*) FROM Screen");
allRows = Convert.ToInt32(Count);
allRows--;
if (currentRow <= allRows)
{
Update = "UPDATE Screen SET Size = '" + dGVMain[1, currentRow].Value
+ "', ScreenType = '" + dGVMain[2, currentRow].Value
+ "', Cost = '" + dGVMain[3, currentRow].Value
+ "' WHERE Id = " + dGVMain[0, currentRow].Value;
if (_conn.QueryToBool(Update) == false & _conn.CheckException == false)
{
currentRow++;
MessageBox.Show("Строка " + currentRow + " успешно изменена!", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
currentRow++;
MessageBox.Show("Строка " + currentRow + " не изменена!", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
else
{
MaxId = _conn.AgregateQueryToDataGrid("SELECT Max(Id) FROM Screen");
maxId = Convert.ToInt32(MaxId);
maxId++;
Insert = "INSERT INTO Screen VALUES("
+ maxId
+ ",'" + dGVMain[1, currentRow].Value
+ "','" + dGVMain[2, currentRow].Value
+ "','" + dGVMain[3, currentRow].Value + "')";
if (_conn.QueryToBool(Insert) == false & _conn.CheckException == false)
{
currentRow++;
MessageBox.Show("Строка " + currentRow + " успешно сохранена!", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
currentRow++;
MessageBox.Show("Строка " + currentRow + " не сохранена!", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
}
else
{
MessageBox.Show("Проверьте ячейки таблицы\nСтрока: " + _indexRow + ", ячейка: " + _indexColumn, "Ошибка сохранения!",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
else if (command.Equals("Delete"))
{
DeleteRecord("SELECT * FROM Screen", "Screen", _conn.binSourceScreen, dGVMain, binNavigatorMain);
}
try
{
dGVMain.Columns[1].HeaderText = "Размер";
dGVMain.Columns[2].HeaderText = "Тип экрана";
dGVMain.Columns[3].HeaderText = "Стоимость";
}
catch (Exception exc)
{
MessageBox.Show(exc.Message);
}
break;
#endregion
Содержание архива
-
Исходный код на C# для Visual Studio
-
Исходный код на SQL для PostgreSQL
-
Файл инструкции по установке и настройке
-
Пояснительная записка на 45 страниц (docx).
Телеграм
-