课设学生信息管理系统C++ 链表

前言

C++课设作业,学生信息管理系统,链表存储数据 (可提供源码)

学生信息管理系统

基本要求

1.实现学生端和教师端

2.登陆功能

3.学生信息的录入、浏览、添加、修改、查找

4.按照成绩排序

5.各科成绩分数段统计

6.其他自定义的功能

流程图

在这里插入图片描述

关键代码

1.//密码 
//用getch函数,使得 不显示 用户输入的密码,并输出 * 以提示
string password()
{
	string temp;
	char c;
	cout<<"请输入密码:";
	while(1){
		c=_getch();
		if(c!=13)//回车键ASCII值 {
			temp=temp+c;
			cout<<"*";} 
		else
			break;}	
	return temp;}
void Password()
{
	string z="00000000";//账号
	string m="1234abcd";//密码
	string m1,z1;
	int n=3;
	while(1){
		cout<<"请输入账号:";
		cin>> z1;
		m1=password();
		if(m1==m||z1==z){
		 	cout<<"\n"<<"登陆成功"<<"\n"<<endl;
			 break; }
		 else{
			cout<<"\n"<<"账号或密码错误,请重新输入"<<endl; 
			--n;
			cout<<"剩余机会:"<<n<<"次"<<endl; 
			if(n==0){
				cout<<"退出系统"<<endl; 
				exit(0);//退出 
			}}}}
2.//定义学生数据的结构体
struct information
{
	int num;
	char name[20];
	char sex[6];
	double math;
	double english;
	double computer;
	double average;};
3. //定义链表结构体
typedef struct node
{
	struct information data;
	struct node* next;
}Student;
4. //创建链表
Student* createlist()
{
	Student* head = new Student;//头节点
	head->next = NULL;
	return head;
}
5. system("cls"); //清屏
6. //录入
void AddStudent(Student* head)
{
	Student* pre = head;
	for (int i = 0; i < length(head); i++)//找到链表最后一个节点 把录入数据接到最后 {
		pre = pre->next;}
	Student* p = new Student;
a1:	Student* c = head->next;
	cout << "输入学生学号:" << endl;
	cin >> p->data.num;
	for(int j = 0; j < length(head); j++) {
		if(c->data.num==p->data.num)//防止输入重复的学号 {
			cout<<"学号重复,请重新输入"<<endl; 
			goto a1;}
		c=c->next;}
	cout << "输入学生姓名:" << endl;
	cin >> p->data.name;
	cout << "输入学生性别:" << endl;
	cin >> p->data.sex;
	cout << "输入学生数学成绩:" << endl;
	cin >> p->data.math;
	cout << "输入学生英语成绩:" << endl;
	cin >> p->data.english;
	cout << "输入学生计算机成绩:" << endl;
	cin >> p->data.computer;
	p->data.average = (p->data.math + p->data.english + p->data.computer) / 3;
	pre->next = p;
	pre = p;
	p->next = NULL;} 
7. //查找 
Student* Search1(Student* head, int index) //学号查找
{
	Student* p = head;
	while (p->data.num != index){
		p = p->next;}
	return p;}
Student* Search2(Student* head, char* index)//姓名查找
{
	Student* p = head;
	while (strcmp(p->data.name, index))
		p = p->next;
	return p;
}
8.//添加 
//index为要添加到的位置 调用函数时可以用键盘输入
void insertelement(Student* head, int index)
{
		Student* pre = head;
		for (int i = 0; i < index - 1; i++){
			pre = pre->next;}
		Student* newNode = new Student;
	a2:	Student* c = head->next;
		cout << "输入学生学号:" << endl;
		cin >> newNode->data.num;
		for(int j = 0; j < length(head); j++) //防止输入重复学号{
			if(c->data.num==newNode->data.num){
			cout<<"学号重复,请重新输入"<<endl; 
			goto a2;}
			c=c->next;}		
cout << "输入学生姓名:" << endl;
		cin >> newNode->data.name;
		cout << "输入学生性别:" << endl;
		cin >> newNode->data.sex;
		cout << "输入学生数学成绩:" << endl;
		cin >> newNode->data.math;
		cout << "输入学生英语成绩:" << endl;
		cin >> newNode->data.english;
		cout << "输入学生计算机成绩:" << endl;
		cin >> newNode->data.computer;
		newNode->data.average = (newNode->data.math + newNode->data.english + newNode->data.computer) / 3;

		newNode->next = pre->next;
		pre->next = newNode;
		system("cls");} 
	9. //求学生数据个数
int length(Student* head)
{
		int count = 0;
		Student* p = head->next;
		while (p != NULL){
		count++;
		p = p->next;}
		return count;}

测试结果

1. 欢迎界面

在这里插入图片描述

2.端口选择
在这里插入图片描述
3.按下1进入教师端
在这里插入图片描述
4.需要输入账号密码
在这里插入图片描述

5.错误输入账号或密码
在这里插入图片描述

6.三次错误地输入账号或密码则退出系统
在这里插入图片描述

7.正确输入账号和密码
在这里插入图片描述

8.进入教师端操作界面
在这里插入图片描述

9.操作一 录入信息
在这里插入图片描述

若学号与链表中原有学号相同 会提示请重新输入
在这里插入图片描述

10.操作二 浏览信息
在这里插入图片描述

按下1存到文本文件 提示后返回选项菜单 按下其他键直接返回选项菜单
在这里插入图片描述
文本中
在这里插入图片描述

11.操作3 排序学生
在这里插入图片描述

升序
在这里插入图片描述
降序
在这里插入图片描述
12.操作4 修改信息
在这里插入图片描述

修改第2个同学信息 更新为 数学80 英语80 计算机80
在这里插入图片描述

修改后再次执行 操作2:浏览信息 数据已更新
在这里插入图片描述

若学号与之前学号相同 会提示重新输入学号
在这里插入图片描述

13.操作5 添加信息
在这里插入图片描述
添加后 执行操作2:浏览信息 数据已更新
在这里插入图片描述

若输入的学号与已有学号相同 则提示重新输入学号
在这里插入图片描述

14.操作6 删除信息 删除第三个同学信息
在这里插入图片描述
删除后执行操作2 浏览信息 数据已更新
在这里插入图片描述

15.操作7 查找信息在这里插入图片描述

按下1 学号查找
在这里插入图片描述

按下2 姓名查找
在这里插入图片描述

16.操作8 统计信息
在这里插入图片描述
17.操作9 退出系统
在这里插入图片描述
学生端 不需要账号密码
在这里插入图片描述
1.操作1 浏览学生信息
在这里插入图片描述
2.操作2 排序学生信息
在这里插入图片描述

升序
在这里插入图片描述

降序
在这里插入图片描述

3.操作三 查找学生信息
在这里插入图片描述

按下1 学号查找
在这里插入图片描述

按下2 姓名查找
在这里插入图片描述

4.操作4 退出系统
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值