COSC2391Further Programming

news/2024/9/20 15:45:22/文章来源:https://www.cnblogs.com/WX-codinghelp/p/18422625

COSC2391 Further Programming / COSC1295 Advanced Programming

Assignment 2 - Semester 2 2024

1. Introduction

This assignment is designed to:

•    Evaluate your ability to develop GUI applications using JavaFX.

•    Evaluate your skills in storing persistent copy of data.

• Test your knowledge to implement advanced OO design patterns.

This is an individual assignment. Your final submission is worth 42%; an in-lab milestone check in Week 10 is worth a further 3%; a final post-submission interview is worth 5%; giving a total of 50% for Assignment 2.

2. Academic Integrity (more)

The submitted assignment must be your own work. No marks will be awarded for any work which is not created by you.

Plagiarism is treated very seriously at RMIT. Plagiarism includes copying code directly from other students (or enables such copying), the internet, the output of AI systems, or other resources without proper  reference. Sometimes, students study and work on assignments together and submit similar files which may be  regarded as plagiarism. Please note that you should always create your own assignment even if you have very similar ideas. Plagiarism- detection tools will be used to check all submissions. Penalties may be applied in cases of plagiarism.

3. Background

This assignment extends Assignment 1. You will build a GUI application for The Reading Room bookstore. The bookstore sells the following books (all are physical copies):

BOOK TITLE AUTHORS # PHYSICAL COPIES PRICE (AUD) # SOLD COPIES

Absolute Java Savitch 10 50 142

JAVA: How to Program Deitel and Deitel 100 70 475

Computing Concepts with JAVA 8 Essentials Horstman 500 89 60

Java Software Solutions Lewis and Loftus 500 99 12

Java Program Design Cohoon and Davidson 2 29 86

Clean Code Robert Martin 100 45 300

Gray Hat C# Brandon Perry 300 68 178

Python Basics David Amos 1000 49 79

Bayesian Statistics The Fun Way Will Kurt 600 42 155

4. Task Specifications

Basic functional requirements are listed below.

• The application can have many users.

• Each user can create a profile, with a unique username, password, and first and last name.

• Once the username and password are created, the user can log in.

•    Each user is shown a dashboard after login. The dashboard should display a personalized welcoming message that addresses the user by name. The dashboard also displays the top 5 popular books in the bookstore. The top 5 books are identified based on the number

of sold copies.

• Each user can perform. the following actions:

o Edit profile (change first name/last name/password, username is not changeable)

o Add books to shopping cart. The program can guide the user to place an order by selecting books and specifying quantity. The program should allow the user to update  the  shopping  cart  (e.g.,  removing  books, 代 写COSC2391 Further Programming   updating  quantity)  before checking out. When there is a modification to the shopping cart, the program should verify the availability of stock and notify the user if any selected book is unavailable.

Example 1. Assume that there are 10 copies of “Absolute Java” available. A  user will get a warning message if he/she adds 11 copies of “Absolute Java” to shopping cart.

Example 2. Assume that there are 10 copies of “Absolute Java” available. User A adds 10 copies of “Absolute Java” to the shopping cart. User B also adds 2 copies of “Absolute Java” to the shopping cart. Both of them will NOT get a warning as long as they have not checked out.

Example 3. Assume that there are 10 copies of “Absolute Java” available.

User A adds 10 copies of “Absolute Java” to the shopping cart. User B also adds 2 copies of “Absolute Java” to the shopping cart. User B will get a warning message once user A checks out - the book “Absolute Java” is deemed as sold-out after user A checks out.

o Check out. A user will be notified of the total price before placing the order. Once confirmed by the user, proceed to payment, where you collect (fake) credit card information (card number, expiry date, and cvv). (Do not use real credit card numbers!) You will need to perform. simple validation to check (1) if the card number has 16 digits; (2) if the expiry date is a future date; (3) if cvv has 3 digits. For simplicity, you can assume the payment will be successful. Once an order is placed, a unique order number will be generated and assigned.

o View all orders. The user can view the following details of all historical orders: order numbers, date and time the order was placed, the total price of each order, and books purchased along with their respective quantities. The orders should be displayed in reverse chronological order, with the most recent order appearing first.

o Export all orders. The user should be able to export historical orders, including the date & time of the orders, total price, and the purchased books with their quantities, to a file. The user can select specific orders for export, choose the file destination, and specify the file name. The exported file should be saved in CSV format.

o Log out.

•    The program has a special user that is the admin account. The account is initialized with the following information:

Username                Password                    First name                Last name

admin                     reading_admin                    Admin                      Admin

• The admin user can perform. the following actions:

o Once log in, the admin user should be displayed with an admin dashboard, showing a welcome message to the admin user.

