Avail 15% off on First assignment order NAH_FIRST_15%

Logo

For information and reference only – not to be submitted as your own work.

This extract shows how a strong submission for the BBIS 5101 Assignment 3 Campus Facilities Issue Register brief can be organised: a short design section, the key C# code, a test table and a debugging account. It is an abridged model, not a full solution. Our planning advice for this type of task is in the companion article, how to plan a C# Windows Forms CRUD assignment. Citations follow APA 7th edition.

Planning table

Section Marks Suggested words or evidence What the marker looks for
1. Design (tasks 1.1–1.4) 20 600 words, one diagram, one control table Clear scope, sensible fields, two or more cooperating classes, a labelled form plan
2. Implementation (tasks 2.1–2.4) 50 Annotated code excerpts and screenshots Encapsulation, separation of logic from UI, working CRUD against LocalDB, validation before SQL runs
3. Testing (tasks 3.1–3.3) 15 Test table, two screenshots, 150–250 word bug account Valid, invalid and boundary cases; a genuine bug with cause and fix
4. Demonstration (tasks 4.1–4.2) 15 Live or recorded walkthrough Smooth launch-to-validation flow and a clear explanation of the code

Task 1.1: Business purpose and functional requirements

A tertiary provider currently records faults such as failed lighting or damaged furniture on paper forms and spreadsheets. Entries are duplicated, status changes are lost and staff cannot easily see which problems are still open. The Campus Facilities Issue Register replaces these records with a single Windows Forms application backed by a local database. Staff can log a fault, review all faults in a grid, correct entries, remove mistaken records and filter by location, category or status. User accounts, technician workflows, notifications and cost tracking are outside the scope of this version, so the design stays small enough to build, test and explain properly.

The functional requirements are to add, view, update and delete issues, and to search or filter them. Three business rules are enforced: location and description must not be empty; priority and status must be chosen from fixed lists; and the date reported must not be in the future. Separating these rules from the form code follows the principle that business logic should be testable without the interface (Sommerville, 2016).

Task 1.2: Data design

Field Type Required Example value (illustrative)
IssueId (primary key) INT IDENTITY Auto 12
Location NVARCHAR(100) Yes Library, Level 2
Category NVARCHAR(50) Yes Lighting
Description NVARCHAR(500) Yes Two ceiling lights flickering
DateReported DATE Yes 2026-10-14
Priority NVARCHAR(10) Yes High
Status NVARCHAR(15) Yes Open
ReportedBy NVARCHAR(100) Yes Front desk

A single table is sufficient because the brief asks for one main table. Priority and status are stored as text but constrained in code to fixed lists, which keeps the grid readable and avoids lookup tables that are not required. The database is a SQL Server Express LocalDB file, which runs without a full server installation (Microsoft, 2026b).

Task 1.3: Class design

Two cooperating classes are used besides the forms. Issue holds one record and protects its own data through properties. IssueRepository owns every database operation and is the only class that knows the connection string. The form calls the repository and displays results; it never builds SQL. Properties with validation in the setter keep invalid state out of the object (Microsoft, 2025b), and small single-purpose classes make code easier to read and change (Martin, 2008).

Class Responsibility Key members
Issue Represent and validate one fault Properties for each field; Validate() returns a list of rule failures
IssueRepository Create, read, update, delete and search records Add, GetAll, Update, Delete, Search
MainForm Collect input, show results, report errors Button handlers, DataGridView, filter controls

Task 1.4: User interface plan

Control Name Purpose
TextBox txtLocation, txtDescription, txtReportedBy Free-text input
ComboBox (DropDownList) cboCategory, cboPriority, cboStatus Fixed choices only
DateTimePicker dtpDateReported Date entry with a maximum of today
DataGridView dgvIssues Read-only list of issues, row selection fills the form
Button btnAdd, btnUpdate, btnDelete, btnClear, btnSearch User actions

Control names use a short type prefix followed by a descriptive PascalCase name, in line with .NET naming guidance (Microsoft, n.d.).

Buy High-Quality Essays & Assignment Writing As

Per Particular University, High School Or College By NZ Writers

300+

PhD Writers

4.9/ 5 ratings

From Students

70 +

Subject Covered

10+

Years Of Experience

Tasks 2.1 and 2.2: Class and database implementation

The Issue class validates through a single method so that the rules are written once and reused by Add and Update.

public class Issue
{
    public int IssueId { get; set; }
    public string Location { get; set; } = "";
    public string Category { get; set; } = "";
    public string Description { get; set; } = "";
    public DateTime DateReported { get; set; } = DateTime.Today;
    public string Priority { get; set; } = "Medium";
    public string Status { get; set; } = "Open";
    public string ReportedBy { get; set; } = "";

    public static readonly string[] Priorities = { "Low", "Medium", "High" };
    public static readonly string[] Statuses = { "Open", "In Progress", "Resolved" };

    public List<string> Validate()
    {
        var errors = new List<string>();
        if (string.IsNullOrWhiteSpace(Location)) errors.Add("Location is required.");
        if (string.IsNullOrWhiteSpace(Description)) errors.Add("Description is required.");
        if (Array.IndexOf(Priorities, Priority) < 0) errors.Add("Choose a valid priority.");
        if (Array.IndexOf(Statuses, Status) < 0) errors.Add("Choose a valid status.");
        if (DateReported.Date > DateTime.Today) errors.Add("Date reported cannot be in the future.");
        return errors;
    }
}

The repository uses ADO.NET with parameterised commands. Parameters keep user text separate from the SQL statement, which prevents malformed input from altering the query (Microsoft, 2025c). The connection and command are wrapped in using blocks so resources are released even when an exception occurs (Microsoft, 2026a).

