
Курсач технологии программированияV2
.pdf
Оформление заказа: пользователь добавляет выбранные позиции в корзину и оформляет заказ.
Администратор:
Добавление позиций: администратор добавляет новые позиции в систему,
предоставляя необходимую информацию, такую как название, описание, цена и т.д.
Удаление позиций: администратор удаляет позиции из системы, которые больше не доступны или не актуальны.
Просмотр списка заказов: администратор просматривает список всех оформленных заказов, чтобы отслеживать и обрабатывать их.
2.3 Разработка модели IDEF0
IDEF0: AS-IS:
Рисунок 3 – Диаграмма IDEF0: AS-IS.
КП-09.03.02-11-638-ПЗ
Изм. Лист № докум. Подп. |
Дата |
Лист
12

На рисунке 3 представлена модель предоставления услуги доставки еды в текущем состоянии. В рамках этой схемы оформление заказа начинается с входящих данных, которые представляют собой выбор блюд в меню, которые клиент хочет заказать.
Управление процессом оформления заказа осуществляется на основе меню заведения, которое включает в себя все доступные блюда и их цены. Механизмами для оформления заказа служат посетители, которые выбирают блюда из меню, и
персонал заведения, который принимает и обрабатывает заказы.
После того, как клиент выбрал блюда и оформил заказ, выходными данными является ожидание получения заказа. Это означает, что заказ клиента принят и находится в процессе обработки, и клиент ждет, когда его заказ будет готов для доставки
IDEF0: TO BE:
Рисунок 4 – Диаграмма IDEF0: TO BE.
На рисунке 4 представлена система предоставления услуги доставки еды,
состоящую из трех основных этапов: приема заказа, подготовки заказа и доставки заказа.
|
|
|
|
|
|
Лист |
|
|
|
|
|
КП-09.03.02-11-638-ПЗ |
|
|
|
|
|
|
13 |
|
Изм. |
Лист |
№ докум. |
Подп. |
Дата |
|
|
|
|

Этап "Прием заказа" начинается с входящих данных в виде заказа клиента.
Управление этим процессом осуществляется на основе политик компании и меню,
доступного для заказа. Механизмами для приема заказа служат мобильное приложение и система обработки заказов. После приема заказа, система переходит к этапу "Подготовка заказа".
На этапе "Подготовка заказа" входящими данными являются детали заказа,
полученные на предыдущем этапе. Управление процессом подготовки заказа основывается на рекомендациях по приготовлению блюд. Механизмами для подготовки заказа служат кухня и сотрудники доставки, которые готовят заказ согласно полученным деталям.
После того, как заказ готов, система переходит к этапу "Доставка заказа".
Входящими данными на этом этапе является готовый заказ. Управление процессом доставки основывается на адресе доставки, указанном клиентом при оформлении заказа. Механизмами для доставки заказа служат сотрудники доставки, которые доставляют заказ клиенту.
Выходными данными на этапе является доставленный заказ, что означает успешное завершение процесса доставки еды клиенту.
2.4 Разработка интерфейса приложения
Перечень используемых элементов управления, которые принимали участие в реализации интерфейса приложения.
|
|
|
|
|
|
Лист |
|
|
|
|
|
КП-09.03.02-11-638-ПЗ |
|
|
|
|
|
|
14 |
|
Изм. |
Лист |
№ докум. |
Подп. |
Дата |
|
|
|
|

Рисунок 5 – Интерфейс «Авторизация».
1, 2 – EditText
4, 5 - Button
|
|
|
|
|
|
Лист |
|
|
|
|
|
КП-09.03.02-11-638-ПЗ |
|
|
|
|
|
|
15 |
|
Изм. |
Лист |
№ докум. |
Подп. |
Дата |
|
|
|
|

Рисунок 6 – Интерфейс «Регистрация».
1-4 – EditText
5 – Button
Рисунок 7 – Интерфейс «Главная страница».
1-3 - Button
|
|
|
|
|
|
Лист |
|
|
|
|
|
КП-09.03.02-11-638-ПЗ |
|
|
|
|
|
|
16 |
|
Изм. |
Лист |
№ докум. |
Подп. |
Дата |
|
|
|
|

