C语言——学生信息管理系统

#include<stdio.h>
#include<string.h>//使我可以调用strcmp进行自定义 
#include<stdlib.h>//使我可以调用字符颜色库 

typedef struct student//tupedef将结构体类型标识符进行自定义 
{
	char sno[20];//学号
	char name[50];//姓名
	char sex[10];//性别
	int age;//年龄
	char nation[10];//民族
	char origin[30];//籍贯 
	char contact[20];//联系方式	 
} SD;
SD datas[5000];//定义了可存储500位学生的数组 
int sl=0;//记录存储了多少位学生的信息 
//
void printxinxi()//打印信息 
{
	if(sl==0)
	printf("当前无学生信息\n") ;
	printf("学号  姓名  性别 年龄 民族  籍贯  联系方式\n") ; 
	int i=0; 
for(i=0;i<sl;i++)
    {
	 printf("%s   %s   %s   %d   %s   %s   %s\n",datas[i].sno,datas[i].name,datas[i].sex,
	 datas[i].age,datas[i].nation,datas[i].origin,datas[i].contact);
    }
}

/
void menu()//菜单 
{
	printf("\n");
	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("              *********************************************\n"); 
	printf("              >>>请输入1-8中你要进行的操作:");
 } 
 // 
 void save()//保存内容到文件内 
 {
 	FILE *fp=NULL;//定义一个文件指针 
 	char wenjianmin[100];
 	printf("请输入文件地址:");
 	scanf("%s",wenjianmin);
 	fp=fopen("Xueshengxinxi.txt","wb+");//为读/写新建一个二进制文件 
 	if(fp==NULL)
 	{
 		printf("打开失败\n"); 
 		return;
	}
	 int i=0;
	for(i=0;i<sl;i++)
	 {
	 	fprintf(fp,"%s %s %s %d %s %s %s\n",datas[i].sno,datas[i].name,datas[i].sex,
		 datas[i].age,datas[i].nation,datas[i].origin,datas[i].contact);//写入文件 
	 	fflush(stdin);//清除文件缓冲区 
	 }
	 fclose(fp);//关闭文件 
	 printf("保存成功!\n");
 }
 /
 void read()//读取文件内容 
 {
    FILE *fp=NULL;
 	char wenjianmin[100];
 	printf("请输入文件地址:");
 	scanf("%s",wenjianmin);
 	fp=fopen("Xueshengxinxi.txt","r");//以只读方式读取文件 
 	if(fp==NULL)
 	{
 		printf("打开失败\n"); 
 		//return;
	 }
	 sl=0;
	 while(!feof(fp))//feof()检查文件是否结束,结束返回非0值,未结束返回0值; 
	 {
	     fscanf(fp,"%s %s %s %d %s %s %s\n",datas[sl].sno,datas[sl].name,datas[sl].sex,
	     &datas[sl].age,datas[sl].nation,datas[sl].origin,datas[sl].contact);	//从文件读取数据 
	 	 sl++;
	 }
     printf("读取成功!\n");	
 }
 //
 void add()//增加信息 
 {
    SD data;//新定义一个结构体变量 
	printf("请按照顺序输入学生的学号:"); 
	scanf("%s",data.sno);
	printf("请输入学生的姓名:") ;
	scanf("%s",data.name);
	printf("请输入学生的性别:"); 
	scanf("%s",data.sex);
	printf("请输入学生的年龄:");
	scanf("%d",&data.age); 
	printf("请输入学生的民族:");
	scanf("%s",data.nation);
	printf("请输入学生的籍贯:");
	scanf("%s",data.origin);
	printf("请输入学生的联系方式:");
	scanf("%s",data.contact);
	datas[sl]=data;
	sl++;
	printf("添加成功!\n");	
 }
 
 void dele()//删除 
 {
     printf("请输入要删除的学生学号:");
     char sno[20];
	 scanf("%s",sno);
	 int flg,i;
	 flg=0; 
	 for(i=0;i<sl;i++)
	   if(strcmp(datas[i].sno,sno)==0)
		 {
		 	 int j;
		     flg=1;
		     for(j=i;j<sl-1;j++)
		     datas[j]=datas[j+1];
		 }
	   if(flg==0)
		 {
		     printf("系统内没有该位学生的信息\n") ;
		 }
	 sl--;
	 printf("删除成功!\n");		
 } 
 //
 void modify()//修改 
 {
 	printf("请输入你需要修改的学生的学生号");
	char sno[20];
    scanf("%s",sno);
	int flg,i;
	flg=0;
	for(i=0;i<sl;i++)
	    if(strcmp(datas[i].sno,sno)==0)
			{
			    flg=1;
			  	printf("请输入需要修改的学生的姓名:") ;
			    scanf("%s",datas[i].name);
			    printf("请输入需要修改的学生的性别:"); 
			    scanf("%s",datas[i].sex);
			    printf("请输入需要需改的学生的年龄:");
			    scanf("%d",&datas[i].age); 
			    printf("请输入需要修改的学生的民族:");
			    scanf("%s",datas[i].nation);
			    printf("请输入需要修改的学生的籍贯:");
			    scanf("%s",datas[i].origin);
			    printf("请输入需要修改的学生的联系方式:");
			    scanf("%s",datas[i].contact);
			}
		if(flg==0)
		    {
				printf("系统内没有该位学生的信息\n") ;
			}
		printf("修改成功!\n");	
 }
 ///
 void seek()//寻找 
 {
    printf("请输入要查找的学生学号:");
	char sno[20];
    scanf("%s",sno);
	int flg,i;
	flg=0;
    for(i=0;i<sl;i++)
	if(strcmp(datas[i].sno,sno)==0)
		{
			flg=1;
		    printf("%s %s %s %d %s %s %s\n",datas[i].sno,datas[i].name,datas[i].sex,
			datas[i].age,datas[i].nation,datas[i].origin,datas[i].contact);
		}
	if(flg==0)
	    {
			printf("系统内没有该位学生的信息!\n") ;
		}
}
 
 ///
 int main()//主函数  
 {
    system("color 1F");//改变输出颜色 
 	int cmd;
 	do
 	{
 		menu();
 		scanf("%d",&cmd);
 		switch(cmd)
 		{
 			case 1:
				 printf("添加一条学生信息\n");
			     add();
			     break;
		     case 2:
			     printf("修改一条学生信息\n");
			     modify() ;
			     break;
 			case 3:
			     printf("查找一条学生信息\n");
			     seek();
			     break;
			case 4:
			     printf("删除一条学生信息\n");
			     dele(); 
			     break;
 			case 5:
			     printf("从文件导入学生信息\n");
			     read();
			     break;
 			case 6:
			     printf("将学生信息导入文件\n");
			     save();
			     break;
 			case 7:
			     printf("打印所有学生信息\n");
			     printxinxi();
			     break;
			case 8:printf("已退出学生信息管理系统!\n ");
			     break;
 			default:
			     printf("没有该项操作,请输入正确的操作!\n") ;
			     printf("\n");
				 break; 
		 } 
 	 }
	 while(cmd!=8);	 
 	 return 0;
}

 

 

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值