精华内容
下载资源
问答
  • 学生学籍管理系统

    2020-06-11 19:24:52
    学生学籍管理系统
    
    ```# include <stdio.h>
    # include <stdlib.h>
    # include <string.h>
    # include <malloc.h>
    # include <windows.h>
    # define F "数据.txt" //文件路径
    
    typedef struct Student
    {
    	int num;//定义学生学号类型
    	char name[10];//学生名字类型为字符型
        char xy[100];	//学院 
        char bj[15];	//班级 
        char sex[10];	//性别 
        int math;		//数学 
        int English;	//英语 
        int computer;	//计算机 
        struct Student *next;
    }Stu;
    //欢迎界面 
    void Welcome() 
    { 
    	printf("\n\n"); 
    	printf(" \t\t*****************************************************\n"); 
    	printf(" \t\t***                                               ***\n"); 
    	printf(" \t\t*****************************************************\n"); 
    	printf(" \t\t***                                               ***\n"); 
    	printf(" \t\t***          欢迎使用学生成绩管理系统             ***\n"); 
    	printf(" \t\t***                                               ***\n"); 
    	printf(" \t\t***                                               ***\n"); 
    	printf(" \t\t***              制作人:zachary                  ***\n"); 
    	printf(" \t\t***                                               ***\n"); 
    	printf(" \t\t***                2018.12.19                     ***\n"); 
    	printf(" \t\t***                                               ***\n"); 
    	printf(" \t\t*****************************************************\n"); 
    	printf(" \t\t***                                               ***\n"); 
    	printf(" \t\t*****************************************************\n"); 
    } 
    //登录界面 
    void login()		
    {
    	char userName[5],password[5];
    	int i;
    	system( "color 3f" );
    	system( "mode con cols=100 lines=40" );
    	Welcome();
    	printf("\n\n   ------------------------------------------欢迎使用--------------------------------------------\n");
    	for(i=1;i<4;i++)//第四次输入错误后退出 
    	{
            printf("\t\t\n       请输入用户名:");
            gets(userName);
            printf("\t\t\n       请输入密码:");
            gets(password);
            if ((strcmp(userName,"admin")==0) && (strcmp(password,"123")==0))/*验证用户名和密码*/
            {
    			
                printf("\n   ---------------------------------登陆成功---------------------------------");
                Sleep(500);
                return;
            }
            else
            {
                if(i<3)
                {
                    printf("\n     用户名或密码错误,请重新输入!\n");
                }
                else
                {
                    printf("\n     您已连续3次将用户名或密码输错,系统将退出!\n");
                    exit(0);
                }
            }
    	}
    }
    //菜单选项 
    int menu()
    {      
    	int a;
        do{
    		system("cls");
    		puts("\t\t★★★★★★★★    主菜单     ★★★★★★★★\n\n");
    		puts("\t\t★              1.添加学生信息               ★\n");
    		puts("\t\t★              2.显示学生信息               ★\n");
    		puts("\t\t★              3.按条件排序                 ★\n");
    		puts("\t\t★              4.插入学生信息               ★\n");
    		puts("\t\t★              5.查找学生信息               ★\n");
    		puts("\t\t★              6.修改学生信息               ★\n");
    		puts("\t\t★              7.删除学生信息               ★\n");
    		puts("\t\t★              8.保存到文件                 ★\n");
    		puts("\t\t★              9.从文件读取                 ★\n");
    		puts("\t\t★              0.退出                       ★\n");
    		puts("\t\t★★★★★★★★★★★★★★★★★★★★★★★★");
    		printf("请选择服务种类(0-9):\n");
    		scanf("%d",&a);
        }
    	while(a<0||a>9);
        getchar();
        return a;
    }
    
    //添加学生信息 
    struct Student *input(int n)                  
    {
    	int i,k=0;
    	system("cls");//清屏 
    	Stu *head,*p1,*p2;
    	if(n<=0)
    	{
    		return NULL;
    	}
    	p1=(Stu *)malloc(sizeof(Stu));//分派空间 
    	printf("\t\t数学:");
    	scanf("%d",&p1->math);
    	printf("\t\t英语:");                
    	scanf("%d",&p1->English);
    	printf("\t\t计算机:");
    	scanf("%d",&p1->computer);
    	printf("\t\t学院:");
    	scanf("%s",&p1->xy);
    	printf("\t\t班级:");
    	scanf("%s",&p1->bj);
    	printf("\t\t学号:");
    	scanf("%d",&p1->num);
    	printf("\t\t姓名:");
    	scanf("%s",&p1->name);
    	printf("\t\t性别:");
    	scanf("%s",&p1->sex);
    	printf("\n");
    	head=p1;//p1指向头节点 
    	p1->next=NULL;//尾节点浮空 
    	for(i=1;i<n;i++)
    	{
    		p2=(Stu *)malloc(sizeof(Stu));
    		printf("\t\t数学:");
    		scanf("%d",&p2->math);
    		printf("\t\t英语:");                
    		scanf("%d",&p2->English);
    		printf("\t\t计算机:");
    		scanf("%d",&p2->computer);
    		printf("\t\t学院:");
    		scanf("%s",&p2->xy);
    		printf("\t\t班级:");
    		scanf("%s",&p2->bj);
    		printf("\t\t学号:");
    		scanf("%d",&p2->num);
    		printf("\t\t姓名:");
    		scanf("%s",&p2->name);
    		printf("\t\t性别:");
    		scanf("%s",&p2->sex);
    		printf("\n");
    		p1->next=p2;//新的p2链接到表尾 
    		p1=p2;//p1指向新的表尾 
    		if(i==n-1)
    		{
    			p1->next=NULL;	//尾节点置空 
    		} 
    	}
    	getchar();
    	return head;
    }
    
    //输出学生信息
    void output(Stu *head)
    {
    	system("cls");
    	printf("学号\t 姓名\t性别\t      学院    \t\t  班级\t\t数学\t英语\t计算机\n");
    	printf("--------------------------------------------------------------------------------------\n");
    	Stu *p;
    	p=head;
    	if(head==NULL)
    	{
    		printf("\n\t\t\t学生信息为空!\n");
    	}
    	else
    	{
    		while(p!=NULL)
    		{
    			printf("%d\t%s\t%s\t%s\t%s\t%d\t%d\t%d\t\n",p->num,p->name,p->sex,p->xy,p->bj,p->math,p->English,p->computer);
    			p=p->next;//后移 
    		}
    	} 
    	getchar();	
    }
    
    //排序菜单 
    int sort_menu()
    {
    	int a;
    	system("cls");
        do{
    		system("cls");
    		printf("\n\n\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n"); 
            printf("\t\t\t1. 按照数学成绩排序\n\n");
            printf("\t\t\t2. 按照英语成绩排序\n\n");
            printf("\t\t\t3. 按照计算机成绩排序\n\n");
            printf("\t\t\t4. 按照学号排序\n\n");
            printf("\t\t\t0. 返回到主菜单\n\n");
            printf("\n\n\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n");
            printf("\t\t请选择您要运行的选项按(0-4):");
            scanf("%d",&a);
        }while(a<0||a>8);
        getchar();
        return a;
    }
    //排序选择 
    int sort_select(Stu *head,int n)
    {
    	Stu *p,*q;
    	int num;
    	char name[10];
        char xy[100];
        char bj[15];
        char sex[10];
        int math;
        int English;
        int computer;	
    	system("cls");   
        switch(n)
    	{
    	case 1:
    		for(p=head;p!=NULL;p=p->next)
    		{
    			for(q=p->next;q!=NULL;q=q->next)
    			{
    				if(p->math>q->math)
    				{
    					math=q->math;
    					English=q->English;
    					computer=q->computer;
    					strcpy(xy,q->xy);
    					strcpy(bj,q->bj);
    					num=q->num;
    					strcpy(name,q->name);
    					strcpy(sex,q->sex);
    					
    					q->math=p->math;
    					q->English=p->English;
    					q->computer=p->computer;
    					strcpy(q->xy,p->xy);
    					strcpy(q->bj,p->bj);
    					q->num=p->num;
    					strcpy(q->name,p->name);
    					strcpy(q->sex,p->sex);
    					
    					p->math=math;
    					p->English=English;
    					p->computer=computer;
    					strcpy(p->xy,xy);
    					strcpy(p->bj,bj);
    					p->num=num;
    					strcpy(p->name,name);
    					strcpy(p->sex,sex);
    				}
    			}
    		}
    		output(head);
    		system("pause");
    		return 1;
    	case 2:
    		for(p=head;p!=NULL;p=p->next)
    		{
    			for(q=p->next;q!=NULL;q=q->next)
    			{
    				if(p->English>q->English)
    				{
    					math=q->math;
    					English=q->English;
    					computer=q->computer;
    					strcpy(xy,q->xy);
    					strcpy(bj,q->bj);
    					num=q->num;
    					strcpy(name,q->name);
    					strcpy(sex,q->sex);
    					
    					q->math=p->math;
    					q->English=p->English;
    					q->computer=p->computer;
    					strcpy(q->xy,p->xy);
    					strcpy(q->bj,p->bj);
    					q->num=p->num;
    					strcpy(q->name,p->name);
    					strcpy(q->sex,p->sex);
    					
    					p->math=math;
    					p->English=English;
    					p->computer=computer;
    					strcpy(p->xy,xy);
    					strcpy(p->bj,bj);
    					p->num=num;
    					strcpy(p->name,name);
    					strcpy(p->sex,sex);
    				}
    			}
    		}
    		output(head);
    		system("pause");
    		return 1;
    		
    	case 3:
    		for(p=head;p!=NULL;p=p->next)
    		{
    			for(q=p->next;q!=NULL;q=q->next)
    			{
    				if(p->computer>q->computer)
    				{
    					math=q->math;
    					English=q->English;
    					computer=q->computer;
    					strcpy(xy,q->xy);
    					strcpy(bj,q->bj);
    					num=q->num;
    					strcpy(name,q->name);
    					strcpy(sex,q->sex);
    					
    					q->math=p->math;
    					q->English=p->English;
    					q->computer=p->computer;
    					strcpy(q->xy,p->xy);
    					strcpy(q->bj,p->bj);
    					q->num=p->num;
    					strcpy(q->name,p->name);
    					strcpy(q->sex,p->sex);
    					
    					p->math=math;
    					p->English=English;
    					p->computer=computer;
    					strcpy(p->xy,xy);
    					strcpy(p->bj,bj);
    					p->num=num;
    					strcpy(p->name,name);
    					strcpy(p->sex,sex);
    				}
    			}
    		}
    		output(head);
    		system("pause");
    		return 1;
    		
    	case 4:
    		for(p=head;p!=NULL;p=p->next)
    		{
    			for(q=p->next;q!=NULL;q=q->next)
    			{
    				if(p->num>q->num)
    				{
    					math=q->math;
    					English=q->English;
    					computer=q->computer;
    					strcpy(xy,q->xy);
    					strcpy(bj,q->bj);
    					num=q->num;
    					strcpy(name,q->name);
    					strcpy(sex,q->sex);
    					
    					q->math=p->math;
    					q->English=p->English;
    					q->computer=p->computer;
    					strcpy(q->xy,p->xy);
    					strcpy(q->bj,p->bj);
    					q->num=p->num;
    					strcpy(q->name,p->name);
    					strcpy(q->sex,p->sex);
    					
    					p->math=math;
    					p->English=English;
    					p->computer=computer;
    					strcpy(p->xy,xy);
    					strcpy(p->bj,bj);
    					p->num=num;
    					strcpy(p->name,name);
    					strcpy(p->sex,sex);
    				}
    			}
    		}
    		output(head);
    		system("pause");
    		return 1;
    		
    	case 0:
    		return 0;
    	}
    	return 0;
    }
    
    //插入学生信息
    int insert(Stu *head)
    {
        Stu *p,*pnew;
        int m,j;
        system("cls");
    	j=0;
    	printf("\t\t\t请输入想要插到的位置:");
    	scanf("%d",&m);
    	p=head;
    	if(j<m&&p!=NULL)
    	{
    		pnew=(Stu *)malloc(sizeof(Stu));
    		printf("请输入要插入的学生信息:\n\n"); 
    		printf("\t\t数学:");
    		scanf("%d",&pnew->math);
    		printf("\t\t英语:");                
    		scanf("%d",&pnew->English);
    		printf("\t\t计算机:");
    		scanf("%d",&pnew->computer);
    		printf("\t\t学院:");
    		scanf("%s",&pnew->xy);
    		printf("\t\t班级:");
    		scanf("%s",&pnew->bj);
    		printf("\t\t学号:");
    		scanf("%d",&pnew->num);
    		printf("\t\t姓名:");
    		scanf("%s",&pnew->name);
    		printf("\t\t性别:");
    		scanf("%s",&pnew->sex);
    		printf("\n");
    		pnew->next=p->next;
    		p->next=pnew;
    		j++;
    		printf("\n\t\t\t插入成功!\n");	
    	}
    	else
    	{
    		printf("请输入正确的位置!\n");
    		return 0;
    	}
    	
    	system("pause");
    	return 0;
    }
    
    //查找菜单 
    int find_menu()
    {
    	int a;
        do{
    		system("cls");
    		printf("\n\n\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n"); 
            printf("\t\t\t1. 按照学院查找\n\n");
            printf("\t\t\t2. 按照班级查找\n\n");
            printf("\t\t\t3. 按照学号查找\n\n");
            printf("\t\t\t4. 按照姓名查找\n\n");
            printf("\t\t\t0. 返回到主菜单\n\n");
            printf("\n\n\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n");
            printf("\t\t请选择您要运行的选项按(0-4):");
            scanf("%d",&a);
        }while(a<0||a>8);
        getchar();
        return a;
    }
    int find_select(Stu *head,int n)
    {	
    	Stu *p;
    	p=head;
    	switch(n)
    	{
    	case 1:	
    		system("cls");
    		char d[100];
    		p=head;
    		printf("\n\t\t\t要查找的学院为:");
    		scanf("%s",&d);
    		printf("学号\t 姓名\t性别\t      学院    \t\t  班级\t\t数学\t英语\t计算机\n");
    		printf("----------------------------------------------------------\n");
    		while(p!=NULL)
    		{
    			if(strcmp(p->xy,d)==0)
    				printf("%d\t%s\t%s\t%s\t%s\t%d\t%d\t%d\t\n",p->num,p->name,p->sex,p->xy,p->bj,p->math,p->English,p->computer);		
    			p=p->next;
    		}
    		system("pause");
    		getchar();
    		return 1;
    	case 2:
    		system("cls");
    		char e[15];
    		p=head;
    		printf("\n\t\t\t要查找的班级为:");
    		scanf("%s",&e);
    		printf("学号\t 姓名\t性别\t      学院    \t\t  班级\t\t数学\t英语\t计算机\n");
    		printf("----------------------------------------------------------\n");
    		while(p!=NULL)
    		{
    			if(strcmp(p->bj,e)==0)
    				printf("%d\t%s\t%s\t%s\t%s\t%d\t%d\t%d\t\n",p->num,p->name,p->sex,p->xy,p->bj,p->math,p->English,p->computer);		
    			p=p->next;
    		}
    		system("pause");
    		getchar();
    		return 1;
    	case 3:
    		system("cls");
    		p=head;
    		int f;
    		printf("\n\t\t\t要查找的学号为:");
    		scanf("%d",&f);
    		printf("学号\t 姓名\t性别\t      学院    \t\t  班级\t\t数学\t英语\t计算机\n");
    		printf("----------------------------------------------------------\n");
    		while(p!=NULL)
    		{
    			if(p->num==f)
    				printf("%d\t%s\t%s\t%s\t%s\t%d\t%d\t%d\t\n",p->num,p->name,p->sex,p->xy,p->bj,p->math,p->English,p->computer);		
    			p=p->next;
    		}
    		system("pause");
    		getchar();
    		return 1;
    	case 4:
    		system("cls");
    		p=head;
    		char g[20];
    		printf("\n\t\t\t要查找的姓名为:");
    		scanf("%s",&g);
    		printf("学号\t 姓名\t性别\t      学院    \t\t  班级\t\t数学\t英语\t计算机\n");
    		printf("----------------------------------------------------------\n");
    		while(p!=NULL)
    		{
    			if(strcmp(p->name,g)==0)
    				printf("%d\t%s\t%s\t%s\t%s\t%d\t%d\t%d\t\n",p->num,p->name,p->sex,p->xy,p->bj,p->math,p->English,p->computer);	
    			p=p->next;
    		}
    		system("pause");
    		return 1;
    		getchar();
    	case 0:
    		system("pause");
    		getchar();
    		return 0;
    	}
    	return 0;
    }
    //修改学生信息 
    void correct(Stu *head)
    {
    	int a;
    	system("cls");
    	printf("\n\t\t\t请输入将要修改的学生的学号:");
    	scanf("%d",&a);
    	Stu *p;
        p=head;
    	while(p!=NULL)
        {
    		if(a==p->num)
    		{
    			printf("\t\t修改的数学成绩:");
    			scanf("%d",&p->math);
    			printf("\t\t修改的英语成绩:");                
    			scanf("%d",&p->English);
    			printf("\t\t修改的计算机成绩:");
    			scanf("%d",&p->computer);
    			printf("\t\t修改的学院:");
    			scanf("%s",&p->xy);
    			printf("\t\t修改的班级:");
    			scanf("%s",&p->bj);
    			printf("\t\t修改的学号:");
    			scanf("%d",&p->num);
    			printf("\t\t修改的姓名:");
    			scanf("%s",&p->name);
    			printf("\t\t修改的性别:");
    			scanf("%s",&p->sex);
    			printf("\n\t\t\t修改成功!\n");
    		}
    		else if(a!=p->num&&p->next==NULL) 
    		{
    			printf("请输入正确的学号!"); 
    		}
            p=p->next;
        }
    }
    
    //删除学生信息
    struct Student *del(Stu *head)
    {
    	int x,y; 
    	system("cls");
    	printf("\n\t\t\t1.删除某个学生信息");
    	printf("\n\t\t\t2.删除全部学生信息\n");
    	printf("\t\t\t0. 返回到主菜单\n\n");
    	printf("\n\t\t\t选择0-2:");
        scanf("%d",&x);
        if(x==1)
        {
    		printf("\n\t\t\t请输入将要删除学生的位置:");
    		scanf("%d",&y);
    		Stu *p,*q;
    		int i;
    		if(y-1==0)
    		{
    			head=head->next;
    		}
    		else
    		{
    			p=head;
    			for(i=1;i<y&&p->next!=NULL;i++)
    			{
    				p=p->next;
    			}
    			q=p->next;
    			p->next=q->next;
    		}
    		printf("\n\t\t\t删除成功!\n");
    		getchar();
    		return head;
    	}
    	else if(x==2)
    	{
    		head=NULL;
    		printf("\n\t\t\t删除成功!\n");
    		return head;
    		getchar();
    	}
    	else
    	{
    		printf("输入错误,返回主菜单!\n");
    		getchar();
    		return head;
    	}
    }
    
    //写入文件 
    void write_file(Stu *head)
    {
    	FILE *fp;
    	Stu *p;
    	system("cls");		
    	if((fp=fopen(F,"at+"))==NULL)
    	{
    		printf("文件打开失败!\n");
    	}
    	p=head;
    	while(p!=NULL)//将输入项表中的变量值按照格式字符串指定的格式输入到文件指针fp 所指向的文件位置
    	{
    		fprintf(fp,"%d\t%s\t%s\t%s\t%s\t%d\t%d\t%d\t\n",p->num,p->name,p->sex,p->xy,p->bj,p->math,p->English,p->computer);
    		p=p->next;
    	}
    	printf("\n\t\t\t写入成功!\n");
        fflush(fp);	// 刷新缓冲区,将缓冲区的内容写入文件 
        fclose(fp);
    }
    
    int read_file()
    {
    	FILE *fp;
    	system("cls");
    	printf("学号\t 姓名\t性别\t      学院    \t\t  班级\t\t数学\t英语\t计算机\n");
    	printf("--------------------------------------------------------------------------------------\n");
    	int num;
    	char name[10];
        char xy[100];
        char bj[15];
        char sex[10];
        int math;	
        int English; 
        int computer;
    	fp=fopen(F,"rb+");
    	if( NULL == (fp = fopen(F,"rb+")) ) //判断文件是否存在及可读
    	{ 
    		printf("文件还没有创建,请输入学生信息并保存吧!\n"); 
    		getchar();
    	}
    	while(fscanf(fp,"%d\t%s\t%s\t%s\t%s\t%d\t%d\t%d\t\n",&num,&name,&sex,&xy,&bj,&math,&English,&computer)!=EOF)
    	{
    		printf("%d\t%s\t%s\t%s\t%s\t%d\t%d\t%d\t\n",num,name,sex,xy,bj,math,English,computer);
    	}
    	return 0;
    }
    int main()          
    {
    	
    	int n,x,y;
    	login();
    	Stu *head=NULL;
    	for(;;)
    	{
            switch(menu())
            {
    		case 1:
    			system("cls");
    			printf("\n\n\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n");
    			printf("\t\t\t请输入学生的个数:");
    			scanf("%d",&n);
    			if(n<=0)
    			{
    				printf("\n\t\t\t请输入正确的人数!");
    				Sleep(500);
    				break;
    			}
    			else
    			{
    				printf("\n\t\t\t请输入学生数据\n\n");
    				head=input(n);
    				fflush(stdin);
    				system("pause");
    			}
    			break;
    			
    		case 2:
    			system("cls");
    			printf("\n\t\t\t\t\t\t\t\t显示学生数据\n");
    			output(head);
    			fflush(stdin);
    			system("pause");
    			break; 
    		case 3:
    			do
    			{
    				x=sort_select(head,sort_menu());
    			}while(x!=0);
    			
    			break;
    		case 4:
    			system("cls");
    			printf("\n\n\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n");
    			printf("\t\t\t输入要插入的学生的信息\n");
    			insert(head);
    			fflush(stdin);
    			system("pause");
    			break;               
    		case 5:
    			system("cls");
    			do
    			{
    				y=find_select(head,find_menu());
    			}while(y!=0);
    			break;
    		case 6:
    			system("cls");
    			printf("\n\n\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n");
    			correct(head);
    			fflush(stdin);
    			system("pause");
    			break;
    		case 7:
    			system("cls");
    			printf("\n\n\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n");
    			head=del(head);
    			fflush(stdin);
    			system("pause");
    			break;
    		case 8:
    			write_file(head);
    			fflush(stdin);
    			system("pause");
    			break;
    		case 9:
    			read_file();
    			fflush(stdin);
    			system("pause");
    			break;
    		case 0:
    			printf("\n\t\t\t谢谢使用\n");
    			exit(0);
            }
    	}
    	return 0;
    }
    
    ```c
    在这里插入代码片
    
    
    
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,150
精华内容 860
关键字:

学生学籍管理系统