学生信息管理系统C语言版本+源码

放假在家,为复习C语言的知识,用单链表做的一个简单的学生信息管理系统

源码分享在后面!

下载链接:
点击下载

学生信息(成绩)管理系统C语言版本在这里:
点击查看

先上图:
在这里插入图片描述
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210320173216622.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzUyODg5OTY3,size_16,color_FFFFFF,t_70
保存结果:
在这里插入图片描述

源码:

.c源文件:

#include"Xunlian.h"

void main(){
	run();
}

//添加学生
void addStudent(LinkNode* L) {
	int number;//学生人数
	LinkNode* s = NULL;
	LinkNode* p = L;
	printf("请输入要增加多少学生:");
	scanf("%d", &number);
	char a = getchar();
	for (int i = 0; i < number; i++) {
		s = (LinkNode*)malloc(sizeof(LinkNode));
		s->next = NULL;
		printf("请输入学号:");
		gets(s->sno);
		printf("请输入姓名:");
		gets(s->name);
		printf("请输入性别:");
		gets(s->sex);
		printf("请输入年龄:");
		gets(s->age);
		printf("请输入出生时间:");
		gets(s->birthday);
		printf("请输入电话:");
		gets(s->phone);
		printf("请输入宿舍号:");
		gets(s->dorm);

		p->next = s;
		p = s;
	}
}

//输出学生
void showStudent(LinkNode *L) {
	LinkNode* p = L->next;
	printf("输出结果为:\n");
	if (p == NULL) {
		printf("未检测到学生!!!\n");
		return;
	}
	while (p != NULL) {
		printf("学号为:");
		puts(p->sno);
		printf("姓名为:");
		puts(p->name);
		printf("性别为:");
		puts(p->sex);
		printf("年龄为:");
		puts(p->age);
		printf("出生日期为:");
		puts(p->birthday);
		printf("电话为:");
		puts(p->phone);
		printf("宿舍号为:");
		puts(p->dorm);
		printf("\n");
		p = p->next;
	}
	
}

//删除学生
void deleteStudent(LinkNode* L) {
	char sno[20];
	int i = 0;
	LinkNode* p = L->next;
	LinkNode* s = L;
	LinkNode* p2;
	printf("请输入删除学生的学号:");
	gets(sno);
	//判断位置
	while (p != NULL) {
		if (strcmp(p->sno, sno) == 0) {
			i++;
			break;
		}
		else 
			p = p->next;
	}
	if (p == NULL)
		printf("未检测到当前学生!!!\n");
		return;
	for (int j = 0; j < i; j++) {
		p2 = s;
		s = s->next;
	}
	p2->next = p->next;
	free(p);
}

//查询学生
void selectStudent(LinkNode *L) {
	char sno[20];
	LinkNode* p = L->next;
	printf("请输入查询学生的学号:");
	gets(sno);
	while (p != NULL) {
		if (strcmp(p->sno, sno) == 0) {
			printf("查询结果如下:\n");
			printf("学号为:%s  ", p->sno);
			printf("姓名为:%s  ", p->name);
			printf("性别为:%s  ", p->sex);
			printf("年龄为:%s  ", p->age);
			printf("出生日期为:%s  ", p->birthday);
			printf("电话为:%s  ", p->phone);
			printf("宿舍号为:%s\n", p->dorm);
			break;
		}
		else
			p = p->next;
	}
	if(p==NULL)
		printf("未查询到当前学生!!!\n");
}

//修改学生
void modefyStudent(LinkNode* L) {
	char sno[20];
	char name[20];//姓名
	char sex[10];//性别
	char age[10];//年龄
	char birthday[30];//出生时间
	char phone[50];//电话
	char dorm[20];//宿舍号
	LinkNode* p = L->next;
	printf("请输入修改学生的学号:");
	gets(sno);
	while ( p!=NULL ) {
		if (strcmp(p->sno, sno) == 0) {
			printf("请输入修改后的姓名:");
			gets(p->name);
			printf("请输入修改后的性别:");
			gets(p->sex);
			printf("请输入修改后的年龄:");
			gets(p->age);
			printf("请输入修改后的出生时间:");
			gets(p->birthday);
			printf("请输入修改后的电话:");
			gets(p->phone);
			printf("请输入修改后的宿舍号:");
			gets(p->dorm);
			break;
		}
		else
			p = p->next;
	}
	if (p == NULL) {
		printf("未检测到当前学生信息!!!\n");
	}
}

//输出界面
void init() {
	printf("***********************************\n");
	printf("**        1: --添加学生--        **\n");
	printf("**        2: --输出学生--        **\n");
	printf("**        3:--删除学生--        **\n");
	printf("**        4: --查询学生--        **\n");
	printf("**        5: --修改学生--        **\n");
	printf("**        6: --保存文件--        **\n");
	printf("**        0: --退出程序--        **\n");
	printf("***********************************\n");
}

//文件保存
void fileSave(LinkNode *p) {
	FILE* fp;
	fp = fopen("D:\\text.txt", "a");
	
	if ((fp == NULL)) {
		printf("文件不能打开!!!");
		exit(0);
	}
	p = p->next;
	char sno[20] = "学号:";
	char name[20] = "  姓名:";
	char sex[10] = "  性别:";
	char age[10] = "  年龄:";
	char birthday[30] = "  生日:";
	char phone[50] = "  电话";
	char dorm[20] = "  宿舍号:";
	while (p != NULL) {
		fputs(sno, fp);
		fputs(p->sno, fp);
		fputs(name, fp);
		fputs(p->name, fp);
		fputs(sex, fp);
		fputs(p->sex, fp);
		fputs(age, fp);
		fputs(p->age, fp);
		fputs(birthday, fp);
		fputs(p->birthday, fp);
		fputs(phone, fp);
		fputs(p->phone, fp);
		fputs(dorm, fp);
		fputs(p->dorm, fp);
		fputs("\n", fp);
		p = p->next;
	}
	fputs("\n\n\n", fp);
	printf("保存成功!!!\n");
	//关闭文件
	fclose(fp);
}

//程序运行
void run() {
	//建立结点,申请空间
	LinkNode* L = (LinkNode*)malloc(sizeof(LinkNode));
	L->next = NULL;
	int number;
	while (1) {
		init();
		printf("请输入功能前面的代号:");
		scanf("%d", &number);
		char a = getchar();
		switch (number) {
		case 0:exit(0); break;
		case 1:addStudent(L); break;
		case 2:showStudent(L); break;
		case 3:deleteStudent(L); break;
		case 4:selectStudent(L); break;
		case 5:modefyStudent(L); break;
		case 6:fileSave(L); break;
		}
		
	}
	
}

.h头文件

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct Node {
	char sno[20];//学号
	char name[20];//姓名
	char sex[10];//性别
	char age[10];//年龄
	char birthday[30];//出生时间
	char phone[50];//电话
	char dorm[20];//宿舍号
	
	struct Node* next;//指针
}LinkNode;


void addStudent(LinkNode* L);//添加学生
void showStudent(LinkNode* L);//输出学生
void deleteStudent(LinkNode* L);//删除学生
void selectStudent(LinkNode* L);//查询学生
void modefyStudent(LinkNode* L);//修改学生
void init();//输出界面
void fileSave(LinkNode* p);//文件保存
void run();//程序运行
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~浮生~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值