o View the stock of all books. The program can list all the books in the bookstore. It   will display the detailed information of each book, including the title, authors, price, the number of sold copies, and the remaining stock.

o Update the stock of a book. The admin user can update (increase or decrease) the number of copies available for a selected book.

•    A non-admin user should not be permitted to perform. the functionalities of an admin user, and vice versa. For example, a normal user should not be able to update the stock of books.

5. Assessment Details

This assignment is structured in three milestones: in-lab milestone check in week 10, full program submission in week 12, and post-submission interview in week 14. It is recommended for you to follow the stages below to incrementally build the GUI application. But you can also plan the work in your own way.

5.1 Setup

You will use GitHub to store program code in this assignment. To get started, accept the assignment invitation by clicking this link:https://classroom.github.com/a/TTIbzQF1 . You will need to create a GitHub  account  if  don’t  have.  After  accepting  this  invitation,  create  a  git  repository  in FurtherJavaProgramming-classroom-2450. Make your repository private. Otherwise, your repository will be considered as plagiarism.

Instructions to create a git repository and upload your project to GitHub can be found in Work with GitHub and GitHub Classroom.pdf from Canvas -> Assignment 2. Throughout the program development, you will need to make regular commitments to GitHub to facilitate transparency in the development process.

5.2 Part A (In-Lab milestone – Week 10)

This milestone aims to assess your ability to define user interfaces for GUI application. For this milestone, you will prepare a documentation of your UI design using Scene Builder. While you don’t need to strictly follow this design as you progress to later stages, you should propose a UI design that reflects your current understanding to the best of your ability at this stage.

5.3 Part B

Following Part A, you will work on the frontend and backend part of the application. You will implement the functionalities described in the task specification.

You will connect the front-end and back-end to build a functional program. You will use JDBC to store program data, so that the application can be restarted in the same state it was in the end of the previous execution. You will incorporate OO principles to design and optimize classes. You will also implement OO design pattern where applicable.

5.4 Part C (Full program submission – Week 12)

You will implement meaningful unit tests to test the functionalities of key classes in your program. See marking rubric for details.

5.5 Part D (Post-submission interview – Week 14)

You will be interviewed after program submission. During the interview, you will demonstrate the functionality and GUI design of your program. In addition, it is crucial for you to demonstrate your programming skills by clearly explaining how you design the program and implement different functionalities.

6. General Requirements

This section summarizes the general requirements of Assignment 2 in four aspects: (1) GUI; (2) Functionality; (3) Program Design; (4) Programming Challenge; and (5) Others. Please refer to  Canvas -> Assignment 2 -> Rubric for detailed mark allocation.

Important notes: Marks for GUI, Functionality, and Programming Challenge are checked during the post-submission interview. If you do not attend the final interview, you will be awarded ZERO mark for these sections. You will also get mark deductions if you cannot EXPLAIN how you implement the functionalities.

6.1 GUI

•    Your program should include appropriate JavaFX components to make the application easy- to-navigate.  For  example,  each  window  should  have  a  window  title;  menu  options  (if applicable) are selected from a menu bar.

•    Your program should respond clearly to every user’s action. For example, if the user types a wrong password, the login window should display a clear error message and ask the user to type again.

•    Your program should provide visual consistency. Avoid using different styles and labels for similar elements on different windows of the application.

• The UI design of your program should serve the purpose of the application.

6.2 Functionality

All functions required by specification are implemented correctly covering different cases that might happen during the usage of the program.

6.3 Program Design

Appropriate choice of data structures that serves the purpose of the application. Class designs that adhere to the SOLID principles.

• You are required to follow MVC pattern to connect the frontend with the backend.

•    You are required to use one of design patterns such as Singleton pattern, besides the MVC pattern.

•    You are required to implement at least one interface or abstract class to demonstrate your understanding of OO principles.

•    You  are required to apply SOLID principles when appropriate in order to enhance the maintainability and extensibility of your program, decrease coupling amongst classes, and minimize code repetition across classes.

•    You are required to choose appropriate data structures to enhance the running efficiency of the program.

6.4 Programming Challenge

You will be asked two questions about how to extend your program to either achieve a certain new functionality or change the behaviour of an existing functionality. An example question is as follows:

•    Suppose the book "Clean Code" has become very popular recently and you need to set a limit on the maximum number of copies that can be purchased by each customer. How will you implement it?

To achieve the functionality described in the question, you should clearly identify which parts of your program, both frontend and backend, require modification. Additionally, you should explain how each component will be updated and how these changes will implement the desired functionality.

6.5 Others

•    High source code quality with adequately commented and properly indented codes and appropriate class/method/variable names.

