小言_互联网的博客

C语言小项目 学生管理系统

355人阅读  评论(0)
#include<stdio.h>
#include<stdlib.h>   //标准库头文件
#include<string.h>
#include<Windows.h>     //一个重要头文件,其中又包括了许多其他头文件
int n=7;//学生总人数,n判断数据有几组
int k=1,f;
/*定义一个结构体*/
struct student
	{
		char no[10];     //学号
		char n[10];		//姓名
		int  age;			//年龄
		char sex[5];		//性别
		char year[10];		//出生年月
		char ad[10];		//地址
		char phone[10];		//电话
		char mail[10];		//邮箱
	}i[20];
struct mima
{
	char a[10];
	char b[10];
}m[20];
//显示当前信息
void display()
{
	int j=0;
	FILE*fp;
	fp=fopen("d:\\student.txt","r");
	if(fp==NULL)
		printf("输出错误");
	while(fscanf(fp,"%s %s %d %s %s %s %s %s",i[j].no,i[j].n,&i[j].age,i[j].sex,i[j].year,i[j].ad,i[j].phone,i[j].mail)==8)
		{
			j++;
		}
		n=j;
	
   printf("学生学号	学生姓名	年龄		性别		出生年月	地址		电话		邮箱		\n");
			 printf("--------------------------------------------------------------------\n");
	for(j=0;j<n;j++)
			 printf("%s		%s		%d		 %s		 %s		%s		 %s		 %s\n",i[j].no,i[j].n,i[j].age,i[j].sex,i[j].year,i[j].ad,i[j].phone,i[j].mail);
	
}
//刷新信息
void update()
{    
	int j=0;
		FILE*fp;
	fp=fopen("d:\\student.txt","r");
	if(fp==NULL)
		printf("输出错误");
	while(fscanf(fp,"%s %s %d %s %s %s %s %s",i[j].no,i[j].n,&i[j].age,i[j].sex,i[j].year,i[j].ad,i[j].phone,i[j].mail)==8)
		{
			j++;
		}
		n=j;  //n判断数据有几组
	printf("******************刷新成功************************************\n");
	fclose(fp);
}
//保存信息
void fileWrite()
{
	
	FILE*fp;
	int j;
	fp=fopen("d://student.txt","w");
	if(fp==NULL)
		printf("文件打开错误\n");
	for(j=0;j<n;j++)
	{
			fprintf(fp,"%s		%s		%d		 %s		 %s		%s		 %s		 %s\n",i[j].no,i[j].n,i[j].age,i[j].sex,i[j].year,i[j].ad,i[j].phone,i[j].mail);
	}
	fclose(fp);
	printf("***********************保存成功******************************\n");
}
//帮助系统
void help() 
{
    printf("\n0.欢迎使用系统帮助!\n");
    printf("\n1.初次进入系统后,请先选择增加学生信息;\n");
    printf("\n2.按照菜单提示键入数字代号;\n");
    printf("\n3.增加学生信息后,切记保存;\n");
    printf("\n4.谢谢您的使用!\n");
}

