IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 单链表学生成绩管理系统,包含排序.增删查改,文件的输入以文件格式化输出 -> 正文阅读

[数据结构与算法]单链表学生成绩管理系统,包含排序.增删查改,文件的输入以文件格式化输出

关于学生管理系统

增删查改是最基础的操作

然后就是此基础上做完善

比如写一个账号密码? 又或者? 有一些输入提示

废话不多说直接上源码

账号是:NYLG

密码是:fengmang666

你们可以复制自己操作一下

有不懂的可以提问

每一个操作块都会有提示.

?

?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define S struct student   //为了方便 
struct student     //创建结构体 
{
 int num;          //学号
 char name[15];    //名字
 char sex[5];      //性别 
 int score;        //年龄 
 struct student *next;
};

void welcome();        //欢迎 
int denglu();          //登录 
void menu();           //菜单 
void add(S* head);     //增加
void del(S* head);     //删除
void search(S *head);  //查找
void change(S *head);  //修改
void show(S* head);    //打印
void paixu(S*head);    //排序 
void pre(S* head);     //保存 
void duqu();           //读取 
 
int main(){
	int i=denglu();
	if(i){
		return 0; 
	}           //登录函数 
	welcome();             //欢迎函数 
	system("color 80");    //控制台颜色
	S *head=(S*)malloc(sizeof(S));
	head->next=NULL;       //创建一个头指针,使其指向空 
		int k=1;
		while(k) {
			system("pause");
			system("cls");
			menu();
			printf(" \t \t \t \t \t  请输入数字 以实现对应的功能:\t");
			scanf("%d",&k);
			switch(k) {
				case 1:	add(head);          	break;              //增加学生 
				case 2:	del(head);          	break;              //删除学生 
				case 3: search(head);       	break;              //查找学生 
				case 4: change(head);          	break;              //改变学生
				case 5: show(head);             break;              //打印学生 
				case 6: pre(head);              break;              //保存文件
				case 7:paixu(head);             break;              //成绩排序 
				case 8:duqu();                  break;              //读取文件 
				case 0:		                	break;              //退出程序 
				default:
				printf("请按照指定的指令输入!!!\n");
			}
		}
		return 0;  
} 
void menu(){
	printf(" \t\t\t\t* * * * * * * * * * * * * * * * * * * * * * * * *\n");
	printf(" \t\t\t\t*           南阳理工学生管理系统                *\n");
	printf(" \t\t\t\t*                                               *\n");
	printf(" \t\t\t\t*          (1) 增加学生信息                     *\n");
	printf(" \t\t\t\t*          (2) 删除学生信息                     *\n");
	printf(" \t\t\t\t*          (3) 查找学生信息                     *\n");
	printf(" \t\t\t\t*          (4) 修改学生信息                     *\n");
	printf(" \t\t\t\t*          (5) 查看学生信息                     *\n");
	printf(" \t\t\t\t*          (6) 保存学生信息                     *\n");
	printf(" \t\t\t\t*          (7) 按照成绩从高到低排序             *\n");
	printf(" \t\t\t\t*          (8) 保读取保存的学生信息             *\n");	
	printf(" \t\t\t\t*          (0) 退出学生管理系统                 *\n");
	printf(" \t\t\t\t*                                               *\n");
	printf(" \t\t\t\t*                                               *\n");
	printf(" \t\t\t\t* * * * * * * * * * * * * * * * * * * * * * * * *\n");
} 
void welcome() {   //欢迎函数
	printf("\n     \n");
	printf("   \t\t\t             * * * * * * * * * * * * * * * * * * * * * * * * *\n");
	printf("   \t\t\t             *                                               *\n");
	printf("   \t\t\t             *            欢迎使用南阳理工学生管理系统       *\n");
	printf("   \t\t\t             *                                               *\n");
	printf("   \t\t\t             * * * * * * * * * * * * * * * * * * * * * * * * *\n");
	printf("\n \n \n ");
}
int denglu(){                   //登录
char z[20]={"NYLG"},m[20]={"fengmang666"},zhanghao[20],mima[20]; 
int i=3; 
while(i){
	printf("\t\t\t\t请输入账户:\t");
	scanf("%s",&zhanghao);
	if(strcmp(zhanghao,z)==0){
	while(i){
	printf("\t\t\t\t请输入密码:\t");
	scanf("%s",mima);
		if(strcmp(mima,m)==0){
			printf("密码正确!欢迎进入!");
			return 0 ;
			} 
			else
			{
		printf("密码错误!");
		i--;
			 } 
		
	}
}
   else
   {
   	printf("账户错误!") ;
   	i--; 
   }
}
return 1;	
} 
void add(S* head){                 //增加 
	printf("请输入要增加学生的数量: ");
	int n;
	scanf("%d",&n);
	while(n--){
    S *p=head;
	S *q=(S*)malloc(sizeof(S));
	q->next=NULL;
	while(p->next!=0){
		p=p->next;
	}	
 printf("学号:");
 scanf("%d",&q->num);
 S*x=head->next;
 int i=0;           //判断是否学号重复 
 while(x){
 	if(x->num==q->num){
 		printf("学号相同,请重新输入!\n\n\n");
 		free(q);
 		i=1;
	 }
 	x=x->next;
 }
 if(i){
 n++;
 continue;
 }
 printf("姓名:");
 scanf("%s",q->name);
 printf("性别:");
 scanf("%s",q->sex);
 printf("分数:");
 scanf("%d",&q->score);
 printf("添加成功!\n");
 
 p->next=q;
}	
} 
void del(S* head){            //删除                                                                                                     
	S *p=head;
	S *q=head->next;
	int n,k=0;
	printf("请输入您要删除学生的学号:"); 
	scanf("%d",&n); 
	while(q!=0){
		if(q->num==n){
			k=1;
			p->next=q->next;
			free(q);
			q->next=NULL;
			break;   //注意跳出循环 
		}
		p=p->next;
		q=q->next;
	}
	if(k)
	printf("删除成功!!");
	else 
	printf("删除失败!!"); 
} 
void search(S *head){          //搜索 
	S* p=head->next;
	int n,i=1,k=0;
	printf("若您想按照学号搜索请输入1_\n若您想按照姓名搜索请输入2:");
	 scanf("%d",&k);
	if(k==1){                 //第一种查找方法 
	printf("请输入您要查找学生的学号: ");
	scanf("%d",&n); 
	while(p){
		if(p->num==n){
			printf("学号:%d\t名字:%s\t性别:%s\t分数:%d\n",p->num,p->name,p->sex,p->score);
			i=0;
			break;
		}
		p=p->next;
	} 
	if(i){
		printf("查无此人!!"); 
	}
	}
	else if(k==2){           //第二种查找方法 
		printf("请输入学生姓名:");
		char name1[15];
		scanf("%s",name1);
		while(p){
		if(strcmp(p->name,name1)==0){
	
			printf("学号:%-10d名字:%-10s性别:%-10s分数:%-10d\n",p->num,p->name,p->sex,p->score);
			k=0;
			break;	
			}
				p=p->next;
		}
		
		if(k)
		 printf("查无此人!!");
	}
}
void change(S *head){                //更改 
	S *p=head->next;
	int n,i=1;
	printf("请输入你要更改学生的学号:"); 
	scanf("%d",&n);
	while(p){
		if(p->num==n){
			printf("请输入更改后的:学号\t姓名\t性别\t分数\n :             ");
			scanf("%d %s %s %d",&p->num,p->name,p->sex,&p->score);
			i=0;
			printf("修改成功!");
			break;
		}
		p=p->next;
	} 
	if(i){
		printf("查无此人!!"); 
	}
}  
void show(S* head){
	S *p=head->next;
	while(p){
 printf("学号:%-10d",p->num);
 printf("姓名:%-10s",p->name);
 printf("性别:%-10s",p->sex);
 printf("分数:%-10d\n",p->score);
 p=p->next;
	}
}  
void pre(S* head){                          //保存 
	S* p=head->next;
	FILE *fp=fopen("学生.txt","w+");
	while(p) {
		fprintf(fp,"学号:%d\t",p->num);
		fprintf(fp,"姓名:%s\t",p->name);
		fprintf(fp,"性别:%s\t",p->sex);
		fprintf(fp,"分数:%d\n",p->score);
		p=p->next;
	}
	printf("保存成功!!!\n");
	fclose(fp);
}
void paixu(S* head){    //按照分数从高到低排序 
	S*p1=head->next;    //排序是内容的交换 
	S*p2=head; 
	while(p2!=NULL)
	{
		while(p1->next!=NULL){
			if(p1->score  <  p1->next->score){
				S* temp=(S*)malloc(sizeof(S));
				temp->next=NULL;
				//
				temp->num=p1->next->num;
				temp->score=p1->next->score;
				strcpy(temp->name,p1->next->name);
				strcpy(temp->sex,p1->next->sex);
				//
				p1->next->num=p1->num;
				p1->next->score=p1->score;
				strcpy(p1->next->name,p1->name);
				strcpy(p1->next->sex,p1->sex);
				//
				p1->num=temp->num;
				p1->score=temp->score;
				strcpy(p1->name,temp->name);
				strcpy(p1->sex,temp->sex);
			    //
			    free(temp);
			    temp->next=NULL;
			}
			p1=p1->next;
		}
		p2=p2->next;
		p1=head->next;
	}
	printf("排序后的数据为:\n"); 
	show(head);
} 
void duqu(){            //读取文件
  char a[10000]; 
  int i=0; 
 	FILE*fp=fopen("学生.txt","r");
 while(fscanf(fp,"%s",a)!=EOF){
 	printf("%-10s",a);
 		if(++i%4==0)
		printf("\n");
 }
fclose(fp);
fp=NULL;
} 

?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:35:49  更:2021-11-22 12:37:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:34:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码