Оружейный магазин
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВВАНИЮ
Государственное образовательное учреждение высшего профессионального образования
«САНКТ-ПЕТЕРБУРГСКИЙ СУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
КАФЕДРА ИВТ
КУРСОВАЯ РАБОТА
ЗАЩИЩЕНА С ОЦЕНКОЙ
РУКОВОДИТЕЛЬ
______________________________
Должность, ученая
степень, звание
подпись, дата
КУРСОВАЯ РАБОТА
Тема: «Оружейный магазин»
по дисциплине: Объектно-ориентированное программирование.
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. 1ПО-04 ________________
Пятигорск
2007
Содержание
Введение………………………………………………………… |
4 | |
Подготовительная работа…………….. |
5 | |
Разработка требований пользователя к системе и ПО ……………………….... |
6 | |
Сценарий работы системы………….…………………………………………… |
7 | |
Проектирование архитектуры системы и анализ требований к ПО…………... |
8 | |
Детальное проектирование ПО. Характеристика компонентов системы…….. |
9 | |
Тестирование……………………………………………… |
14 | |
Модель базы данных……………………………..……………………….… |
16 | |
Описание выходных форм………………………..……………………………… |
18 | |
Себестоимость…………………………………………… |
19 | |
Код программы……………………………………………………… |
20 | |
Заключение ………………………………………………… |
35 | |
Литература…………………………………………………… |
36 |
Введение
В любой спроектированной системе есть свои цели и задачи. В данной работе целью является автоматизация учёта продаж боевых единиц, на основе объектно-ориентированного подхода к разработке информационных систем. Основной целью курсового проекта является написание программы на языке программирования – C# -, освоение принципов объектно-ориентированного программирования, получение навыков работы с базой данных.
Программа должна обладать некоторыми свойствами, которые необходимы для понимая работы программы любым пользователем:
- программа должна содержать подсказки, которые помогут пользователю при работе;
- программа должна быть наглядной;
- В результате программа должна автоматизировать продажу боевых единиц;
Подготовительная работа
Задача, поставленная при написании курсового проекта, состоит в следующем: необходимо спроектировать и разработать проект «Оружейный магазин». Всю процедуру работы с клиентом и программой производит консультант или менеджер фирмы.
Разработка будет проведена для системы программирования «C#» с применением СУБД «Microsoft SQL Server 2005».
План работы включает в себя следующие этапы разработки ПО:
- Формирование требований к системе.
- Анализ требований к системе и ПО и разработка сценария работы системы.
- Проектирование архитектуры системы.
- Проектирование архитектуры ПО.
- Детальное проектирование ПО
- Кодирование и тестирование ПО.
- Интеграция ПО.
Разработка требований пользователя к системе и ПО
Для работы на компьютере должен быть установлен Microsoft SQL – Server, а также Microsoft Visual Studio.NET, в которую должен быть включен C#.
Программа, которая будет написана, разрабатывается для любой фирмы, занимающейся продажей оружия. Количество вводимых данных не ограничено.
Система должна выполнять следующие функции:
- Отображение содержимого баз данных;
- Запись информации в базу данных;
- Поиск информации в базе данных;
- Редактирование записей;
- Удаление информации из базы данных;
Сценарий работы системы
Менеджер фирмы, находящийся в магазине, каждому потенциальному покупателю предоставляет прайс-лист на виды боевых единиц. Для получения лицензии на приобретение боевой единицы (оружие) необходимо предоставить обязательный перечень документов, согласно федерального закона РФ о использовании и эксплуатации боевой единицы (оружие). Если покупатель не знает необходимого обязательного перечня документов на приобретение боевой единицы (оружие), то менеджер фирмы выдает необходимую информацию покупателю на руки, т.е. необходимые документы, которые нужно иметь при себе. Если покупатель выполнил все условия, то покупатель должен рассказать предпринимателю закон РФ о хранении и использовании оружия. После этого вся информация о покупке заносится в базу данных.
Проектирование
архитектуры системы и
Программное обеспечение будет состоять из следующих компонентов:
- Главной формы – где будет находиться выбор компонентов: Таблицы, Печать, О программе, Выход.
- Виды оружия – Здесь будут выполняться все необходимые действия по записи и редактировании информации в БД.
- Виды лицензий –
Здесь будут хранится все виды
лицензий для всех
- Необходимые документы– Здесь будут хранится все виды документов необходимых для сдачи для получения лицензии.
- Печать – Здесь формируются все необходимые выходные формы
- Выйти. Выход из программы
- О программе. Содержит сведения о разработчике и авторе проекта, а также о версии проекта.
Детальное проектирование ПО. Характеристика компонентов системы
При запуске приложения пользователю предоставляется главное меню (Рис.1).
Главное меню состоит из пунктов: Таблица, Печать, О программе, Выход.
(Рис.1)
При выборе пункта Меню пользователь выбирает таблицу в которой он хочет внести данные. Первая таблица-это «виды оружия». В данной таблице пользователь может внести Тип оружия, Номер, Калибр. Так же пользователь может редактировать данные хранящихся в БД . (Рис.2)
(Рис.2)
Следующий пункт Меню-это «виды лицензии». В данной таблице пользователь может внести ФИО, Тип оружия, Тип лицензии, Срок действия. Так же пользователь может редактировать данные хранящихся в БД и выполнять поиск. (Рис.3)
(Рис.3)
При выборе пункта Меню пользователь выбирает пункт- «необходимые документы». В данной таблице пользователь может внести ФИО, Мед. заключение, Фотографии , Дата сдачи. Так же пользователь может редактировать данные хранящихся в БД . (Рис.4)
(Рис.4)
При выборе пункта «Печать» пользователь может выбрать «Прайс-лист», где он может посмотреть цены, а так же внести новые данные, редактировать данные хранящихся в БД . Для того чтоб распечатать- необходимо нажать на кнопку просмотр и для дальнейшей работы надо нажать на кнопку в excel. (Рис.5)
(Рис.5)
В пункте «Печать» пользователь может выбрать «Правила эксплуатации» , где он может узнать результаты своих знаний о законах РФ, а так же внести новые данные, редактировать данные хранящихся в БД . Для того чтоб распечатать необходимо нажать на кнопку просмотр и для дальнейшей работы надо нажать на кнопку в excel. (Рис.6)
(Рис.6)
А также пользователь может зайти в раздел «о программе» и узнать: кем, когда, где и на каком языке программа была разработана данная программа. (Рис.7)
(Рис.7)
Тестирование ПО.
При вводе данных в форму «Вид лицензии» (Рис 8), (ФИО, Тип оружия, Тип лицензии, срок действия) (согласно закону РФ).
(Рис 8)
После ввода данных можно сделать четыре действия (Записать, Найти, Просмотреть, Удалить).
Первое действие «Запись». При выполнении этого действия выполняется запись данных в базу данных (Рис 9).
(Рис 9).
Второе действие над данными «Найти». Этим действием пользователь находит нужную лицензию в базе данных по ФИО (согласно закону РФ) (Рис 10).
(Рис 10).
Третье действие над данными «Просмотреть». Этим действием пользователь имеет возможность просмотреть все данные о лицензиях (Рис 11). Изменения данных в базе данных происходит по ключу. Ключ формы является ФИО гражданина.
(Рис 11).
Четвертое действие над данными «Удаление». Этим действием пользователь удаляет данные о нужном гражданине (Рис 12). Удаление данных из базы данных происходит по ключу. Ключ формы является ФИО гражданина.
(Рис 12).
Модель базы данных
При работе с базой данных были созданы следующие таблицы:
- Таблица «Виды оружия» состоит из отношения Оружие на складе (Код_оружия, Номер_оружия, Калибр). Ключом в этом отношении является атрибут Номер_оружия;
- Таблица «Виды лицензий» состоит из отношения Вид лицензии (ФИО, Тип_оружия, Тип_лицензии, Срок_действия); ключом в данном отношении является ФИО;
- Таблица «Необходимые документы» состоит из отношения Необходимые документы (ФИО, Медицинское_залючение, Фотографии, Дата_сдачи). В этом отношении первичным ключом является атрибут ФИО.
Описание выходных форм
Форма для печати Прайс-лист боевых единиц
Прайс – лист боевых единиц | ||
Оружие |
Характеристики |
Цена |
Форма для печати Правила эксплуатации
Выполненные объекты | |||
ФИО |
Закон РФ о хранении |
Закон РФ о эксплуатации |
Дата |
Себестоимость
Неотъемлемой частью разработки любого программного обеспечения является оценка его себестоимости. Оценка стоимости должна быть объективной, чтобы дать компании-разработчику достаточно точный прогноз себестоимости проекта.
Существует множество способов для расчета стоимости программного продукта. Для оценки данной программы была использована следующая формула:
Цена = <количество функциональных точек> х <стоимость одной точки>
Функциональные точки не зависят от применяемого языка программирования, благодаря чему появилась возможность сравнения производительности разработки программных систем, написанных на различных языках программирования. Функциональная точка — это не какая-то отдельная характеристика программного продукта, а целая комбинация его свойств.
При анализе данной программы установлено, что в ней использована 71 функциональная точка, а стоимость одной функциональной точки была установлена в 200 рублей.
Следовательно, стоимость данного программного продукта составила 14200 рублей.
Код программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static string strcon = "Data Source=COMP910-79;Initial Catalog=or_lavka;Integrated Security=false; User ID = student; Password = student;";
private void выходToolStripMenuItem_Click(o
{
Close();
}
private void видыОружияToolStripMenuItem_
{
Form2 f2 = new Form2();
f2.Show();
}
private void видыЛицензийToolStripMenuItem_
{
Form3 f3 = new Form3();
f3.Show();
}
private void необходимыеДокументыToolStripM
{
Form4 f4 = new Form4();
f4.Show();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void характеристикаToolStripMenuIte
{
}
private void печатьToolStripMenuItem_Click(
{
}
private void прайслистToolStripMenuItem_
{
Form5 f5 = new Form5();
f5.Show();
}
private void соглашениеToolStripMenuItem_
{
Form6 f6 = new Form6();
f6.Show();
}
private void оПрограммеToolStripMenuItem_
{
Form7 f7 = new Form7();
f7.Show();
}
}
}namespace Kursovik
{
public partial class Form2 : Form
{
SqlConnection conn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
SqlDataReader rdr;
public void tablica()
{
conn.ConnectionString = Form1.strcon;
SqlDataAdapter da = new SqlDataAdapter("select * from vidor", conn);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt.DefaultView;
dataGridView1.Columns[0].
dataGridView1.Columns[1].
dataGridView1.Columns[2].
}
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
conn.ConnectionString = Form1.strcon;
cmd.CommandText = "insert into vidor (tip,nomer,kalibr) values('" + textBox1.Text + "'," + textBox2.Text + "," + textBox3.Text + ")";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
tablica();
}
private void button2_Click(object sender, EventArgs e)
{
conn.ConnectionString = Form1.strcon;
cmd.CommandText = "select * from vidor where nomer= " + textBox2.Text + "";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
rdr = cmd.ExecuteReader();
rdr.Read();
textBox1.Text = rdr.GetString(0);
textBox3.Text = rdr.GetDecimal(2).ToString();
conn.Close();
tablica();
}
private void button3_Click(object sender, EventArgs e)
{
conn.ConnectionString = Form1.strcon;
cmd.CommandText = "select * from vidor where nomer=" + textBox2.Text;
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
rdr = cmd.ExecuteReader();
if (rdr.Read())
{
conn.Close();
cmd.CommandText = "delete from vidor where nomer= " + textBox2.Text;
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
tablica();
}
else MessageBox.Show("Запись с таким кодом не существует");
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void button4_Click(object sender, EventArgs e)
{
conn.ConnectionString = Form1.strcon;
cmd.CommandText = "select * from vidor";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteReader();
conn.Close();
tablica();
}
}
}
namespace Kursovik
{
public partial class Form3 : Form
{
SqlConnection conn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
SqlDataReader rdr;
public void tablica()
{
conn.ConnectionString = Form1.strcon;
SqlDataAdapter da = new SqlDataAdapter("select * from vidlic", conn);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt.DefaultView;
dataGridView1.Columns[0].
dataGridView1.Columns[1].
dataGridView1.Columns[2].
dataGridView1.Columns[3].
}
public Form3()
{
InitializeComponent();
}
private void Form3_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
conn.ConnectionString = Form1.strcon;
cmd.CommandText = "insert into vidlic (FIO,tipor,tiplic, srok) values('" + textBox1.Text + "','" + comboBox1.Text + "','" + textBox4.Text + "'," + textBox3.Text + ")";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
tablica();
}
private void button2_Click(object sender, EventArgs e)
{
conn.ConnectionString = Form1.strcon;
cmd.CommandText = "select * from vidlic where FIO='" + textBox1.Text + "'";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
rdr = cmd.ExecuteReader();
rdr.Read();
comboBox1.Text = rdr.GetString(1);
textBox4.Text = rdr.GetString(2);
textBox3.Text = rdr.GetInt32(3).ToString();
conn.Close();
tablica();
}
private void button3_Click(object sender, EventArgs e)
{
conn.ConnectionString = Form1.strcon;
cmd.CommandText = "delete from vidlic where FIO = '" + textBox1.Text + "'";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
tablica();
}
private void button4_Click(object sender, EventArgs e)
{
conn.ConnectionString = Form1.strcon;
cmd.CommandText = "select * from vidlic";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteReader();
conn.Close();
tablica();
}
}
}namespace Kursovik
{
public partial class Form4 : Form
{
SqlConnection conn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
SqlDataReader rdr;
public void tablica()
{
conn.ConnectionString = Form1.strcon;
SqlDataAdapter da = new SqlDataAdapter("select * from neodok", conn);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt.DefaultView;
dataGridView1.Columns[0].
dataGridView1.Columns[1].
dataGridView1.Columns[2].
dataGridView1.Columns[3].
}
public Form4()
{
InitializeComponent();
}
private void Form4_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
conn.ConnectionString = Form1.strcon;
cmd.CommandText = "insert into neodok (FIO,medzak,foto,datasdachi) values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox4.Text + "','" + textBox3.Text + "')";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
tablica();
}
private void button2_Click(object sender, EventArgs e)
{
conn.ConnectionString = Form1.strcon;
cmd.CommandText = "select * from neodok where FIO= '" + textBox1.Text + "'";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
rdr = cmd.ExecuteReader();
rdr.Read();
textBox2.Text = rdr.GetString(1);
textBox4.Text = rdr.GetString(2);
textBox3.Text = rdr.GetDateTime(3).
conn.Close();
tablica();
}
private void button3_Click(object sender, EventArgs e)
{
conn.ConnectionString = Form1.strcon;
cmd.CommandText = "select * from neodok where FIO='" + textBox1.Text+"'";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
rdr = cmd.ExecuteReader();
if (rdr.Read())
{
conn.Close();
cmd.CommandText = "delete from neodok where FIO = '" + textBox1.Text+"'";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
tablica();
}
}
private void button4_Click(object sender, EventArgs e)
{
conn.ConnectionString = Form1.strcon;
cmd.CommandText = "select * from neodok";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteReader();
conn.Close();
tablica();
}
}
} }
namespace Kursovik
{
public partial class Form5 : Form
{
SqlConnection conn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
SqlDataReader rdr;
public void tablica()
{
conn.ConnectionString = Form1.strcon;
SqlDataAdapter da = new SqlDataAdapter("select * from prayslist", conn);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt.DefaultView;
dataGridView1.Columns[0].
dataGridView1.Columns[1].
dataGridView1.Columns[2].
}
public Form5()
{
InitializeComponent();
}
private void Form5_Load(object sender, EventArgs e)
{
}
private void label3_Click(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
conn.ConnectionString = Form1.strcon;
cmd.CommandText = "insert into prayslist (oru,xar,cena) values('" + textBox1.Text + "','" + textBox2.Text + "'," + textBox3.Text + ")";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
tablica();
}
private void button2_Click(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
conn.ConnectionString = Form1.strcon;
cmd.CommandText = "select * from prayslist where oru= '" + textBox1.Text + "'";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
rdr = cmd.ExecuteReader();
if (rdr.Read())
{
conn.Close();
cmd.CommandText = "delete from prayslist where oru= '" + textBox1.Text + "'";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
tablica();
}
else MessageBox.Show("Запись с таким кодом не существует");
}
private void button4_Click(object sender, EventArgs e)
{
conn.ConnectionString = Form1.strcon;
cmd.CommandText = "select * from prayslist";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteReader();
conn.Close();
tablica();
}
private void button5_Click(object sender, EventArgs e)
{
string k = "";
string val;
string sAppProgID = "Excel.Application";
// Получаем ссылку на интерфейс IDispatch
Type tExcelObj = Type.GetTypeFromProgID(
// Запускаем Excel
object oExcel = Activator.CreateInstance(
object oWorkbooks = oExcel.GetType().InvokeMember(
//Создаем новую книгу
object[] args = new object[2];
args[0] = "d:\\1\\1.xls";
args[1] = true;
object oWorkbook = oWorkbooks.GetType().
object oWorksheets = oWorkbook.GetType().
//Задаем порядковый номер страницы - 1
object[] args1 = new object[1];
args1[0] = 1;
// Получаем ссылку на эту страницу
object oWorksheet = oWorksheets.GetType().
object oRange = oWorksheet.GetType().
int i = 0;
for (i = 0; i < dataGridView1.RowCount - 1; i++)

- Оружие в криминалистике: понятие и классификация
- Оружие и вооружение сарматов
- Оружие как пердмет и средство совершение преступления
- Оружие Пушкина
- О русской революции
- Орфографическая пропедевтика в период обучения грамоте (образовательная модель «Перспектива»)
- Орфография и ее значение при создании документов
- Орта мектептерде оқушылардың дене мәдениетін қалыптастыру
- Орта мектептерде оқушылардың дене мәдениетін қалыптастыру
- Орташа жалақыны есептеу тәртібі
- Орташа жалақыны есептеу тәртібі
- Ортогональные полиномы Лежандра и Чебышева
- Ортогональные полиномы Чебышева
- Оружейные выставки