栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言代码:编写简单的学生管理系统。(指针版)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言代码:编写简单的学生管理系统。(指针版)

设置登录密码,登录学生管理系统,实现的功能一共有七个:1.添加学生信息,2.删除学生信息,3.修改学生信息,4.查看单个学生信息,5.学生信息排序,6.遍历学生信息,7.插入学生信息。

首先定义结构体,里面包含5个信息,学生姓名,学号,性别,年龄,成绩。

//学生信息结构体 
struct Stu{
    char name[20];
    int id;
    int age;
    int sex; //性别
    float score;    
};//数据域 

定义结构体指针
//节点结构体 
struct Node{
    struct Stu student; //数据 
    struct Node *next;  //指针指向下一空间 
}; 

完善了登录系统,设置密码,具体实现代码如下所示:

int main()
{
    int i=0,f=0;
    char mima[20]={"666666"};   //密码可以直接设定,也可以手动输入设置密码 
    char password[20] = {0};   
    for (i = 0; i < 3; i++)        
    {
        f++;
        printf("请输入密码:");
        scanf("%s",password);     //字符串类型%s,数组就是一个地址,不用取地址&
       
        if (0 == strcmp(password,mima))  //strcmp函数比较两个字符串,相同返回0,不相同返回1
        { 
            程序段1;

             ...........
         }
         else 
        {
            printf("密码输入错误,您还有%d次输入机会!n",3-f);
        }
    }
    //输入密码完成后,判断输入的次数是否小于等于三次
    if (i < 3)
    {
        printf("登录成功n");
    }
    else
    {
        printf("退出程序n");
    }
    return 0; 
}

完整实现代码如下所示:

#include 
#include 
#include 
//学生信息结构体 
struct Stu{
	char name[20];
	int id;
	int age;
	char sex[2]; //性别
	float score;	
};//数据域 
//节点结构体 
struct Node{
	struct Stu student; //数据 
	struct Node *next;  //指针指向下一空间 
}; // 指针域 
enum Tag{quit,add,del,change,find,rank,print,charu}; 
int count;
void menu();                       //菜单
void Add(struct Node *head);       //1.添加学生信息
void Del(struct Node *head);       //2.删除学生信息
void Change(struct Node *head);    //3.修改学生信息
void Find(struct Node *head);      //4.查看单个学生信息
void Rank(struct Node *head);      //5.学生信息排序
void Print(struct Node *head);     //6.遍历学生信息
void Charu(struct Node *head);     //7.插入学生信息
int main()
{
	int i=0,f=0;
	char mima[20]={"666666"};  //密码可以直接设定,也可以手动输入设置密码 
	char password[20] = {0};   
	for (i = 0; i < 3; i++)        
	{
	    f++;
		printf("请输入密码:");
		scanf("%s",password);     
       
		if (0 == strcmp(password,mima))
		{ 
			struct Node *head = (struct Node *)malloc(sizeof(struct Node)); //给头结点head创建一个节点空间
			memset(head,0,sizeof(struct Stu)); //初始化节点
			head->next = NULL;
	
			while(1)
			{
				int num;
				menu();
				printf("请输入要执行的操作!n");
				scanf("%d",&num);
				switch(num)
				{
					case add:
						Add(head);
						break; 
					case del:
						Del(head);
						break; 
					case change:
						Change(head);
						break; 
					case find:
						Find(head);
						break;
					case rank:
						Rank(head);
						break;
					case print:
						Print(head);
						break;
					case charu:
						Charu(head);
						break;
					case quit:
						return 0;
					default:printf("输入有误,请重新输入!n");
				}
			 }
		 }
		 else 
		{
			printf("密码输入错误,您还有%d次输入机会!n",3-f);
		}
	}
	
	if (i < 3)
	{
		printf("登录成功n");
	}
	else
	{
		printf("退出程序n");
	}
	return 0; 
}

//学生管理系统菜单
void menu()
{
	printf("*********欢迎来到学生管理系统*********n");
	printf("*********1.添加学生信息*********n");
	printf("*********2.删除学生信息*********n");
	printf("*********3.修改学生信息*********n");
	printf("*********4.查看单个学生信息*********n");
	printf("*********5.学生信息排序*********n");
	printf("*********6.遍历学生信息*********n");
	printf("*********7.插入学生信息*********n");
	printf("*********0.退出学生管理系统*********n");

}
//1.添加学生信息
void Add(struct Node *head)
{
	int n,m;
loop:
	printf("请输入要添加的学号!n");
	scanf("%d",&n);
	struct Node *temp = head->next;
	while(temp != NULL)
	{
		if(n == temp->student.id)
		{
			printf("该学号已存在!n");
			return;//无返回值
		}
		temp = temp->next ;
	}
	struct Node *new1 = (struct Node *)malloc(sizeof(struct Node));
	new1->student.id  = n;
	printf("请输入要添加的学生姓名!n");
	scanf("%s",new1->student.name);
	
	printf("请输入要添加的学生性别!n");
	scanf("%s",new1->student.sex);
	
	printf("请输入要添加的学生的年龄!n");
	scanf("%d",&new1->student.age);
	
	printf("请输入要添加的学生成绩!n");
	scanf("%f",&new1->student.score);
	new1->next =NULL;
	
	temp = head;
	while(temp->next != NULL)
	{
		temp = temp->next ;
	}
	temp->next = new1;
	count++;
	printf("该学生信息添加成功!n");
	printf("是否要继续添加? 是......1,否......2n");
	scanf("%d",&m);
	if(m == 1)
	{
		goto loop;
	}
	else if(m == 2)
	{
		return;
	}
}

