Skip to content

The student dormitory management system for Yu Feixia's schoolwork. 学生宿舍管理系统。

License

Notifications You must be signed in to change notification settings

huanhuanonly/StudentDormitoryManagementSystem

Repository files navigation

The StudentDormitoryManagementSystem

December 28, 2023 by Yang Huanhuan for Yu Feixia.

ViewCode

程序流程图如下:

主页面截图,共设计了八条不同功能的指令:

以下演示了它的各个指令的使用方法以及对应的运行截图:

  1. 使用 insert 插入指令插入两条学生宿舍信息,并使用 display 指令打印当前数据库;

  1. 使用 remove 指令删除一条学号为 $230102010202$ 的信息,并使用 display 指令打印当前数据库;

  1. 使用 change 指令更改学号为 $230102010201$ 的学生的寝室号为 $301$,名称为 YuFeixia2,并使用 display 指令打印当前数据库;

  1. 使用 insert 指令新增三条指令,并使用 find 指令查找出现 $304$ 的数据项;

  1. 使用 sort 指令对学号进行排序,并使用 display 打印当前数据库,将 -s 替换成 -r 则是对房间号排序,-n 是对名称进行排序;

  1. 使用 save 指令将数据库保存成文件并打开文件进行查看;

  1. 使用 exit 指令退出系统;

设计思想

继命令行语法,使用 指令 + 参数 的形式与学生宿舍信息数据库进行交互,为了代码模板化,这里使用面向对象 OOP 编程思想实现这个 C 语言程序结构,使用宏定义的技巧,引入 C++ 中的 class 编程,支持类构造、析构、类中方法,并编写了一个简单版的 C++ STL 库中的 std::vector 容器,内部使用 void* 类型的指针使它支持任何类型,并简单封装 C 语言中的内存管理函数后,给予 vector 内部调用,它内部使用动态扩容。在这个程序中,它将作为字符串类型 std::string,数据库也将使用它进行存储。

对于指令字符串的解析,这里使用字典树(Trie)进行存储对应指令的函数指针,Trie 的插入和查找的时间复杂度都是 $O(\left|S\right|)$,这个程序中定义了 trie 类和它的类函数来维护它的数据。

对于系统中的每个功能都封装成了一个函数,主体代码在 main 函数后,它们的函数指针在 main 开始时交由 Trie 树管理。

About

The student dormitory management system for Yu Feixia's schoolwork. 学生宿舍管理系统。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages