学生管理系统c++链表实现

简单版学生管理系统,c++,链表实现,如果你是计算机系的学生真的希望你不要完全复制,做下参考自己编写出来才能有所收获,这是对你的将来负责;
学生管理系统,主要划分为以下三个模块: 
    1) 学生:包括增加学生信息、删除学生信息、修改学生信息、查找学生信息、学生选课。 
    2) 课程:包括增加课程信息、删除课程信息、修改课程信息、查找课程信息。
    3)拓展功能:文件导入,文件导出。
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
const int nubofCourse = 10;//学生最多可以选修的课程
typedef struct StudentMessage *sMessage;//学生结点指针类型
typedef struct Courses *sCourse;//课程结点指针类型
fstream foutint;//文件导入导出
/*课程结构体*/
struct Courses {
	int stdCourstcount;
	string cNo;
	string cName;
	string scTeacher;
	string stdNo[nubofCourse];
	sCourse cNext;
};
/*学生结构体*/
struct StudentMessage {
    string sNo;//学号
	string sClass;
	string sName;
	char  sSex;
	sMessage sNext;
};

typedef sMessage sm;//学生头指针类型
typedef sCourse sc;//课程头指针类型			  
/*关于我们,关于程序*/
void aboutMe() {  //首页打印设置 
	string input;
	cout << "\n\n\t\t\t*****************************\n";
	cout << "\t\t\t      学生信息管理系统\n";
	cout << "\t\t\t*****************************\n\n\n";
	// cout<<"\n\t\t\t    欢迎来到学生信息管理系统\n\n";
	cout << "--------------------------------------------------------------------------------\n";
	cout << "\n\t\t\t拼搏到无能为力,\n";  cout << "\t\t\t\t       坚持到感动自己!\n";
	cout << "\t   开发者:路ren甲\n\n";  cout << "\t   联系方式:QQ:1508287079     or     Mail To:1508287079@qq.com\n";
	cout << " \n--------------------------------------------------------------------------------\n";
	//cout<<"\t______________________________________________________________________\n"; 
	cout << "\t\t版权所有@路ren甲\n\n\n";
	cout << "\t<输入任意字符进入>\n\t";
	cin >> input;  //让用户输入一个字符后再进行下一步  
	system("cls");    //清屏
}
//再见页面
void goodbye() {  //首页打印设置 
	string input;
	// cout<<"\n\t\t\t    欢迎来到学生信息管理系统\n\n";
	cout << " \n\n\n\n\n\n\n\n--------------------------------------------------------------------------------\n";
	cout << "\n\t\t可能程序还有许多不足,\n";  cout << "\t\t\t 希望大家可以提出或者修改!\n";
  cout << "\t\t\t\t再见,遇见成功的自己!\n";
	cout << " \n--------------------------------------------------------------------------------\n";
	cout << "\t<输入任意字符关闭>\n\t";
	cin >> input;  //让用户输入一个字符后再进行下一步  
	exit(1);    //清屏
}
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓课程函数↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓//
sc initC() {

	sCourse chead;
	chead = new Courses;
	chead->cNext = NULL;
	return chead;
}
//打印课程信息
int ptfselect_SCourse(sc head, string sId) {
	int flags = 0;
	if (head->cNext == NULL) { cout << "\n\t\t\t没有选到课喔……………!_!-_-\n"; return 1; }
	cout << "\t\t课程编号" << "\t   课程名称" << "\t   开课老师" << endl;
	//课程信息
	head = head->cNext;
	while (head != NULL) {
		for (int l = 0; l < nubofCourse; l++) {
			if (head->stdNo[l] == sId) {
				flags = 1;
				cout << "\t\t" << head->cNo << "\t\t" << head->cName << "\t\t" << head->scTeacher << "\t\n";
			}
		}
		head = head->cNext;
	}
	if (flags == 0) { cout << "\n\t\t\t没有选到课喔……………!_!-_-\n"; }
	cout << "\t\t----------------------------------------------------\n";
	return 1;
}
int ptfSCourse(sc cHead) {
	if (cHead->cNext == NULL) { cout << "没有课程信息\n"; return 0; }
	//全部学生信息
	cout << "\n\t\t课程编号" << "\t   课程名称" << "\t   开课老师" << endl;

	cHead = cHead->cNext;
	while (cHead != NULL) {
		cout << "\t\t" << cHead->cNo << "\t\t" << cHead->cName << "\t\t" << cHead->scTeacher<< "\t\n";
		cHead = cHead->cNext;
	}
	return 1;
}
void printfCourse(sc head, int i) {
	//一个课程信息
	int j;
	sCourse find;
	j = 0;
	find = head->cNext;
	cout << "\n\t\t课程编号" << "\t\t课程名称" << "\t\t开课老师" << endl;
	while (find != NULL) {
		j++; if (j == i) {
			cout << "\t\t" << find->cNo << "\t\t" << find->cName << "\t\t" << find->scTeacher << "\t\n";
			break;
		}
		find = find->cNext;
	}

}
void pfCourse(sc head) {
	cout << "\n\t\t课程编号" << "\t\t课程名称" << "\t\t开课老师" << endl;
	cout << "\t\t" << head->cNo << "\t\t" << head->cName << "\t\t" << head->scTeacher << "\t\n";
	cout << endl;
}
查找课程
int locateCourse(sc chead, string numb) {
	int j = 0;
	chead = chead->cNext;
	while (chead != NULL) {
		j++;//统计
		if (numb == chead->cNo) {
			return j;
		}
		chead = chead->cNext;
	}
	return 0;

}
添加课程
void addCourse(sc scHead) {
	sc cnew;//新课程
	int  g = 0,k=0;
	char flag = 'y';
	while (flag == 'y') {
		cnew = new Courses;
		cnew->stdCourstcount = 0;
		
		while (g==0) {
			g = 1;
			cout << "输入课程编号(六位数字):";
			cin >> cnew->cNo;
			if (locateCourse(scHead,cnew->cNo) != 0) { cout << "课程编号已经存在,
  • 54
    点赞
  • 144
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
链表是一种常用的数据结构,可以用来实现学生管理系统的功能。学生管理系统主要涉及到对学生信息的增删改查操作,而链表正好可以满足这些需求。 首先,我们可以定义一个学生类,包含学生的基本信息字段,例如学号、姓名、性别、年龄等。然后,使用链表来存储学生对象。链表的每个节点包含一个学生对象和指向下一个节点的指针。 在学生管理系统中,可以通过链表实现添加学生、删除学生、修改学生信息和查询学生信息等功能。当需要添加学生时,只需在链表的末尾添加一个新节点,并将新的学生对象赋值给该节点。当需要删除学生时,可以遍历链表查找要删除的学生节点,并将其从链表中移除。对于修改学生信息,可以先遍历链表找到待修改的学生节点,然后修改节点中的学生对象的相应字段值。而查询学生信息则可以通过遍历链表查找到具体学生节点后,返回该学生对象。 由于链表的特点是每个节点都包含指向下一个节点的指针,所以链表可以动态地调整大小,并且不需要连续的内存空间。这使得链表学生管理系统中有更好的灵活性,可以方便地进行增删改查操作。 总之,通过链表实现学生管理系统可以高效地管理学生信息,提供常用的增删改查功能。链表的特点使得系统具有较好的灵活性和扩展性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值