//查询学生信息
void seek()
{
	int j=0,k=0;
	int x=1;      //判断是否存在查询的学生,不存在时x=0,然后输出不存在。
	int choice;
	char s[10];
	FILE*fp;
	fp=fopen("d:\\student.txt","r");
	if(fp==NULL)
		printf("输出错误");
	while(fscanf(fp,"%s %s %d %s %s %s %s %s",i[j].no,i[j].n,&i[j].age,i[j].sex,i[j].year,i[j].ad,i[j].phone,i[j].mail)==8)
		{
			j++;
		}
		n=j;      //用n判断有几组数据,for循环时控制循环次数。
	printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
    printf("-------------------------1.按学号查询-----------------------\n");
    printf("-------------------------2.按姓名查询-----------------------\n");
    printf("-------------------------3.退出本菜单-----------------------\n");
    printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
	while(x){
		printf(" * * * * * * * * * *请输入查询方式前的序号* * * * * * * * * *\n");
		scanf("%d",&choice);
		switch(choice)
	{
		case 1:
			{
		printf(" * * * * * * * * * *请输入您要查询的学号 * * * * * * * * * *\n");
			scanf("%s",s);
					for(j=0;j<n;j++)
					if(strcmp(s,i[j].no)==0)
				{
					k=1;
					 printf("学生学号	学生姓名	年龄		性别		出生年月	地址		电话		邮箱		\n");
                        printf("--------------------------------------------------------------------\n");
						printf("%s		%s		%d		 %s		 %s		%s		 %s		 %s\n",i[j].no,i[j].n,i[j].age,i[j].sex,i[j].year,i[j].ad,i[j].phone,i[j].mail);
						break;
				}
				if(k==0) 
					{
					printf("---------------------该学生不存在------------------------\n");
				break;
				}
				
			
			}  break;
		case 2:
			{
				printf(" * * * * * * * * * *请输入您要查询的姓名 * * * * * * * * * *\n");
			scanf("%s",s);
			for(j=0;j<n;j++)
			if(strcmp(s,i[j].n)==0)
					{
						k=1;
					 printf("学生学号	学生姓名	年龄		性别		出生年月	地址		电话		邮箱		\n");
                        printf("--------------------------------------------------------------------\n");
						printf("%s		%s		%d		 %s		 %s		%s		 %s		 %s\n",i[j].no,i[j].n,i[j].age,i[j].sex,i[j].year,i[j].ad,i[j].phone,i[j].mail);
						break;
				}
				if(k==0) 
					{
						printf("---------------------该学生不存在------------------------\n");
				break;
				}
			
			
			break;
			}
		case 3:
			   x=0;break;
		default:
			printf(" * * * * * * * * * *请输入正确序号1 2 3 * * * * * * * * * *\n");
			break;
		}
	
	}
}
//修改学生信息
void modify()
{
	int j=0,a,x=1,k=-1;  //k的作用是判断输入的学号是否存在。
	FILE*fp;
	fp=fopen("d:\\student.txt","r");
	if(fp==NULL)
	{
		printf("文件打开错误\n");
		system("pause");              //防止生成exe界面时闪一下,使程序暂停
		exit(0);                   //表示程序非正常退出。
	}
	while(fscanf(fp,"%s %s %d %s %s %s %s %s",i[j].no,i[j].n,&i[j].age,i[j].sex,i[j].year,i[j].ad,i[j].phone,i[j].mail)==8)
		{
			j++;
		
		n=j;     //用n判断有几组数据,for循环时控制循环次数。
	}
	char no1[10];     //学号
		char name[10];		//姓名
		int  age1;			//年龄
		char sex1[5];		//性别
		char year1[10];		//出生年月
		char ad1[10];		//地址
		char phone1[10];		//电话
		char mail1[10];		//邮箱
		printf(" * * * * * * * * * *请输入您要修改信息的学号 * * * * * * * * * *\n");
		scanf("%s",no1);
		for(j=0;j<n;j++)
		{
			
			if(strcmp(no1,i[j].no)==0)
				k=j;
		}
			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");
				
				while(x){
					printf("请输入编号修改:");
				scanf("%d",&a);
				switch(a)
				{
				case 1:
					printf("请输入新的姓名:");
					scanf("%s",name);
					strcpy(i[k].n,name);
					fileWrite();     //用函数保存(保存函数)
					break;
				case 2:
					printf("请输入新的年龄:");
					scanf("%d",&age1);
					i[k].age=age1;
					fileWrite();    //用函数保存(保存函数)
					break;
				case 3:
					printf("请输入新的性别:");
					scanf("%s",sex1);
					strcpy(i[k].sex,sex1);
					fileWrite();
					break;
				case 4:
					printf("请输入新的出生年月:");
					scanf("%s",year1);
					strcpy(i[k].year,year1);
					fileWrite();    //用函数保存(保存函数)
					break;
				case 5:
					printf("请输入新的地址:");
					scanf("%s",ad1);
					strcpy(i[k].ad,ad1);
					fileWrite();
					break;
				case 6:
					printf("请输入新的电话:");
					scanf("%s",phone1);
					strcpy(i[k].phone,phone1);
					fileWrite();    //用函数保存(保存函数)
					break;
				case 7:
					printf("请输入新的邮箱:");
					scanf("%s",mail1);
					strcpy(i[k].mail,mail1);
					fileWrite();    //用函数保存(保存函数)
					break;
				case 8: x=0; break;
				default:
					printf("请输入正确的序号\n");
				}
			}
	if(k==-1)
	{
		printf("学号输入错误\n");
			
			}
			
		}