Рисунок 8 – Интерфейс «Меню»
1 - ListView
Рисунок 9 – Интерфейс «Позиция»
1-3 – TextView
КП-09.03.02-11-638-ПЗ
Изм. Лист № докум. Подп. |
Дата |
Лист
17

4 – Button
Рисунок 10 – Интерфейс «Заказ»
1-4 – TextView
Рисунок 11 – Интерфейс «Корзина»
1 – ListView
КП-09.03.02-11-638-ПЗ
Изм. Лист № докум. Подп. |
Дата |
Лист
18

2-3 – TextView
4 - CheckBox
2.5. Разработка структуры информационной системы
Рисунок 12 – Структура информационной системы.
2.6 Разработка объектов базы данных для обеспечения работы
отдельных подсистем и функций приложения
Для обеспечения работы отдельных подсистем и функций приложения необходимо разработать соответствующие объекты базы данных. Для её создания воспользуемся программой Microsoft SQL Server Management Studio. База данных будет состоять из четырех таблиц: menu_table, order_table, cart_table и user_table.
|
|
|
|
|
|
Лист |
|
|
|
|
|
КП-09.03.02-11-638-ПЗ |
|
|
|
|
|
|
19 |
|
Изм. |
Лист |
№ докум. |
Подп. |
Дата |
|
|
|
|

Каждая из этих таблиц будет содержать набор столбцов, соответствующих определенным атрибутам данных.
Рисунок 13 – Структура информационной системы
2.7 Разработка программных модулей
Класс «LoginActivity»:
public class LoginActivity extends AppCompatActivity { public static final String PREFS_NAME = "MyPrefs"; public static final String USER_ID_KEY = "userId"; Connection connection;
Map<String, UserInfo> userCredentials = new HashMap<>(); @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login_page); EditText login = findViewById(R.id.editTextLogin);
EditText password = findViewById(R.id.editTextPassword); Button loginButton = findViewById(R.id.login_button); Button regButton = findViewById(R.id.register_button);
|
|
|
|
|
|
Лист |
|
|
|
|
|
КП-09.03.02-11-638-ПЗ |
|
|
|
|
|
|
20 |
|
Изм. |
Лист |
№ докум. |
Подп. |
Дата |
|
|
|
|

SQL_Controller sql_con = new SQL_Controller(); connection = sql_con.connectionClass();
try {
String sqlStatement = "SELECT LOGIN, STATUS, ID FROM [deliveryDB].[dbo].[user_table]";
PreparedStatement ps = connection.prepareStatement(sqlStatement); ResultSet set = ps.executeQuery();
while (set.next()) {
String loginStr = set.getString("LOGIN"); String status = set.getString("STATUS"); int id = set.getInt("ID");
userCredentials.put(loginStr, new UserInfo(status, id));
}
} catch (Exception e) { Log.e("Error: ", e.getMessage());
}
loginButton.setOnClickListener(view -> {
String enteredLogin = login.getText().toString();
String enteredPassword = password.getText().toString();
if (enteredLogin.isEmpty() || enteredPassword.isEmpty()) { Toast.makeText(LoginActivity.this, "Please fill in all fields",
Toast.LENGTH_SHORT).show(); } else {
UserInfo userInfo = userCredentials.get(enteredLogin); if (userInfo == null) {
Toast.makeText(LoginActivity.this, "User does not exist", Toast.LENGTH_SHORT).show();
login.setText("");
password.setText("");
}else {
//Save the user's ID in SharedPreferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putInt(USER_ID_KEY, userInfo.getId());
editor.apply(); Intent intent;
switch (userInfo.getStatus()) { case "user":
intent = new Intent(LoginActivity.this, MainActivity.class); break;
case "admin":
intent = new Intent(LoginActivity.this, AdminMenuActivity.class); break;
default:
Toast.makeText(LoginActivity.this, "Invalid user", Toast.LENGTH_SHORT).show();
login.setText("");
password.setText("");
return;
|
|
|
|
|
|
Лист |
|
|
|
|
|
КП-09.03.02-11-638-ПЗ |
|
|
|
|
|
|
21 |
|
Изм. |
Лист |
№ докум. |
Подп. |
Дата |
|
|
|
|