C语言学生信息管理系统(链表实现)

本文介绍了使用C语言通过链表和结构体实现学生信息管理系统的基础功能,包括增删改查学生信息,并能按姓名或学号对学生成绩进行排序。
摘要由CSDN通过智能技术生成

基础功能:

  • 使用链表

  • 使用结构体

  • 对学生信息的增删改查

  • 按姓名或者学号进行学生成绩的排序


 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define M 2
#define N 4
typedef struct score//定义成绩结构体
{
	int math;//数学
	int c_language;//c语言
	int english;//英语
	double ave;//平均分
	int total_sum;//总分
}SCORE;

typedef struct stu
{
     char id[20];//学号
	 char name [10];//姓名
	 char sex[20];//性别
	 char pro[20];//专业
	 int year;//入学年份
     SCORE stu_score;//学生成绩
	 char stu_lesson[N][50];//学生选课
}STU;

typedef struct list
{
	  STU data;
	  struct list *next;
}LIST;//创建链表结构体
LIST *Creat_List(STU s[]);//链表的创建
int  Stu_Entry(STU stu[]);//学生信息的录入
int Score_Entry(STU score[]);//学生成绩的录入
void  S_score(LIST*head);//利用链表进行成绩的输出
void infor_show(LIST*head);//利用链表对学生信息进行输出
void S_sort(STU s[],int flag);//利用结构体进行排序 
SCORE Score_search(char *s,LIST *p,int flag);//成绩的查询
LIST *Delet_Score(char*s,LIST*tr,int flag);//成绩的删除
LIST *Delet_infor(char*st,LIST *ht,int flag);//学生记录的删除
LIST *Re_score(char *sr,SCORE R_score,LIST *h,int flag);//成绩修改
void Show_infor(char *S_s,LIST*h,int flag);//学生信息的查询
int Elect_les(STU lesson[]);//学生选课
LIST* Insert_infor(LIST *in_infor );//学生信息的添加
void main()
{
	     printf("\t\t\t欢迎进入学生信息管理系统\n");
	     system("color 9");
	     int choice;//输入你的选择
	     char user[23];//输入用户名
	     char  key[20];//输入密码
	     STU stu[M];//结构体数组 
	     LIST *head;//链表的头结点
	     head=Creat_List(stu);
          printf("请输入用户名:\n");
          scanf("%s",user);
		   printf("请输入密码:\n");
            scanf("%s",key);
			 printf("*******************************\n");
			 printf("*     1---信息录入             *\n");
             printf("*     2---成绩录入             *\n");
             printf("*     3---成绩输出             *\n");
             printf("*     4---成绩排序             *\n");
			 printf("*     5---成绩查询             *\n");
			 printf("*     6---成绩修改             *\n");
			 printf("*     7---信息添加             *\n");
			 printf("*     8---信息删除             *\n");
			 printf("*     9---成绩删除             *\n");
			 printf("*     10--信息查询             *\n");
			 printf("*     11--信息输出             *\n");
             printf("*     12--学生选课             *\n");
             printf("*     13--退出程序             *\n");
             printf("*******************************\n");

	 if(strcmp(user,"admin")==0&&strcmp(key,"123456")==0)
	 {
	      printf("请输入你的选择:\n");
		 while(scanf("%d",&choice)!=EOF)
		 {
              system("cls");
			 printf("*******************************\n");
			 printf("*     1---信息录入             *\n");
             printf("*     2---成绩录入             *\n");
			 printf("*     3---成绩输出             *\n");
			 printf("*     4---成绩排序             *\n");
			 printf("*     5---成绩查询             *\n");
			 printf("*     6---成绩删除             *\n");
			 printf("*     7---信息添加             *\n");
			 printf("*     8---信息删除             *\n");
			 printf("*     9---成绩修改             *\n");
			 printf("*     10--信息查询             *\n");
			 printf("*     11--信息输出             *\n");
			 printf("*     12--学生选课             *\n");
			 printf("*     13--退出程序             *\n");
			 printf("*******************************\n");
			 switch(choice)
			 {

			 case 1:{
				       printf("请录入学生的信息:\n");
				       if(Stu_Entry(stu))
						   printf("信息录入完成\n");
					    else
					       printf("信息录入失败\n");

                         system("pause");break;
					}
			 case 2:{
				            printf("请录入每位学生对应的成绩:\n");
					        if(Score_Entry(stu))
						       printf("学生成绩录入完成\n");
					       else
					           printf("学生成绩录入失败\n");
                               system("pause");break;
					  }
			 case 3:{
				          printf("成绩的输出为:\n");
						 
						  S_score(Creat_List(stu));
						  system("pause");break;

					   }
			 case 4:{  


				                  int choice;
								  printf("请输入排序的方式(1-平均分排序 2-总分排序)\n");
									  scanf("%d",&choice);
			                    printf("成绩排序的结果为:\n");
								
			                      S_sort(stu,choice);
			                      S_score(Creat_List(stu));
			                      system("pause");break;
								  
		
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值