//2.删除学生信息
void Del(struct Node *head)
{	
	struct Node *temp1 = head;
	struct Node *temp2 = head->next;
	int n,m;
	int i,j;
	printf("请输入要删除学生的学号!n");
	scanf("%d",&n);
	printf("请认真考虑是否要删除? 是......1,否......2n");
	scanf("%d",&m);
	if(m == 1)
	{
		while(temp2 != NULL)
		{
			if(n == temp2->student.id)
			{
				temp1->next =temp2->next;
			}
			temp1 = temp1->next ;
			temp2 = temp2->next ;
		}
		free(temp2);
		count--;
		printf("删除成功!n");
	}
	else if(m == 2)
	{
		return;
	}
	
}
//3.修改学生信息
void Change(struct Node *head)
{
	struct Node *temp = head;
	int n;
	printf("请输入要修改学生的学号!n");
	scanf("%d",&n);
	while(temp != NULL)
	{
		if(n == temp->student.id)
		{
			printf("请输入要修改学生的姓名!n");
			scanf("%s",temp->student.name);
			
			printf("请输入要修改的学生性别!n");
			scanf("%s",temp->student.sex);
			
			printf("请输入要修改的学生的年龄!n");
			scanf("%d",&temp->student.age);
			
			printf("请输入要修改学生的成绩!n");
			scanf("%f",&temp->student.score);
		}
		temp = temp->next ;
	}
}
//4.查看单个学生信息
void Find(struct Node *head)
{
	struct Node *temp = head;
	int n,num;
	char str[20]= {0};
	int flag = 0;
	printf("**********请选择查询方式!***********n");
	printf("**********1.通过学号***********n");
	printf("**********2.通过姓名***********n");
	printf("*******************************n");
	scanf("%d",&num);
	if(num == 1)
	{
		printf("请输入要查看学生的学号!n");
		scanf("%d",&n);
		while(temp != NULL)
		{
			if(n == temp->student.id)
			{
				flag = 1;
				printf("该学生信息为:n");
				printf("学号t姓名t性别t年龄t成绩n");
				printf("%dt%st%st%dt%fn",temp->student.id,temp->student.name,temp->student.sex,temp->student.age,temp->student.score);	
			}
			temp = temp->next ;
		}
	}		
	else if(num == 2)
	{
		printf("请输入要查看学生的姓名!n");
		scanf("%s",str);
		while(temp != NULL)
		{
			if(0 ==strcmp(str,temp->student.name))
			{
				flag = 1;
				printf("该学生信息为:n");
				printf("学号t姓名t性别t年龄t成绩n");
				printf("%dt%st%st%dt%fn",temp->student.id,temp->student.name,temp->student.sex,temp->student.age,temp->student.score);	
			}
			temp = temp->next ;
		}
	}
	
	if(flag == 0)
	{
		printf("查无此人,返回主菜单!n");
	}
	
}
//5.学生信息排序
void Rank(struct Node *head)
{
	struct Node *temp=head->next;
    struct Node *temp1=head->next;
    struct Node *temp2;
    struct Stu stu;
    printf("按成绩由高到低排序为:n");
    for(;temp1->next !=NULL;temp1=temp1->next)
    {
        for(temp2 = temp1->next; temp2 !=NULL; temp2=temp2->next)
        {
            if(temp1->student.score < temp2->student.score)
            {
                stu=temp1->student;
                temp1->student=temp2->student;
                temp2->student=stu;
            }
         }   
     }
    printf("学号t姓名t性别t年龄t成绩n");
	while(temp != NULL)
	{
		printf("%dt%st%st%dt%fn",temp->student.id,temp->student.name,temp->student.sex,temp->student.age,temp->student.score);	
		temp = temp->next;
	}
}

//6.遍历学生信息
void Print(struct Node *head)
{
	printf("共有%d个学生信息n",count);
	printf("学号t姓名t性别t年龄t成绩n");
	struct Node *temp = head->next;
	while(temp != NULL)
	{
		printf("%dt%st%st%dt%fn",temp->student.id,temp->student.name,temp->student.sex,temp->student.age,temp->student.score);	
		temp = temp->next;
	}
}
//7.插入学生信息
void Charu(struct Node *head)
{	
	struct Node *temp = head->next;
	int n,flag = 0;
	printf("请输入想要插入的学号后边!n"); 
	scanf("%d",&n);
	while(temp != NULL)
	{
		if(n == temp->student.id)
		{
			flag = 1;
			struct Node *new2 = (struct Node *)malloc(sizeof(struct Node));
			printf("请输入要插入的学生学号!n");
			scanf("%d",&new2->student.id);
			printf("请输入要插入的学生姓名!n");
			scanf("%s",new2->student.name);
			
			printf("请输入要插入的学生性别!n");
			scanf("%s",new2->student.sex);
			
			printf("请输入要插入的学生年龄!n");
			scanf("%d",&new2->student.age);
			
			printf("请输入要插入的学生成绩!n");
			scanf("%f",&new2->student.score);
			
			new2->next = temp->next ;
			temp->next = new2;
			printf("该学生信息插入成功!n");
            count++;
		}	
		temp = temp->next ;
	}
	
	
	if(flag == 0)
	{
		printf("没有此学生,插入错误!n");
		return; 
	}

	return; 
} 


运行结果如下图所示:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/960120.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号