0
点赞
收藏
分享

微信扫一扫

【C语言】基于结构体数组的学生信息管理系统

zhyuzh3d 2022-04-26 阅读 60
c语言

目录

.h头文件:

main.c (用作启动函数)

body.c(功能函数

head.h头文件:

void login(); 
void menu();
void watch();
void add();
void write();	
void del();
void sort();
void numsort();
void baocun();
void sort();

main.c (用作启动函数)

#include<stdio.h>
#include"head.h"

int main()
{
	login(); 
	return 0;
} 

menu.c(菜单函数)

#include<stdio.h>
#include<stdlib.h>
#include"head.h"

void menu()
{
	int num;
	printf("欢迎进入《学生成绩管理系统》 V3.6 \n");
	printf("===================================================\n");
	printf("1.显示学生信息√        2.添加学生信息√\n");
	printf("3.修改学生信息 √       4.删除学生信息√\n");
	printf("5.按学号查找学生信息√  6.对学生信息按学号升序排序√\n");
	printf("7.备份系统数据√        8.退出系统√\n");
	printf("===================================================\n");

	printf("请选择菜单编号:");
	scanf_s("%d", &num);

	switch (num)
	{
	  case 1: watch();break;
	  case 2: add();break;  
	  case 3: write();break;
	  case 4: del();break;
	  case 5: numsort();break;
	  case 6: sort();break;
	  case 7:baocun();break;
	  case 8: exit(0);
	  default:printf("请选择你想要的菜单项:");
	}
	printf("\n");
	system("cls");
}

body.c(功能函数)

#include<stdio.h>
#include<string.h>   //字符串相关指令
#include<ctype.h>  //用于字符处理的指令
#include<stdlib.h>  //包含清屏指令
#include"head.h"


//个人信息结构体的定义
typedef struct student
{
	int  num;       //学号
	char name[10]; //姓名
	char sex[3];       //性别
	char tel[12];  //电话
	char address[50];//家庭住址
	int  age;//年龄
}STU;

STU stu1[5]; 
int count=0;  //计数器

//函数功能 登录√
void login()
{
	long passworld;   //密码
	char ac[10],i,j;  //i用来保存能登录的次数
	printf("欢迎登录《学生成绩管理系统》V3.2\n");
	printf("--------【登录账号】--------\n");

	for (i = 0; i<3; i++)
	{
		printf("请输入用户名:");
		scanf("%s", &ac);
		for (j = 0; j<3; j++)
		{
			printf("请输入密码:");
			scanf("%ld",&passworld);
			if(passworld==123456) 
				break;
			else 
			    printf("对不起,把你登陆失败,请重新进行登录!\n");
		} 
			printf("\n登录成功!\n");
			printf("按任意键进入学生信息管理系统!\n");

			system("pause");   //暂停指令
			system("cls");     //清屏指令

			menu();	
	}
}

//函数功能:显示学生信息 √
void watch()
{
	int i;
	printf("\n--------【显示学生信息】--------\n");
	printf("学号\t姓名\t性别\t年龄\t电话\t家庭住址\n");

	for(i=0;i<count;i++)
	{
		printf("%d\t%s\t%s\t%d\t%s\t%s\n",stu1[i].num,   stu1[i].name,   stu1[i].sex,   stu1[i].age,   stu1[i].tel,   stu1[i].address);
	}

	printf("已显示%d个学生的信息\n",count);

	system("pause");   //暂停指令
	system("cls");     //清屏指令

	menu();
}

//函数功能:添加学生信息 √
void add()
{
	void watch();
	int i,n;
	printf("\n--------【添加学生信息】--------\n");

	printf("请输入本次要添加的学生信息的数量:");
	scanf("%d",&n);

	count=count+n;

	for(i=0;i<n;i++)
	{
		printf("\n");
		printf("请第%d个学生的信息:\n",i+1);

		printf("请输入学号:");
		scanf("%d",&stu1[i].num);

		printf("请输入姓名:");
		scanf("%s",stu1[i].name);

		printf("请输入性别:");
		scanf("%s",stu1[i].sex);

		printf("请输入年龄:");
		scanf("%d",&stu1[i].age);
		
		printf("请输入电话:");
		scanf("%s",stu1[i].tel);

		printf("请输入家庭住址:");
		scanf("%s",stu1[i].address);
	}

	system("pause");   //暂停指令
	system("cls");     //清屏指令

	menu();
}

//函数功能:修改学生信息√
void write()
{
	int i,num2,num,flag=0;

	printf("\n--------【修改学生信息】--------\n");
	printf("请输入要修改的学生的学号:");
	scanf("%d",&num2);

	printf("\n");
	for (i=0; i<count;i++)
	{
		if(stu1[i].num==num2)
		{
			flag=1;
			break;
		}
	}
	if(flag=1)
	{
			printf("===================================================\n");
			printf("1.修改姓名\t2.修改年龄\n");
			printf("3.修改性别\t4.修改电话\n");
			printf("5.修改家庭住址\t6.退出本菜单\n");
			printf("===================================================\n");
			while (1)  //便于多次使用修改菜单
			{
				printf("请选择菜单编号:");
				scanf("%d", &num);
				switch (num)
				{
				case 1:
					printf("原来的姓名为:%s\n",stu1[i].name);
					printf("请输入新的姓名:");
					scanf("%s", stu1[i].name);
					break;
				case 2:
					printf("原来的年龄为:%s\n",stu1[i].age);
					printf("请输入新的年龄:");
					scanf("%d", &stu1[i].age);
					break;
				case 3:
					printf("原来的性别为:%s\n",stu1[i].sex);
					printf("请输入新的性别:");
					scanf("%s", stu1[i].sex);
					break;
				case 4:
					printf("原来的电话为:%s\n",stu1[i].tel);
					printf("请输入新的电话:");
					scanf("%s", stu1[i].tel);
					break;
				case 5:
					printf("原来的家庭住址为:%s\n",stu1[i].address);
					printf("请输入新的家庭住址:");
					scanf("%s", stu1[i].address);
					break;
				case 6: 
					printf("退至主菜单");
					system("cls");
					menu();
					break;
				default:printf("请在1-6之间选择");
				}
			}
			printf("修改完毕!请及时保存!\n");
	}
		else if(flag!=0)
		{
			printf("没有该学生学号!!!");
	}
}

//函数功能:删除数据√
void del()
{
		int i, j,k,flag=0;  //k保存下标,flag用于表示信息是否删除成功
		int num2;

		printf("\n--------【删除学生信息】--------\n");
		printf("请输入要删除学生的学号:");
		scanf("%d",&num2);

		for (i=0;i<count;i++)
		{
			if (stu1[i].num==num2)
			{
				k=i;
				flag=1;
				break;
			}
		}

		if(flag=1)
		{
			for (j=k;j<count-1;j++)//要删除学生后面的学生往前移一位
			{
				stu1[j]=stu1[j+1];
			}
		}
		else if(flag!=1)
		{
			printf("该学号不存在!!!\n");
		}
		printf("删除成功\n");
		count--;

		system("pause");
		system("cls");
		menu();
}

//函数功能:按学号查询 √
void numsort()
{//k用来保存找到的元素下标
  int i,k,id,res=0;//res用来识别是否存在要修改的学生信息
  printf("请输入要查询的学生学号:");
  scanf("%d",&id);
  for(i=0;i<count;i++)
	  if(stu1[i].num==id){
		  k=i;
		  res=1;
		  break;
	  }
  if(res)
  {
	   printf("学号\t姓名\t性别\t年龄\t电话\t家庭地址\n");
	   printf("%d\t%s\t%s\t%d\t%s\t%s\n",stu1[k].num,stu1[k].name,stu1[k].sex,stu1[k].age,stu1[k].tel,stu1[k].address);
  }
  else
	  printf("对不起,学号为%d的学生信息不存在!\n",id);
  system("pause");
  system("cls");
  menu();
}

//函数功能:按学号排序√
void sort()
{
	int i,j;  //i,j用于冒泡排序

	STU temp;  //定义一个冒泡排序时的中间变量

	for(i=0;i<count-1;i++)  //排序的总趟数:总数据量-1
	{
		for(j=0;j<count-1-i;j++)//每趟比较的次数:总数据量-1-趟数
		{
			if(stu1[j].num>stu1[j+1].num)//比较两个元素,满足条件交换,改变符号可更改所排的顺序
			{
				temp=stu1[j];  //交换顺序

				stu1[j]=stu1[j+1];

				stu1[j+1]=temp;
			}
		}
	}
	printf("恭喜,排序成功!\n");

	system("pause");   //暂停指令
	system("cls");     //清屏指令
	menu();
}

//函数功能:保存信息 √
void baocun()
{
	 int i;
	 FILE *fp;  //定义文件指针

	 printf("\n--------【保存学生信息】--------\n");

	 if((fp=fopen("student9999.txt", "w"))==NULL); //以只写形式打开文件,若失败,则返回NULL,并新建一个文件
	 {
		 for (i=0;i<count;i++)
		 {
			 fprintf(fp, "%d  %s   %s   %d   %s   %s\n", stu1[i].num, stu1[i].name, stu1[i].sex, stu1[i].age,stu1[i].tel,stu1[i].address);
			 printf("保存成功!!!\n");
		 }
	 }

	 fclose(fp);  //关闭文件
	 system("pause");
	 system("cls");

	 menu();
}
举报

相关推荐

0 条评论