//  新增学生信息
void insert()
{
	FILE*fp;
		fp=fopen("d://student.txt","a");
	if(fp==NULL)
		printf("文件打开错误\n");
        printf("请输入第%d个学生的学号:",n+1);
        scanf("%s",i[n+1].no);
        printf("\n请输入第%d个学生的姓名:",n+1);
        scanf("%s",i[n+1].n);
        printf("\n请输入第%d 个学生的性别:",n+1);
        scanf("%s",i[n+1].sex);
        printf("\n请输入第%d 个学生的年龄:",n+1);
        scanf("%d",&i[n+1].age);
        printf("\n请输入第%d 个学生的出生日期:",n+1);
        scanf("%s",i[n+1].year);
        printf("\n请输入第%d 个学生的地址:",n+1);
        scanf("%s",i[n+1].ad);
        printf("\n请输入第%d 个学生的电话:",n+1);
        scanf("%s",i[n+1].phone);
		printf("\n请输入第%d个学生的邮箱:",n+1);
		scanf("%s",i[n+1].mail);
			fprintf(fp,"%s	%s	%d	%s	%s	%s	%s	%s\n",i[n+1].no,i[n+1].n,i[n+1].age,i[n+1].sex,i[n+1].year,i[n+1].ad,i[n+1].phone,i[n+1].mail);  //保存数据
			fclose(fp);
			printf("------------------------添加成功-----------------------------\n");
			n=n+1;  //随时改变n的值
		}
//  删除函数;
void dele()
{
	int j=0;int x=0; //x来判断是否有该学号。
	FILE*fp;
	fp=fopen("d://student.txt","r");
	if(fp==NULL)printf("打开文件失败");
	while(fscanf(fp,"%s %s %d %s %s %s %s %s",i[j].no,i[j].n,&i[j].age,i[j].sex,i[j].year,i[j].ad,i[j].phone,i[j].mail)==8)
		{
			j++;
		}
		n=j;    //用n判断有几组数据,for循环时控制循环次数。

	char s[10];
	printf("请输入要删除的学号");
	scanf("%s",s);
	for(j=0;j<n;j++)
		if(strcmp(s,i[j].no)==0)
		{
			for(f=j;f<n-1;f++)  //删除后面的每一组数据往前靠一个
			{
				i[f]=i[f+1];
			}
			x=1;
		}
		if(x==0) printf("学号不存在");
		if(x==1) 
			{
				n=n-1;
		
		printf("------------------------删除成功-----------------------------\n");
		fileWrite();
		}
}
//界面
void menu()
{
	int num;
	printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
    printf(" *|             		学生信息管理系统      |*\n");
    printf(" *|                                                       |*\n");
    printf(" *|       * * * * * * *系统功能菜单* * * * * * *          |*\n");
    printf(" *|    --------------------------------------------       |*\n");
    printf(" *|                                                       |*\n");
    printf(" *|       0.系统帮助及说明  |   1.刷新学生信息            |*\n");
    printf(" *|                                                       |*\n");
    printf(" *|       2.查询学生信息    |   3.修改学生信息            |*\n");
    printf(" *|                                                       |*\n");
    printf(" *|       4.增加学生信息    |   5.按学号删除信息          |*\n");
    printf(" *|                                                       |*\n");
    printf(" *|       6.显示当前信息    |   7.保存当前学生信息        |*\n");
    printf(" *|                                                       |*\n");
    printf(" *|                    8.退出系统                         |*\n");
    printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
    printf("------------------------------------------------------------\n");
	printf("请选择菜单编号:");
    scanf("%d",&num);
    switch(num) {
        case 0:
            help();
            break;
        case 1:
            update();
            break;
        case 2:
            seek();
            break;
        case 3:
            modify();
            break;
        case 4:
            insert();
            break;
		case 5:
			dele();
			break;
		case 6:
			display();
			break;
        
        case 7:
            fileWrite();
            break;
        case 8:
            k=0;
            break;
		
        default:
            printf("请在0-9之间选择\n");

}
}

