Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсач технологии программированияV2

.pdf
Скачиваний:
4
Добавлен:
09.11.2024
Размер:
826.46 Кб
Скачать

}

startActivity(intent);

}

}

});

regButton.setOnClickListener(view -> {

Intent intent = new Intent(LoginActivity.this, RegisterActivity.class); startActivity(intent);

});

}

private static class UserInfo { private final String status; private final int id;

public UserInfo(String status, int id) { this.status = status;

this.id = id;

}

public String getStatus() { return status;

}

public int getId() { return id;

}

}

}

Данный класс отвечает за вход пользователя в систему

Класс «MenuActivity»:

public class MenuActivity extends AppCompatActivity {

private String getDescriptionFromDatabase(String itemName) { String description = "";

try {

SQL_Controller sql_con = new SQL_Controller(); Connection connection = sql_con.connectionClass();

String sqlStatement = "SELECT * FROM [deliveryDB].[dbo].[menu_table] WHERE NAME

= ?";

PreparedStatement ps = connection.prepareStatement(sqlStatement); ps.setString(1, itemName);

ResultSet set = ps.executeQuery(); if (set.next()) {

description = set.getString("DESCRIPTION");

}

set.close();

ps.close();

connection.close(); } catch (Exception e) {

Log.e("Error: ", e.getMessage());

}

 

 

 

 

 

 

Лист

 

 

 

 

 

КП-09.03.02-11-638-ПЗ

 

 

 

 

 

 

22

Изм.

Лист

№ докум.

Подп.

Дата

 

 

 

return description;

}

private String getPriceFromDatabase(String itemName) { String price = "";

try {

SQL_Controller sql_con = new SQL_Controller(); Connection connection = sql_con.connectionClass();

String sqlStatement = "SELECT * FROM [deliveryDB].[dbo].[menu_table] WHERE NAME

= ?";

PreparedStatement ps = connection.prepareStatement(sqlStatement); ps.setString(1, itemName);

ResultSet set = ps.executeQuery(); if (set.next()) {

price = set.getString("PRICE");

}

set.close();

ps.close();

connection.close(); } catch (Exception e) {

Log.e("Error: ", e.getMessage());

}

return price;

}

private String getIDFromDatabase(String itemName) { String id = "";

try {

SQL_Controller sql_con = new SQL_Controller(); Connection connection = sql_con.connectionClass();

String sqlStatement = "SELECT * FROM [deliveryDB].[dbo].[menu_table] WHERE NAME

= ?";

PreparedStatement ps = connection.prepareStatement(sqlStatement); ps.setString(1, itemName);

ResultSet set = ps.executeQuery(); if (set.next()) {

id = set.getString("ID");

}

set.close();

ps.close();

connection.close(); } catch (Exception e) {

Log.e("Error: ", e.getMessage());

}

return id;

}

Connection connection; @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu_page);

 

 

 

 

 

 

Лист

 

 

 

 

 

КП-09.03.02-11-638-ПЗ

 

 

 

 

 

 

23

Изм.

Лист

№ докум.

Подп.

Дата

 

 

 

ListView listView = findViewById(R.id.menu_list); SQL_Controller sql_con = new SQL_Controller(); connection = sql_con.connectionClass();

try {

String sqlStatement = "Select * from [deliveryDB].[dbo].[menu_table]"; Statement smt = connection.createStatement();

ResultSet set = smt.executeQuery(sqlStatement); ArrayList<String> list = new ArrayList<String>(); while (set.next()) {

String str = set.getString("NAME"); list.add(str);

}

ArrayAdapter arrayAdapter = new ArrayAdapter(MenuActivity.this, android.R.layout.simple_list_item_1, list);

listView.setAdapter(arrayAdapter);

connection.close();

} catch (Exception e) { Log.e("Error: ", e.getMessage());

}

listView.setOnItemClickListener((parent, view, position, id) -> {

String selectedItemName = (String) parent.getItemAtPosition(position);

String selectedItemDescription = getDescriptionFromDatabase(selectedItemName); String selectedItemPrice = getPriceFromDatabase(selectedItemName);

String selectedItemID = getIDFromDatabase(selectedItemName); Intent intent = new Intent(MenuActivity.this, PositionInfo.class); intent.putExtra("selected_item_name", selectedItemName); intent.putExtra("selected_item_description", selectedItemDescription); intent.putExtra("selected_item_price", selectedItemPrice); intent.putExtra("selected_item_id", selectedItemID); startActivity(intent);

});

}

}

public class MenuActivity extends AppCompatActivity {

private String getDescriptionFromDatabase(String itemName) { String description = "";

try {

SQL_Controller sql_con = new SQL_Controller(); Connection connection = sql_con.connectionClass();

String sqlStatement = "SELECT * FROM [deliveryDB].[dbo].[menu_table] WHERE NAME

= ?";

PreparedStatement ps = connection.prepareStatement(sqlStatement); ps.setString(1, itemName);

ResultSet set = ps.executeQuery(); if (set.next()) {

description = set.getString("DESCRIPTION");

}

set.close();

 

 

 

 

 

 

Лист

 

 

 

 

 

КП-09.03.02-11-638-ПЗ

 

 

 

 

 

 

24

Изм.

Лист

№ докум.

Подп.

Дата

 

 

 

ps.close();

connection.close(); } catch (Exception e) {

Log.e("Error: ", e.getMessage());

}

return description;

}

private String getPriceFromDatabase(String itemName) { String price = "";

try {

SQL_Controller sql_con = new SQL_Controller(); Connection connection = sql_con.connectionClass();

String sqlStatement = "SELECT * FROM [deliveryDB].[dbo].[menu_table] WHERE NAME

= ?";

PreparedStatement ps = connection.prepareStatement(sqlStatement); ps.setString(1, itemName);

ResultSet set = ps.executeQuery(); if (set.next()) {

price = set.getString("PRICE");

}

set.close();

ps.close();

connection.close();

}catch (Exception e) { Log.e("Error: ", e.getMessage());

}

return price;

}

private String getIDFromDatabase(String itemName) { String id = "";

try {

SQL_Controller sql_con = new SQL_Controller(); Connection connection = sql_con.connectionClass();

String sqlStatement = "SELECT * FROM [deliveryDB].[dbo].[menu_table] WHERE NAME

= ?";

PreparedStatement ps = connection.prepareStatement(sqlStatement); ps.setString(1, itemName);

ResultSet set = ps.executeQuery(); if (set.next()) {

id = set.getString("ID");

}

set.close();

ps.close();

connection.close(); } catch (Exception e) {

Log.e("Error: ", e.getMessage());

}

return id;

}

 

 

 

 

 

 

Лист

 

 

 

 

 

КП-09.03.02-11-638-ПЗ

 

 

 

 

 

 

25

Изм.

Лист

№ докум.

Подп.

Дата

 

 

 

Connection connection; @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu_page);

ListView listView = findViewById(R.id.menu_list); SQL_Controller sql_con = new SQL_Controller(); connection = sql_con.connectionClass();

try {

String sqlStatement = "Select * from [deliveryDB].[dbo].[menu_table]"; Statement smt = connection.createStatement();

ResultSet set = smt.executeQuery(sqlStatement); ArrayList<String> list = new ArrayList<String>(); while (set.next()) {

String str = set.getString("NAME"); list.add(str);

}

ArrayAdapter arrayAdapter = new ArrayAdapter(MenuActivity.this, android.R.layout.simple_list_item_1, list);

listView.setAdapter(arrayAdapter);

connection.close();

}catch (Exception e) { Log.e("Error: ", e.getMessage());

}

listView.setOnItemClickListener((parent, view, position, id) -> {

String selectedItemName = (String) parent.getItemAtPosition(position);

String selectedItemDescription = getDescriptionFromDatabase(selectedItemName); String selectedItemPrice = getPriceFromDatabase(selectedItemName);

String selectedItemID = getIDFromDatabase(selectedItemName); Intent intent = new Intent(MenuActivity.this, PositionInfo.class); intent.putExtra("selected_item_name", selectedItemName); intent.putExtra("selected_item_description", selectedItemDescription); intent.putExtra("selected_item_price", selectedItemPrice); intent.putExtra("selected_item_id", selectedItemID); startActivity(intent);

});

}

}

Данный класс отвечает за отображение позиций меню.

Класс «CartActivity»:

