Case Study Practical Exercises | 案例分析实战演练

📚 Case Study Practical Exercises | 案例分析实战演练

In CCEA Year 9 Computing, a case study helps you connect separate computing topics into a real project. This article walks through a complete practical exercise based on a school library book‑log system. You will see how analysis, design, programming, testing and evaluation fit together, just as they would in a genuine computing task.

在CCEA九年级计算机课程中,案例分析能将分散的计算主题整合到一个真实项目中。本文以学校图书馆图书登记系统为例,带领你完成一次完整的实战演练。你将看到分析、设计、编程、测试和评估如何协同运作,就像面对真实计算任务一样。

1. Understanding the Problem | 理解问题

The librarian wants a digital system to record when a book is borrowed or returned. Every transaction must record the student’s name, the book title and the date. The system should warn if a book is already on loan. No formal software exists yet, so you are free to design a simple program that runs on the library computer.

图书管理员希望有一个数字系统来记录图书借出和归还的情况。每笔交易必须记录学生姓名、书名和日期。如果某本书已被借出,系统应发出警告。目前还没有现成软件,因此你可以自由设计一个在图书馆计算机上运行的简单程序。

2. Requirements Analysis | 需求分析

Before writing code, list what the system must do. Functional requirements: add a loan, remove a loan, search by book title, show all current loans. Non‑functional: the interface must be clear enough for non‑expert users, and the program should save data so that loans persist after closing. Inputs: student name, book title, date. Outputs: confirmation messages, warning pop‑ups, lists of loans.

在编写代码前,先列出系统必须做什么。功能需求:添加借阅记录、删除借阅记录、按书名搜索、显示所有当前借阅。非功能需求:界面必须清晰,让非专业用户也能使用;程序应保存数据,以便关闭后借阅记录仍存在。输入:学生姓名、书名、日期。输出:确认消息、警告弹窗、借阅清单。

3. Designing the Solution | 设计解决方案

A good design uses a structure diagram or flowchart. We decide to store each loan as a record with three fields: student, title, date. The main menu will have options: 1. Borrow book, 2. Return book, 3. View loans, 4. Save and exit. Pseudocode for borrowing: input student and title; check if title already in loans; if not, add new record; else show “Book already out”.

好的设计会使用结构图或流程图。我们决定将每条借阅记录存储为三个字段:学生、书名、日期。主菜单选项包括:1. 借书,2. 还书,3. 查看借阅,4. 保存并退出。借阅的伪代码:输入学生和书名;检查书名是否已在借阅列表中;若不在则添加新记录;否则显示“该书已借出”。

4. Algorithm Design | 算法设计

For the search feature, a linear search algorithm fits our small data set. When a user types a book title, the program loops through all records and returns the student name if found. Flowchart symbols: an input/output parallelogram for user entry, a decision diamond to test if title matches, and a process rectangle to display the result. The exit condition is reaching the end of the list.

在搜索功能中,线性搜索算法适合我们的小型数据集。当用户输入书名时,程序遍历所有记录,找到后返回学生姓名。流程图符号:用户输入用平行四边形,判断书名是否匹配用菱形,显示结果用矩形处理框。退出条件是遍历完整个列表。

5. Programming the Core Logic | 编写核心逻辑

Using Python, we can model a loan as a dictionary: {"student":"Alice","title":"The Hobbit","date":"2025-04-10"}. The loans list holds all active dictionaries. A def borrow(): function reads inputs, runs the duplicate check and appends to the list. A def return_book(): removes a matching entry. Each function prints a clear message so the user knows what happened.

使用Python时,我们可以将借阅记录建模为字典:{"student":"Alice","title":"The Hobbit","date":"2025-04-10"}。loans列表保存所有活跃字典。def borrow():函数读取输入,执行重复检查,然后追加到列表中。def return_book():移除匹配条目。每个函数都输出清晰的消息,让用户知道操作结果。

6. Testing and Debugging | 测试与调试

Test plans must cover normal, boundary and erroneous data. Normal: borrow an available book – expect success message. Boundary: try to borrow the same book twice – expect warning. Erroneous: leave the student name empty – the program should prompt again. Debugging strategies include printing variable values halfway through a loop or using a step‑through debugger if available in your IDE.

测试计划必须涵盖正常、边界和错误数据。正常:借阅一本可用的书——预期成功消息。边界:尝试两次借阅同一本书——预期警告。错误:学生姓名为空——程序应重新提示。调试策略包括在循环中间打印变量值,或者在IDE支持的情况下使用单步调试器。

7. User Interface Design | 用户界面设计

Even in a text‑based program, layout matters. Use clear headings, numbered menus, and consistent prompts. Example:

