引言
不知道大家刚接触“『管理系统』”这个词的时候是怎么想的,我反正认为这是一个很高大上的东西,实现起来一定超难。结果后面看到了运行结果,有那么一丢丢“请以实物为准”的感觉,这里先把我这个项目的效果图放在下面。
这是用C++写出来的,其实用C语言写出来的也差不多。
如果看到这里,你还是感兴趣的话,那么就继续看下去吧,后面我会描述一下设计思路并把程序代码贴出来。
设计思路
做任何事情总要有个起因,我当然也不是无缘无故的就想搞这个,哪怕它很常见,这其实是我的一次作业,先把作业的题目放在下面,这样也可以明确需求。
建立一个结点包括职工的编号、年龄和性别的单向链表,分别定义函数完成以下功能:
(1)遍历该链表输出全部职工信息;
(2)分别统计男、女职工的人数;
(3)在链表尾部插入新职工结点;
(4)删除指定编号的职工结点;
(5)删除年龄在60岁以上的男性职工或55岁以上的女性职工结点,并保存在另一个链表中。
要求:用主函数建立简单菜单选择,并测试程序。
看到问题后,我的第一想法就是自定义五个函数分别实现这五个功能,在主函数的调用下实现管理系统。
这一题很明显需要使用链表,所以我创建了一个结构体类型用来存放职工的编号、年龄、性别以及指向下一节点的指针,然后声明自定义函数。在完成这些后,我就开始编写主函数了,首先当然是建立一个头指针指向空,然后在do...while循环中显示菜单,使用switch根据用户输入的数字调用相关函数实现相应功能,或退出程序。
先对链表的一些知识明确一下:
这里先把这部分的代码放在下面,有一些没解释到的代码暂时用不到,这是程序基本功能实现后优化输出的,后面会解释,暂时先忽略就行了。
#include
using namespace std;
struct information {
int id;
int age;
string sex;
information* next;
}*s,*p,*new_s,*new_p;
information* new_head = NULL;
int help_judge = 0;
void all_out(information*);
void sex_num_out(information*);
void last_inset(information* &);
void my_delete(information*&);
void classify(information* &);
int main()
{
information* head;
head = NULL;
int select;
do
{
cout