public class CartActivity extends AppCompatActivity { private ArrayList<CartItem> cartItems;

private CartAdapter cartAdapter; @Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

 

 

 

 

 

 

Лист

 

 

 

 

 

КП-09.03.02-11-638-ПЗ

 

 

 

 

 

 

26

Изм.

Лист

№ докум.

Подп.

Дата

 

 

 

super.onCreate(savedInstanceState); setContentView(R.layout.activity_cart_page);

SharedPreferences settings = getSharedPreferences(LoginActivity.PREFS_NAME, 0); int userId = settings.getInt(LoginActivity.USER_ID_KEY, -1);

cartItems = new ArrayList<>();

cartAdapter = new CartAdapter(this, cartItems); ListView listView = findViewById(R.id.cartListView); listView.setAdapter(cartAdapter);

listView.setOnItemClickListener((parent, view, position, id) -> { CartItem cartItem = cartItems.get(position); cartItem.setSelected(!cartItem.isSelected()); cartAdapter.notifyDataSetChanged();

}); try {

SQL_Controller sql_con = new SQL_Controller(); Connection connection = sql_con.connectionClass();

String sqlStatement = "SELECT m.NAME, m.PRICE, c.QUANTITY FROM dbo.cart_table c JOIN dbo.menu_table m ON c.POSITION_ID = m.ID WHERE c.USER_ID = ?";

PreparedStatement ps = connection.prepareStatement(sqlStatement); ps.setString(1, String.valueOf(userId));

ResultSet set = ps.executeQuery(); while (set.next()) {

String name = set.getString("NAME"); int price = set.getInt("PRICE");

int quantity = set.getInt("QUANTITY"); cartItems.add(new CartItem(name, price, quantity));

}

set.close();

ps.close();

connection.close();

cartAdapter.notifyDataSetChanged();

}catch (Exception e) { Log.e("Error: ", e.getMessage());

}

Button orderSubmit = findViewById(R.id.orderButton); orderSubmit.setOnClickListener(view -> {

ArrayList<CartItem> selectedItems = new ArrayList<>(); for (CartItem item : cartItems) {

if (item.isSelected()) { selectedItems.add(item);

}

}

int totalPrice = 0;

for (CartItem item : selectedItems) {

totalPrice += item.getPrice() * item.getQuantity();

}

String address = "User's address"; saveOrderToServer(userId, totalPrice, address);

Intent intent = new Intent(CartActivity.this, OrderActivity.class);

 

 

 

 

 

 

Лист

 

 

 

 

 

КП-09.03.02-11-638-ПЗ

 

 

 

 

 

 

27

Изм.

Лист

№ докум.

Подп.

Дата

 

 

 

intent.putExtra("selectedItems", selectedItems); intent.putExtra("totalPrice", totalPrice); intent.putExtra("address", address); startActivity(intent);

});

}

private void saveOrderToServer(int userId, int totalPrice, String address) { try {

SQL_Controller sql_con = new SQL_Controller(); Connection connection = sql_con.connectionClass();

String sqlStatement = "INSERT INTO dbo.order_table (USER_ID, ORDER_STATUS, ORDER_ADDRESS, TOTAL_PRICE, ORDER_DATE) VALUES (?, ?, ?, ?, GETDATE())";

PreparedStatement ps = connection.prepareStatement(sqlStatement); ps.setInt(1, userId);

ps.setString(2, "Pending"); ps.setString(3, address); ps.setInt(4, totalPrice); ps.executeUpdate(); ps.close(); connection.close();

}catch (Exception e) { Log.e("Error: ", e.getMessage());

}

}

}

Данный класс отвечает за отображение корзины

2.8 Разработка руководства пользователя

Руководство:

1.Для того, чтобы начать взаимодействие с приложение, его следует запустить.

2.После запуска перед вами появится окно авторизации (рисунок 14). В

этом окне вам нужно ввести логин и пароль если вы уже зарегистрированы в приложении. Если у вам нет аккаунта, вы должны перейти на страницу регистрации, нажав на кнопку «Регистрация»

 

 

 

 

 

 

Лист

 

 

 

 

 

КП-09.03.02-11-638-ПЗ

 

 

 

 

 

 

28

Изм.

Лист

№ докум.

Подп.

Дата

 

 

 

Рисунок 14 — Авторизация

3. Для регистрации введите свои данные в нужные поля и нажмите кнопку

«Зарегистрироваться»

 

 

 

 

 

 

Лист

 

 

 

 

 

КП-09.03.02-11-638-ПЗ

 

 

 

 

 

 

29

Изм.

Лист

№ докум.

Подп.

Дата

 

 

 

Рисунок 15 — Регистрация

4. Чтобы добавить позицию в корзину нажмите на позицию и затем нажмите

кнопку «Добавить в заказ»

 

 

 

 

 

 

Лист

 

 

 

 

 

КП-09.03.02-11-638-ПЗ

 

 

 

 

 

 

30

Изм.

Лист

№ докум.

Подп.

Дата

 

 

 

Рисунок 16 — Добавление позиции в корзину

5. Чтобы сформировать заказ перейдите в корзину затем выберите нужные вам позиции и нажмите кнопку «Заказать».

Рисунок 17 – Корзина

 

 

 

 

 

 

Лист

 

 

 

 

 

КП-09.03.02-11-638-ПЗ

 

 

 

 

 

 

31

Изм.

Лист

№ докум.

Подп.

Дата