【Web实验】【C#】基于控制台的 《学生选课系统》

一、问题描述

利用C#实现基于命令行的《学生选课系统》管理系统,并将数据保存在数据库中,其中要求:
1.设计学生类,课程类;
2.设计数据库表;
3.实现针对基础数据的学生,课程的管理功能,
4.实现学生信息的导入功能。

二、基本要求

利用ASP.NET Core设计控制台程序实现对学生选课系统的管理,系统包含对学生和课程信息的相关操作,其中,课程信息包含字段:课程代码、课程名称、类型(选修/必修)、学分,且课程代码不能为重复,所有信息不能为空,学生信息包含字段:学号、姓名、班级、学分,所有信息存在MySql数据库中。
程序应该在控制台输入提示信息,提醒用户进行相关操作。可执行的操作包括增加、修改或者查看课程信息,或者增加、修改、查看全部或特定学生信息以及删除特定学生信息,所有上述操作的结果应该被存在数据库中。同时,对于学生信息,假定已存在*.csv文件,其中存有包含上述字段的学生信息,可以在控制根据提示选择将该文件夹中的信息导入数据库。

三、测试数据

1.新增课程信息,在控制台输入课程信息,包含正确信息与错误信息,观察数据是否正确存入数据库。
2.查看课程信息,选择查看课程信息功能,观察是否正确输出课程信息。
3.修改课程信息,在控制台输入正确与错误的修改信息,观察是否正确修改或者修正错误。
4.增加学生信息,在控制台输入待增加的学生信息,包含正确输入与错误输入,观察数据是否正确存入数据库或处理错误输入。
5.查看学生信息,选择查看学生信息,观察数据是否正确输出。
6.删除学生信息,输入要删除的学生信息,观察数据是否被正确删除。
7.修改学生信息,输入要修改的学生信息,观察数据是否被正确修改。
8.导入学生信息,建立文件夹stufile.csv,存入相关学生信息,观察选择导入学生信息后,数据是否能正确导入数据库,文件夹截图如图3-1所示。

图3-1 stufile.csv文件夹

四、实现提示

系统中涉及到学生和课程两类实体,二者的关系为“选择”,多个学生可以任意选择多门课程,选择关系是一种多对多关系。根据数据库设计相关概念,首先将实体“学生”和“课程”设计为两张表“student”和“course”,同时将多对多关系选择设计为一张表“selection”。其中,student表包含学号stu_id、学生姓名stu_name、学生班级class、学分stu_grade四个字段,学号为主键。course表包含课程名称crs_name、课程描述description、课程性质(选修/必修)is_optional、课程编号crs_id四个字段,课程编号为主键。selection中包含选课编号slc_id、选课学生学号stu_id和课程编号crs_id三个字段,selection表和student、course的依赖关系通过使用stu_id和crs_id作为外键来体现。三个表的关系以及各字段的类型定义如图4-1所示。
系统开始后首先在控制台提示用户选择学生管理或者客户管理的相关功能,并且在用户输入正确后进入相关模块,功能1到功能3分别对应学生信息管理、课程信息管理和退出系统,在用户输入错误时给出相关提示直到输入正确。系统主要工作流程图如图4-2所示。

图4-1 数据库关系图
图4-2 系统主要工作流程图

在两个管理模块中,同样给出提示并等待用户输入,直到用户输入且选择正确功能后执行相应功能。在学生信息管理模块中,功能1到功能5分别对应学生信息的增加、删除、查找、导入、修改,选择功能6返回上一级菜单,其执行流程图如图4-3所示。在对应功能中,用户可根据提示输入相应信息,系统给出响应结果。在这些功能当中,存在可共用的流程如输入学生信息和查找学生,分别如过程1→2和过程3→4表示。在查找流程中,用户输入要查找的学生信息,如果找不到则给出提示信息,找得到则利用找到的学生信息继续。在输入流程中,直到用户输入正确,才能继续。课程信息管理模块中的功能1到功能3分别对应课程信息的增加、查看和修改,选择功能4返回上一级菜单,其过程1→2和过程3→4与学生管理相同,执行流程如图4-4所示。

图4-3 学生信息管理模块流程图
图4-4 课程信息管理模块流程图
# 五、实验总结 通过本次实验,完成了基于控制台的《学生选课管理系统》设计和实现。熟悉了相关工具的使用和环境的配置。在设计过程中使用了很多自动化工具,比如通过Power Designer生成数据库脚本,使用Entity Framework实现数据库和相关类模型的映射,这些自动化工具的使用极大地简化了代码的设计过程,可以将更多精力关注在业务逻辑的实现上。

六、实现代码

系统包结构如图6-1所示,其中Models文件夹是由Etity Framework生成的实体模型集合,其中包含三个数据表的实体类和数据库脚手架CourseCotext。CSVHelper类用于处理对*.csv文件的处理,主程序在Program类中。

6.1 课程管理

(1)新增课程信息
增加某个课程的代码如下所示,其中CrsId、CrsName、Grade、IsOptional是课程实体类中和数据库对应的字段,id、name、grade、info是经过控制台读取并处理的,可以正确进行输入的课程字段信息,context是数据库脚手架实例。根据输入信息生成新课程实例后插入数据库,最后保存更改即可增加课程信息。

    var crs = new Course()
    {
   
        CrsId = id,
        CrsName = name,
        Grade = grade,
        IsOptional = info
    };
context.Course.Add(crs);
context.SaveChanges();

(2)查看课程信息

    using (var context = new CoursesContext())
    {
   
        return context.Course.Where(x => x.CrsId != "").ToList();
    }
    using (var context = new CoursesContext())
    {
   
        retur
  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,那我先给你介绍一下学生选课系统的功能设计。一般来说,学生选课系统需要包含以下功能: 1. 学生登录和注册:学生可以通过账号密码登录选课系统,也可以进行注册。 2. 选课和退课:学生可以在选课期间内选择自己想要的课程,也可以在一定时间内退选。 3. 课程管理:管理员可以添加、修改、删除课程信息,包括课程名称、课程编号、授课教师、上课时间等。 4. 学生管理:管理员可以添加、修改、删除学生信息,包括学生姓名、学号、所属班级等。 5. 成绩管理:管理员可以录入学生的成绩,并对学生成绩进行查询、统计和导出。 在实现这些功能的同时,我们需要使用到数据库数据库的设计需要包括学生表、课程表和成绩表。学生表和课程表分别存储学生和课程的基本信息,成绩表则记录每个学生在每门课程中的成绩。 在控制台应用程序中实现学生选课系统,需要使用到 C# 的相关技术,比如 ADO.NET、LINQ to SQL 等。可以使用 ADO.NET 连接数据库,进行数据的增删改查操作。同时,也可以使用 LINQ to SQL 技术快速地实现数据库访问和操作。 除此之外,还需要设计合理的界面,使得用户能够方便地进行操作。可以使用 Console.ReadLine() 和 Console.Write() 等方法实现用户输入和输出。同时,也可以使用 Console.ForegroundColor 属性设置控制台文字的颜色,使得界面更加美观。 以上是关于 C# 基于数据库控制台学生选课系统的简单介绍,希望能够帮助到你。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值