• Regular commitments to GitHub to show the progress of program development.

• Implement at least 5 meaningful unit tests for one class that you choose.

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/800565.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#使用HttpWebRequest读取网站内容遭遇503错误

本人多年编程小白,天生编程白痴体质。大家莫见笑。 自己用C#写了一段代码,使用HttpWebRequest,通过SOHU的API接口获取指定股票的交易信息。 该段代码一直运行正常。最近开始报错。 详细信息如下: System.Net.WebException HResult=0x80131509 Message=远程服务器返回错误: (…

算法随笔——wqs二分

学习链接 学习链接 应用条件选择恰好 \(x\) 个物品,求最优值 设 \(x\) 对应最优值 \(f_x\) ,\((x,f_x)\) 在图像上呈现为凸包。 无数量限制问题简单可做问题转化 有 \(n\) 个物品,恰好选 \(m\) 个,计算最优值。 做法例题 模版题:P2619

modbus设备数据 转 profinet IO项目案例

目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 设置网关采集MODBUS从站数据 2 5 用PROFINET IO协议转发数据 8 6 案例总结 10 1 案例说明设置网关采集Modbus设备数据 把采集的数据转成profinet IO协议转发给其他系统。2 VFBOX网关工作原理 VFBOX网关是协议转换网关,…

WPF开发 direct3d11 调试报错

环境:VS2022 WPF Win11 过程:准备调试d3d11着色器转换nv12->rgb的过程 报错信息:DXGI_ERROR_SDK_COMPONENT_MISSING 应用程序请求的操作依赖于已缺失或不匹配的 SDK 组件。 解决方案::需要在自己电脑中进行设置 【设置】-【系统】-【可选功能】-【查看功能】-【图形工具…

Cloudera安装指南:打造你的大数据基础环境

Cloudera manage系统环境准备、基础环境安装、集群部署以及应用组件安装等全方位的技术运维内容。无论您是初学者还是资深工程师,都能在这里找到适合自己的学习资料和实战经验。我们致力于为您提供最新、最全面的Cloudera大数据技术运维知识,帮助您轻松应对各种技术挑战。Clo…

uni-app上架ios语言设置

客户反馈了一个问题,日文的应用上架后在商店中,却显示了其他语言,解决方案如下 1.添加要设置的语言2.最重要的一步,在 app-plus 中添加下述代码 name 是app名称"app-plus" : {"locales" : {"ja" : {"name" : "xxx","…

【算法】topk之字节题

1. 合并两个有序列表 🔗 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1:输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 = [], l2 = [] 输出:[] 示例 3: 输入:l1 = [], l2 = [0] …

flink 启动Job加载外部jar都有哪些方法?

flink 启动Job加载外部jar都有哪些方法 在 Apache Flink 版本中,启动 Job 时加载外部 Jar 包有几种不同的方法。这些方法允许用户引入自定义的 UDF(用户定义函数)或其他依赖项。以下是几种常见的方法: 1.使用 flink run 命令直接启动 你可以通过命令行工具 flink run 来指定…

切片器110-112

透视表切片器抓照片场景描述 针对产品汇总分析数据透视表,制做数据看板,样例如下所示:具体操作制作产品汇总分析数据透视表插入选项卡——勾选雇员——确定——插入选项卡——插入二维柱状图——将数据透视表右侧雇员拖拽到筛选字段——在空白单元格输入INDIRECT函数和MATCH…

探索未来智能:Moonshot AI 引领AI新纪元——M1超级模型

在人工智能的快速演进中,Moonshot AI再次站在了技术创新的前沿。推出M1超级模型,这是一款旨在突破现有AI能力极限的革命性产品。M1超级模型的诞生背景 随着数据量的爆炸性增长和计算能力的提升,AI模型正变得越来越复杂和强大。M1超级模型的诞生是对这一趋势的直接响应,它代…

VSCode配置STM32HAL库开发环境

经常用MDK Keil进行STM32程序开发,但用过jetbrain全家桶等现代IDE后,对keil复古的开发界面以及代码提示不是很喜欢,因此参照网络方法配置了stm32cubemx+vscode+cmake+ninja+gcc的开发环境1. 开发工具下载下载STM32CubeMX:https://www.st.com.cn/zh/development-tools/stm32…

Kubernetes-POD生成 java dump文件

目录背景配置钩子函数验证 背景 在今天的线上业务中,某服务频繁重启。经过排查日志和事件信息,确认是由于 OOM(Out of Memory)导致服务重启。为了方便研发团队定位 OOM 的具体原因,我们决定在 OOM 发生时自动生成内存快照(heap dump),供后续分析使用。 关于 OOM 的详细…