void sign()
{
	int j=0,g;
	FILE*f;
	f=fopen("d:\\mima.txt","r");
			while(fscanf(f,"%s %s",m[j].a,m[j].b)==2)
			{
				j++;
				g=j;
			}
			fclose(f);

	
	
		system("color 8B");  //未登录之前系统为灰色。
 printf("|——————————————————————————————————————|\n");
 printf("|——————————————————————————————————————|\n");
 printf("|                  ◇◇□☆★ 欢迎进入信息管理系统 ★☆□◇◇                |\n");
 printf("|——————————————————————————————————————|\n");
 printf("|                                 1-用户进入                                 |\n");
 printf("|——————————————————————————————————————|\n");
 printf("|				  2-申请账号						  		  |\n");
 printf("|——————————————————————————————————————|\n");
 printf("|                                 3-退出系统                                 |\n");
 printf("|——————————————————————————————————————|\n");
 printf("|——————————————————————————————————————|\n");
 printf("请输入您的选择\n");
 int c;
  scanf("%d",&c);
  if(c==1){
			
			f=fopen("d:\\mima.txt","r");
			while(fscanf(f,"%s %s",m[j].a,m[j].b)==2)
			{
				j++;
				g=j;
			}
			
		char a1[9];
		char b1[9];
		printf("请输入账号密码登录后查看\n");
		printf("账号:");
		scanf("%s",a1);
		printf("密码:");
		scanf("%s",b1);
		printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		for(j=0;j<g;j++)
		{
			if(strcmp(m[j].a,a1)==0&&strcmp(m[j].b,b1)==0)  
				{
					system("color 07");  //成功后系统恢复原来的颜色
					system("cls");
					fclose(f);
					menu();
					break;
		}
		}
			if(j==g)   //登录不成功退出系统。
	{
				printf("账号密码错误\n");
				system("cls");
				fclose(f);
				sign();
					
				
		}
		}

		
 
  if(c==2)
  { 
	 
			f=fopen("d:\\mima.txt","a");
			while(fscanf(f,"%s %s",m[j].a,m[j].b)==2)
			{
				j++;
				g=j;
			}
	  
	  printf("请输入您要申请的账号:");
	  scanf("%s",m[g+1].a);
	  printf("请设置您的密码");
	  scanf("%s",m[g+1].b);
	  printf("申请成功!");
	  fprintf(f,"%s %s",m[g+1].a,m[g+1].b );
	  g=g+1;
	  fclose(f);
	  sign();

  }
	
 
 if(c==3) 
	 {
		system("cls");//清空上一级所有
		printf("您已经成功退出系统,感谢您使用本系统,再见!\n");
		k=0;
	}
}
int main() 
	{
		
		system("title 学生信息管理系统");  //修改小黑框的名字
		sign();
		 while(k) //弹出时用k=0;
		 {
			 
			 menu();
		 }
   return 0;
}

转载:https://blog.csdn.net/weixin_46106870/article/details/104641910
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场