public void Add(Issue issue)
{
    const string sql = @"INSERT INTO Issues
        (Location, Category, Description, DateReported, Priority, Status, ReportedBy)
        VALUES (@loc, @cat, @desc, @date, @pri, @sta, @by)";
    using (var conn = new SqlConnection(_connectionString))
    using (var cmd = new SqlCommand(sql, conn))
    {
        cmd.Parameters.AddWithValue("@loc", issue.Location);
        cmd.Parameters.AddWithValue("@cat", issue.Category);
        cmd.Parameters.AddWithValue("@desc", issue.Description);
        cmd.Parameters.AddWithValue("@date", issue.DateReported.Date);
        cmd.Parameters.AddWithValue("@pri", issue.Priority);
        cmd.Parameters.AddWithValue("@sta", issue.Status);
        cmd.Parameters.AddWithValue("@by", issue.ReportedBy);
        conn.Open();
        cmd.ExecuteNonQuery();
    }
}

GetAll and Search fill a DataTable with a SqlDataAdapter. The form assigns that table to the grid, which is the standard binding approach for the DataGridView (Microsoft, 2025a). Annotated screenshots of each operation should accompany these excerpts in the report.

Task 2.3: Functional features and validation

The Add button handler collects the form values into an Issue, calls Validate and only then calls the repository. If the list of errors is not empty, the messages are shown together and no SQL is executed.

private void btnAdd_Click(object sender, EventArgs e)
{
    var issue = ReadForm();
    var errors = issue.Validate();
    if (errors.Count > 0)
    {
        MessageBox.Show(string.Join(Environment.NewLine, errors),
            "Please correct the following", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        return;
    }
    _repository.Add(issue);
    RefreshGrid();
    ClearForm();
}

Search accepts a location keyword and optional category and status selections. The repository builds one parameterised query that treats an empty selection as “any”, so the filter logic is not duplicated in the form.

Task 2.4: Interface and usability

Drop-down lists prevent invalid priority and status values at source, and the date picker has its maximum date set to today. After every successful add, update or delete the grid is reloaded and the inputs are cleared, so the screen always matches the database. The grid is read-only with full-row selection, which prevents accidental edits and makes the selected record obvious.

Task 3.1: Test case table

No. Type Input Expected result
1 Valid All fields complete, date today Record saved, grid refreshed
2 Invalid Empty location Message “Location is required.” No insert
3 Invalid Description of spaces only Message “Description is required.” No insert
4 Boundary Date reported = today Accepted
5 Boundary Date reported = tomorrow Rejected with date message
6 Boundary Description of exactly 500 characters Accepted and stored in full
7 Invalid Description of 501 characters Rejected or limited by the control
8 Valid Update status from Open to Resolved Grid shows new status
9 Valid Delete a selected record Confirmation shown, record removed
10 Valid Search “library” with category Lighting Only matching rows displayed

Cases should cover valid, invalid and boundary input, as recommended in standard testing practice (Myers et al., 2011). Record actual results and add a screenshot for at least the validation cases.

Task 3.3: Debugging example

During testing, updating an issue changed every row in the table rather than only the selected one. Stepping through the Update method showed that the SQL statement had no WHERE clause, because the IssueId parameter had been added to the command but not used in the text. The breakpoint on the ExecuteNonQuery line and a check of the command text in the watch window made the omission clear. The fix was to add WHERE IssueId = @id to the statement and confirm that the selected row’s identifier was stored when the grid selection changed. A new test case, updating one of three rows and confirming that the other two were unchanged, was then added to the table. This example is illustrative; a submission must describe a bug that genuinely occurred in your own project.

Tasks 4.1 and 4.2: Demonstration and code explanation

A reliable demonstration follows the order the marker will check: launch the application, add a valid issue, trigger two validation messages, edit and delete a record, then run a filtered search. When explaining the code, name each class, say what it protects or controls, and point to where encapsulation, validation and the data connection appear. Practise the sequence once with a fresh database so no unexpected data appears on screen. If you need structured help with a programming brief, see our programming homework help service, or send your requirements through the assignment order form.

In quest for a professional assignment help?

Flexible rates compatible with everyone’s budget

References

Martin, R. C. (2008). Clean code: A handbook of agile software craftsmanship. Prentice Hall.

Microsoft. (n.d.). Capitalization conventions. Microsoft Learn. https://learn.microsoft.com/en-us/dotnet/standard/design-guidelines/capitalization-conventions

Microsoft. (2025a). DataGridView control overview (Windows Forms). Microsoft Learn. https://learn.microsoft.com/en-us/dotnet/desktop/winforms/controls/datagridview-control-overview-windows-forms

Microsoft. (2025b). Properties (C# programming guide). Microsoft Learn. https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/properties

Microsoft. (2025c). SqlParameter class (System.Data.SqlClient). Microsoft Learn. https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlparameter

Microsoft. (2026a). ADO.NET overview. Microsoft Learn. https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/ado-net-overview

Microsoft. (2026b). SQL Server Express LocalDB. Microsoft Learn. https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/sql-server-express-localdb

Myers, G. J., Sandler, C., & Badgett, T. (2011). The art of software testing (3rd ed.). John Wiley & Sons.

Sommerville, I. (2016). Software engineering (10th ed., Global ed.). Pearson.

Prepared by
NZ Assignment Help Editorial Team

NZ Assignment Help Editorial Team

This model answer was prepared by our editorial team in response to a real assignment brief we received. It shows one way to approach the task and is meant as a study guide, not for submission.

UP TO 15 % DISCOUNT

Get Your Assignment Completed At Lower Prices

Plagiarism Free Solutions
100% Original Work
24*7 Online Assistance
Native PhD Experts
Hire a Writer Now

Facing Issues with Assignments? Talk to Our Experts Now! Download Our App Now!