C++单链表实现教职工管理系统

#include<iostream>#include<string>#include<iomanip>using namespace std;typedef class lnode {public: int no; int depno; int value; string name; class lnode* next;}lnode, * linklist;//初始化链表bool initlist(linklist& L){.
摘要由CSDN通过智能技术生成
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
typedef class lnode {
public:
	int no;
	int depno;
	int value;
	string name;
	class lnode* next;
}lnode, * linklist;





//初始化链表
bool initlist(linklist& L)
{
	L = (lnode*)new lnode;//指向头结点
	if (L == NULL)
		return false;//内存不足,分配空间失败
	(*L).next = NULL;//头节点为空
	return true;
}



//在第i个节点插入(链表指针,节点序号,编号s,部门号de,名字n,价格v)
bool listinsert(linklist& L, int i, int s, int de, string n, int v)
{

	if (i < 1)
		return false;
	lnode* p;//当前扫描到的节点指针
	int j = 0;//p指向的是第几个节点
	p = L;//指向头节点
	while (p != NULL && j < i - 1)//使p指向插入节点的前一个节点
	{
		p = p->next;
		j++;
	}

	if (p == NULL)
		return false;
	lnode* s1 = (lnode*)new lnode;
	s1->no = s;
	s1->name = n;
	s1->depno = de;
	s1->value = v;
	s1->next = p->next;
	p->next = s1;
	return true;
}



//删除第i个节点
bool listdelete(linklist& L, int i)
{
	if (i < 1)
		return false;
	lnode* p;//当前节点指针
	int j = 0;
	p = L;
	while (p != NULL && j < i - 1)//使p指向i-1节点处
	{
		p = p->next;
		j++;
	}

	if (p == NULL)
		return false;
	if (p->next == NULL)
		return false;
	lnode* q = p->next;
	p->next = q->next;

	delete q;
	return true;
}



//菜单显示
void menu()
{
	cout << "-------------------------------------------------------------------------" << endl;
	cout << "请操作:" << endl;
	cout << "1:初始化链表(从链表标号一插入)" << endl;
	cout << "2:链表序号插入教职工信息" << endl;
	cout << "3:删除信息" << endl;
	cout << "4:显示全部信息" << endl;
	cout << "5:查找" << endl;
	cout << "6:排序" << endl;
	cout << "7:退出" << endl;
	cout << "-------------------------------------------------------------------------" << endl;
}


//下级菜单显示
void menu2()
{
	cout << "-------------------------------------------------------------------------" << endl;
	cout << "请操作:" << endl;
	cout << "1:按链表位序查找" << endl;
	cout << "2:按名字查找" << endl;
	
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学生包含以下信息项:学号、姓名、学院、班级、高数成绩、英语成绩、C语言成绩、总分、平均分。 系统的主要功能包括: 1. 创建学生成绩信息文件,根据提示输入学生的各项信息,计算出总分和平均分,然后按学号对学生信息进行排序,并将排序后的学生成绩信息存储到一个二进制文件中。 2. 增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息,要求:增加后的学生信息仍按学号排序,并继续保存至原文件。 3. 删除学生信息,提示用户输入要进行删除操作的学号,如果在文件中有该信息存在,则将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。 4. 修改学生信息,提示用户输入要进行修改操作的学号,如果在文件中有该息存在,则将提示用户输入该学号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。 5. 按不同条件对学生信息进行查询操作,输出满足条件的学生信息。 (1) 按学号查询,输入一个学号,输出对应的学生信息。 (2) 按姓名查询,包括精确查询(输入全名),模糊查询(输入姓)。 (3) 按学院查询,输入学院名称,输出该学院的全部学生的信息。 (4) 按班级查询,输入班级名称,输出该班级的全部学生的信息。 6. 按不同条件对学生成绩进行统计工作。 (1) 按总分对学生信息进行排序(由高到低),输出排序后的信息,并将排序后的学生信息存放到一个新的二进制文件中。 (2) 按平均分统计各个分数段的学生人数(不及格,60-69,70-79,80-89,90-100)。 (3) 分别找出3门课程成绩最高的学生,并输出他们的信息。 (4) 分别统计出3门课程的不及格率,并输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值