========== Library Book Log ==========
1. Borrow a book
2. Return a book
3. View all loans
4. Save & Exit
======================================

Avoid clutter and keep the language simple. For Year 9, a console interface is perfectly acceptable, but you could discuss how a GUI version with buttons and text fields would improve usability.

即使是文本式程序,布局也很重要。使用清晰的标题、编号菜单和一致的提示。示例:

========== 图书馆借阅登记 ==========
1. 借书
2. 还书
3. 查看所有借阅
4. 保存并退出
======================================

避免界面杂乱,语言保持简洁。对于九年级来说,控制台界面完全可以接受,但你也可以讨论带有按钮和文本字段的图形界面版本将如何提升可用性。

8. Data Representation and Storage | 数据表示与存储

Records can be saved to a CSV file so that data persists. Each line becomes: Alice,The Hobbit,2025-04-10. When the program starts, read the file and rebuild the loans list. This introduces file handling: open(), readlines(), write(). Discuss how a real system would use a database, but for a small case study a flat file is enough to demonstrate the principle.

记录可以保存到CSV文件中,以便数据持久化。每一行格式为:Alice,The Hobbit,2025-04-10。程序启动时,读取文件并重建loans列表。这引入了文件处理:open(), readlines(), write()。讨论实际系统会使用数据库,但对于小型案例分析来说,平面文件足以展示原理。

9. Cybersecurity Considerations | 网络安全考量

Even a small library system raises security questions. Who can access the data? Students should not see other students’ borrowing history. A simple password check before showing the full loan list adds a layer of protection. Also, the CSV file should not be stored in a public folder. Discuss the importance of input validation to prevent accidental or malicious entry of invalid data.

即使小型图书馆系统也会引发安全问题。谁能访问数据?学生不应该看到其他同学的借阅历史。在显示完整借阅清单前增加一个简单的密码检查,可以添加一层保护。此外,CSV文件不应存储在公共文件夹中。讨论输入验证的重要性,以防止意外或恶意输入无效数据。

10. Evaluation and Improvements | 评估与改进

After the prototype works, evaluate it against the original requirements. Does it meet all the functional needs? Is the interface easy enough? What would you improve? Possible upgrades: add a due‑date reminder, use a database instead of CSV, build a web interface for online access. Reflect on what you learned about the software development cycle and how you would approach a larger project.

原型运行后,对照最初的需求进行评估。它满足所有功能需要吗?界面是否足够简单?你会改进什么?可能升级:添加还书日期提醒,用数据库代替CSV,构建网页界面以支持在线访问。反思你在整个软件开发周期中学到了什么,以及将如何应对更大的项目。


11. Identifying Variables and Data Types | 识别变量与数据类型

In the code, each piece of data has a type. Student name is a string, book title is a string, date could be a string or a special date object. The loans list is a list of dictionaries. Choosing the right type matters because it determines what operations you can perform. For example, you cannot sort dates properly if they are stored as random‑format strings; however, for a basic Year 9 exercise, string dates are acceptable.

在代码中,每个数据都有类型。学生姓名是字符串,书名是字符串,日期可以是字符串或特殊日期对象。loans列表是字典组成的列表。选择正确的类型很重要,因为它决定了你能执行哪些操作。例如,如果日期以随机格式字符串存储,就无法正确排序;不过,对于九年级基础练习,字符串日期是可以接受的。

12. Extending the Case Study: Reservation Feature | 扩展案例分析:预约功能

To stretch your thinking, design a reservation feature. When a book is already borrowed, let another student reserve it. This needs a separate list of reservations with priority order. The algorithm becomes more complex: when a book is returned, the system checks if any reservation exists and notifies the first student. This extension shows how real‑world requirements drive extra data structures and logic.

为了拓展思维,设计一个预约功能。当书已被借出时,允许其他学生预约。这需要一个单独的预约列表,并按优先顺序排列。算法变得更加复杂:当书被归还时,系统检查是否有预约存在,并通知第一位学生。这一扩展展示了真实需求如何催生出额外的数据结构和逻辑。

Published by TutorHao | CCEA Year 9 Computing Revision Series | aleveler.com

更多咨询请联系16621398022(同微信)

Comments

屏轩国际教育cambridge primary/secondary checkpoint, cat4, ukiset,ukcat,igcse,alevel,PAT,STEP,MAT, ibdp,ap,ssat,sat,sat2课程辅导,国外大学本科硕士研究生博士课程论文辅导

Turn on JavaScript to leave a comment.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Discover more from aleveler.com

Subscribe now to keep reading and get access to the full archive.

Continue reading

Exit mobile version