学生成绩管理系统(数组)

C语言写学生成绩管理系统,利用结构体数组写的

主要包括:1、增删查改四个最基本的功能,2、利用冒泡排序按总分从大到小的顺序写的排序,3、文件保存,读取(若在文件中保存的有学生成绩,有学号重复的能够显示重复)

一、头文件

#include<stdio.h>
#include<stdlib.h>//用于数组,清屏功能 
#include<string.h>
#include<conio.h>
#include<windows.h>
#define N 1000
#define LNE 20

二、函数(方便后面的调用,可随意调用,不用在意先后位置)

void initData();
void writeData();
void denglu();
void establish();
void caidan();
int panduan();
void keyDown();
void chance();
void chance2();
void insert_student();//1、添加学生信息
int find1(struct Student student[], int num);
void isIdSame(int x);
void search();//1、查找学生信息
int findIndex(int num);
void showone(struct Student stu);
void sortTotal();//3、按总分排序(冒泡排序)
void showAll();
void del();//4、删除学生信息
void updata();//5、修改学生信息
void inserInfo();
void inserCurrentInfo(int site);
void con();

三、结构体数组
 

struct Student {
    int num;
    char name[20];
    char banji[20];
    int math;
    int english;
    int computer;
    int sum;
    int total;
} student[N], student1;

四、注册登录账号(可利用预留手机号来找回密码)
    

void establish()                                                                   //创建账号,密码//修改密码
    {       
            char telephone[LNE];
            char telephone1[LNE];
            char password[LNE]; 
            char password1[LNE]; 
            char confirmation[LNE];
            int tryagain = 0;
            char account[LNE];
            char account1[LNE];
            char confirmationaccount[LNE];
            
        do{
            printf("---------------欢迎来到学生成绩管理系统--------------\n");
                printf("-----------------请创建账号-----------------\n");
                printf("\t\t请输入你的账号\n");
                scanf("%s",account);
                printf("\t\t请确认你的账号\n");
                scanf("%s",confirmationaccount); 
            }
            while(strcmp(account,confirmationaccount));
            printf("账号创建成功!你的账号为%s\n",account);
            printf("请输入您的手机号码:\n");   
            scanf("%s",telephone);
            printf("按任意键继续---\n"); 
            getch(); 
            system("cls"); 
            do{
                printf("------------------请创建密码-----------------\n");
                printf("请输入你的密码\n");
                scanf("%s",password);
                printf("请确认你的密码\n");
                scanf("%s",confirmation);
            }
            while(strcmp(password,confirmation));
            printf("密码创建成功!你的密码为%s\n",password);
            printf("按任意键开始登录系统....\n");
            getch();
            system("cls");//清屏 
            printf("—————登录系统——————\n"); 
            printf("请输入账号:");
            while(scanf("%s",account),strcmp(account,confirmationaccount))
            {
                tryagain++;
                if(tryagain<3)
                    printf("错误%d次,请重新输入\n",tryagain);
                else
                break;
            }
            if (tryagain>=3){
                printf("对不起,三次账号错误!\n");
                getch();
                printf("请重新创建账号!");
                system("cls");
                establish();
            }
            else{
                printf("账号正确!\n"); 
            }
            printf("请输入密码:");
                while(scanf("%s",password),strcmp(password, confirmation))
                {
                tryagain++;
                if(tryagain<3)
                    printf("错误%d次,请重新输入\n",tryagain);
                else
                break;
                }
            if (tryagain>=3)
            {
                printf("对不起,三次密码错误!\n");
                    
                    printf("请输入预留的手机号码:\n");
                    scanf("%s",telephone1);
                    if(!strcmp(telephone,telephone1))
                    {
            do{
                    printf("————创建密码—————\n");
                    printf("请输入你的密码\n");
                    scanf("%s",password);
                    printf("请确认你的密码\n");
                    scanf("%s",confirmation);
                }
                    while(strcmp(password,confirmation));
                    }
                    else
                    {
                    printf("输入错误,请重新创建账号!!!");
                    getch();
                    system("cls");
                    establish();
                    
                    }
                    printf("重新设置成功!\n");
                    printf("请输入您的账号:\n");
                    scanf("%s",account1);
                    if(strcmp(account1,account)==0)
                    printf("请输入新密码:\n");
                    else
                    printf("账号错误!请重新输入---\n");
                    while(scanf("%s",password1),strcmp(password,password1))
                    {
                    printf("学生成绩管理系统登陆成功!\n");
                    printf("按任意键进入系统..\n.");
                    getch();
                    system("cls");
                    break;
                    }
            }
            system("cls");
            caidan();    
    }


五、菜单

void caidan() {
    printf("\t--------------------------------------\n");
    printf("\t\t  欢迎进入学生成绩管理系统\n");
    printf("\t\t请选择操作\n");
    printf("\t\t1.添加学生信息\n");
    printf("\t\t2.查询学生信息\n");
    printf("\t\t3.排序学生信息\n");
    printf("\t\t4.删除学生信息\n");
    printf("\t\t5.修改学生信息\n");
    printf("\t\t6.输出学生信息表\n");
    printf("\t\t7.保存文件\n");
    printf("\t\t8.退出系统\n");
    printf("\t--------------------------------------\n");
    printf("请输入1~8:");
    
    keyDown();
}


六、 做交互(由菜单对应数字跳转所实现函数位置(使用switch函数))

void keyDown() {
    int c;
    c=panduan();
    system("cls");
    switch (c) {
        case 1:
            printf("------------【添加】--------------\n");
            insert_student();
            break;
        case 2:
            printf("------------【查询】--------------\n");
            search();
            break;
        case 3:
            printf("------------【排序】--------------\n");
            sortTotal();
            break;
        case 4:
            printf("------------【删除】--------------\n");
            del();
            break;
        case 5:
            printf("------------【修改】--------------\n");
            updata();
            break;
        case 6:
            printf("----------【学生信息表】-----------\n");
            showAll();
            break;
        case 7:
                printf("---------【保存文件】-----------\n");
                writeData();
                break;    
        case 8:
            printf("【退出系统】\n");
            printf("退出成功\n");
            system("pause");
            exit(0);//退出整个系统
            break;
    }
    printf("按任意键继续!");
    getchar();
    system("cls");//清屏
}
int panduan()
{
    int a,b;
    b=scanf("%d",&a);
    while(b!=1){
    while((getchar())!='\n');
    printf("警告:只能输入数字!\n");
    printf("请正确输入!\n");
    b=scanf("%d",&a);
    }
    b=0;
    return a;
}


七、实现

其中包括增删查改,排序

在中间有限制成绩只能输入数字,选择继续或返回菜单时只能输入1或2;

1、添加学生信息
void insert_student() {
    system("cls");
    initData();//读入文件内学生成绩信息,并显示出来,以免添加重复
    printf("\t添加学生信息\n");
    printf("请输入学生学号:") ;
    isIdSame(count);
    printf("\n");
    printf("姓名:");
    scanf("%s", student[count].name);
    printf("\n");
    printf("班级:");
    scanf("%s", student[count].banji);
    printf("\n");
    printf("数学成绩:");
    int aaa;
    aaa=panduan();
    student[count].math=aaa;
    printf("\n");
    printf("英语成绩:");
    int bbb;
    bbb=panduan();
    student[count].english=bbb;
    printf("\n");
    printf("计算机成绩:");
    int ccc;
    ccc=panduan();
    student[count].computer=ccc;
    printf("\n");
    student[count].total = student[count].math + student[count].english + student[count].computer;
    printf("总成绩:%d\n", student[count].total);

    printf("%s的信息录入成功\n\n", student[count].name);
    count++;
    int choose;
    printf("1、继续\t2、返回主页面\n");
    scanf("%d", &choose);
    system("cls");
    if (choose == 1) {
        insert_student();
    } else if (choose == 2) {
        caidan();
    } else if (choose != 1 || choose != 2) {
        printf("请正确输入1或2!");
        system("cls");
        chance();
    }

}

//选择
void chance() {
    int choose;
    printf("1、继续\t2、返回主页面\n");
    scanf("%d", &choose);
    if (choose == 1) {
        insert_student();
    } else if (choose == 2) {
        caidan();
    } else if (choose != 1 || choose != 2)
        printf("请正确输入1或2!");
}
// 判断学号是否重复重复返回1 否则返回0
int find1(struct Student student[], int num) {
    int temp = 0;
    for (int i = 0; i < count; i++) {
        if (student[i].num == num) {
            temp = 1;
            break;
        }
    }
    return temp;
}
//检验所输入的学号是否重复
void isIdSame(int x) {
    int inputId;
    scanf("%d", &inputId);
    do {
        if (find1(student, inputId)) {
            printf("学号有重复,请重新输入\n");
            scanf("%d", &inputId);
        } else {
            student[x].num = inputId;
            break;
        }
    } while (1);
    
}
// 2、查找展示结果
void search() {
    system("cls");
    int num;
    printf("请输入你想要查找的学生的学号:\n");
    num=panduan();
    int target = findIndex(num);
    if (target != -1) {
        printf("\n\t查询结果\n\n");
        showone(student[target]);
        con();
        system("cls");
        caidan();
    } else {
        printf("\n查无此人\n");
        con();
        system("cls");
        caidan();
    }
}
//根据学号返回对应下标
int findIndex(int num) {
    int temp;
    for (int i = 0; i < count; i++) {
        if (student[i].num == num) {
            temp = i;
            break;
        } else {
            temp = -1;
        }
    }
    return temp;
}
//查找学生信息
void showone(struct Student stu) {
    printf("学号:%d\n姓名:%s\n班级:%s\n数学:%d\n英语:%d\n计算机:%d\n总成绩:%d\n", stu.num, stu.name, stu.banji, stu.math, stu.english, stu.computer, stu.total);
    printf("\n-----------------------------\n");
}

// 6、显示所有信息
void showAll() {
    system("cls");
    for (int i = 0; i < count; i++) {
        showone(student[i]);
    }
    con();
    system("cls");
    caidan();
}
//3、按总分排序(冒泡排序)
void sortTotal() {
    int temp;
    for (int i = 0; i < count - 1; i++) {
        for (int j = 0; j < count - 1 - i; j++) {
            if (student[j].total < student[j + 1].total) {
                temp = student[j + 1].total;
                student[j + 1].total = student[j].total;
                student[j].total = temp;
            }
        }
    }
    printf("排序完成!");
    showAll();
    con();
    caidan();
    system("cls");
}
// 4、删除学生信息
void del() {
    system("cls");
    int num;
    int target;
    printf("\n请输入你想删除学生的学号\n");
    scanf("%d", &num);
    target = findIndex(num);
    if (target < 0) {
        printf("\n查无此人\n");
        con();

    } else {
        for (int i = target; i < count; i++) {
            student[i] = student[i + 1]; //删除操作 后一位元素覆盖前一位元素
        }
        printf("删除成功\n");
        con();
        count--;
    }
    int choose;
    printf("1、继续\t2、返回主页面\n");
    scanf("%d", &choose);
    if (choose == 1) {
        system("cls");
        del();
    } else if (choose == 2) {
        system("cls");
        caidan();
    } else if (choose != 1 || choose != 2) {
        printf("请输入1或2!");
        system("cls");
        chance2();
    }
    system("cls");
}
void chance2() {
    int choose;
    printf("1、继续\t2、返回主页面\n");
    scanf("%d", &choose);
    if (choose == 1) {
        system("cls");
        del();
    } else if (choose == 2) {
        system("cls");
        caidan();
    } else if (choose != 1 || choose != 2)
        printf("请输入1或2!");
}
// 5、修改学生信息
void updata() 
{
    system("cls");
    int num, flag;
    printf("请输入你要修改的学生的学号\n");
    scanf("%d", &num);
    int target = findIndex(num);
    if (target < 0) {
        printf("查无此人");
        con();
        caidan();
    } else {
        flag = 1;
        showone(student[target]);
    }
    do {
        int choose = 0;
        printf("请输入需要修改的选项\t(1.学号\t2.姓名\t3.班级\t4.数学\t5.英语\t6.计算机\t)\n");
        choose=panduan();
        switch (choose) {
            case 1:
                printf("请输入学号\n");
                isIdSame(target);
                break;
            case 2:
                printf("请输入姓名\n");
                scanf("%s", student[target].name);
                break;
            case 3:
                printf("请输入班级\n");
                scanf("%s", student[target].banji);
                break;
            case 4:
                printf("请输入数学\n");
                int aaa;
                aaa=panduan();
                student[target].math=aaa;
                break;
            case 5:
                printf("请输入英语\n");
                int bbb;
                bbb=panduan();
                student[target].english=bbb;
                break;
            case 6:
                printf("请输入计算机\n");
                int ccc;
                ccc=panduan();
                student[target].computer=ccc;
                break;

        }
        student[target].total = student[target].math + student[target].english + student[target].computer;
        printf("%s的信息修改成功\n", student[target].name);
        printf("\n按1继续\t按2退出修改\n");
        int choose2;
        choose2=panduan();
        if (choose2 == 1) {
            system("cls");
            flag = 1;
        } else {
            system("cls");
            flag = 0;
        }
    } while (flag);
    system("cls");
    caidan();
}

八、文件
 

//初始化数据
void initData() {
    int xx=0;
        FILE * fp = NULL;
            fp = fopen("file.txt", "r");
            if (!fp) {
                printf("文件打开失败\n");
                exit(0);// 退出程序
            }
            for(int i = 0;i < 100;i ++) {   //读取数据 赋值给数组
                xx=    fscanf(fp, "%d\t%s\t%s\t%d\t%d\t%d\t%d\n", &student[i].num, student[i].name, student[i].banji, &student[i].math, &student[i].english, &student[i].computer, &student[i].total);
                if (xx == -1)
            {
                count = i;
                fclose(fp);
                break;
            }        
            }
            int x=count;
                while(x--)
                {
                    printf("学号:%d\n姓名:%s\n班级:%s\n数学:%d\n英语:%d\n计算机:%d\n总成绩:%d\n",student[x].num, student[x].name, student[x].banji, student[x].math, student[x].english,student[x].computer, student[x].total);
                }
                return ;
}
//保存数据写入文件中
void writeData() {
    FILE *fp;
        if((fp=fopen("D:\\file.txt","w"))==NULL)
        {
            printf("打开失败\n");
            exit(0);
        }
    for (int i = 0; i < count; i++) 
    {
        fprintf(fp, "%d\t%s\t%s\t%d\t%d\t%d\t%d\n", student[i].num, student[i].name, student[i].banji, student[i].math, student[i].english, student[i].computer, student[i].total);
    }
    fclose(fp);
    printf("\n");
    printf("数据保存成功\n");
    return;
}

void duqu()
{
    FILE *fp;
            if((fp=fopen("D:\\file.txt","w"))==NULL)
            {
                printf("打开失败\n");
                exit(0);
            }
            
        fclose(fp);
        printf("\n");
        return ;
}

文件中保存的不可重复输入

 

九、主函数
 

int main() {
    getchar();
    system("cls");
    while (1) {
        establish();
        system("cls");
        writeData();
        Student();
        system("pause");
        system("cls");
    }
    system("pause");
    return 0;
}

以下为完整代码:

#include<stdio.h>
#include<stdlib.h>//用于数组,清屏功能 
#include<string.h>
#include<conio.h>
#include<windows.h>
#define N 1000
#define LNE 20
void initData();
void writeData();
void denglu();
void establish();
void caidan();
int panduan();
void keyDown();
void chance();
void chance2();
void insert_student();//1、添加学生信息
int find1(struct Student student[], int num);
void isIdSame(int x);
void search();//1、查找学生信息
int findIndex(int num);
void showone(struct Student stu);
void sortTotal();//3、按总分排序(冒泡排序)
void showAll();
void del();//4、删除学生信息
void updata();//5、修改学生信息
void inserInfo();
void inserCurrentInfo(int site);
void con();
int count = 0;
struct Student {
	int num;
	char name[20];
	char banji[20];
	int math;
	int english;
	int computer;
	int sum;
	int total;
} student[N], student1;


	
void establish()                                                                   //创建账号,密码//修改密码
	{   	
	        char telephone[LNE];
	        char telephone1[LNE];
			char password[LNE]; 
			char password1[LNE]; 
			char confirmation[LNE];
			int tryagain = 0;
			char account[LNE];
			char account1[LNE];
			char confirmationaccount[LNE];
			
		do{
			printf("---------------欢迎来到学生成绩管理系统--------------\n");
				printf("-----------------请创建账号-----------------\n");
				printf("\t\t请输入你的账号\n");
				scanf("%s",account);
				printf("\t\t请确认你的账号\n");
				scanf("%s",confirmationaccount); 
			}
			while(strcmp(account,confirmationaccount));
			printf("账号创建成功!你的账号为%s\n",account);
			printf("请输入您的手机号码:\n");   
			scanf("%s",telephone);
			printf("按任意键继续---\n"); 
			getch(); 
			system("cls"); 
			do{
				printf("------------------请创建密码-----------------\n");
				printf("请输入你的密码\n");
				scanf("%s",password);
				printf("请确认你的密码\n");
				scanf("%s",confirmation);
			}
			while(strcmp(password,confirmation));
			printf("密码创建成功!你的密码为%s\n",password);
			printf("按任意键开始登录系统....\n");
			getch();
			system("cls");//清屏 
			printf("—————登录系统——————\n"); 
			printf("请输入账号:");
			while(scanf("%s",account),strcmp(account,confirmationaccount))
			{
				tryagain++;
				if(tryagain<3)
					printf("错误%d次,请重新输入\n",tryagain);
				else
				break;
			}
			if (tryagain>=3){
				printf("对不起,三次账号错误!\n");
				getch();
				printf("请重新创建账号!");
				system("cls");
				establish();
			}
			else{
				printf("账号正确!\n"); 
			}
			printf("请输入密码:");
				while(scanf("%s",password),strcmp(password, confirmation))
				{
				tryagain++;
				if(tryagain<3)
					printf("错误%d次,请重新输入\n",tryagain);
				else
				break;
				}
			if (tryagain>=3)
			{
				printf("对不起,三次密码错误!\n");
					
					printf("请输入预留的手机号码:\n");
					scanf("%s",telephone1);
					if(!strcmp(telephone,telephone1))
					{
			do{
					printf("————创建密码—————\n");
					printf("请输入你的密码\n");
					scanf("%s",password);
					printf("请确认你的密码\n");
					scanf("%s",confirmation);
				}
					while(strcmp(password,confirmation));
					}
					else
					{
					printf("输入错误,请重新创建账号!!!");
					getch();
					system("cls");
				    establish();
					
					}
					printf("重新设置成功!\n");
					printf("请输入您的账号:\n");
					scanf("%s",account1);
					if(strcmp(account1,account)==0)
					printf("请输入新密码:\n");
					else
					printf("账号错误!请重新输入---\n");
					while(scanf("%s",password1),strcmp(password,password1))
					{
					printf("学生成绩管理系统登陆成功!\n");
					printf("按任意键进入系统..\n.");
					getch();
					system("cls");
					break;
					}
			}
			system("cls");
			caidan();	
	}
//菜单
void caidan() {
	printf("\t--------------------------------------\n");
	printf("\t\t  欢迎进入学生成绩管理系统\n");
	printf("\t\t请选择操作\n");
	printf("\t\t1.添加学生信息\n");
	printf("\t\t2.查询学生信息\n");
	printf("\t\t3.排序学生信息\n");
	printf("\t\t4.删除学生信息\n");
	printf("\t\t5.修改学生信息\n");
	printf("\t\t6.输出学生信息表\n");
	printf("\t\t7.保存文件\n");
	printf("\t\t8.退出系统\n");
	printf("\t--------------------------------------\n");
	printf("请输入1~8:");
	
	keyDown();
}
// 做交互
void keyDown() {
	int c;
	c=panduan();
	system("cls");
	switch (c) {
		case 1:
			printf("------------【添加】--------------\n");
			insert_student();
			break;
		case 2:
			printf("------------【查询】--------------\n");
			search();
			break;
		case 3:
			printf("------------【排序】--------------\n");
			sortTotal();
			break;
		case 4:
			printf("------------【删除】--------------\n");
			del();
			break;
		case 5:
			printf("------------【修改】--------------\n");
			updata();
			break;
		case 6:
			printf("----------【学生信息表】-----------\n");
			showAll();
			break;
		case 7:
				printf("---------【保存文件】-----------\n");
				writeData();
				break;	
		case 8:
			printf("【退出系统】\n");
			printf("退出成功\n");
			system("pause");
			exit(0);//退出整个系统
			break;
	}
	printf("按任意键继续!");
	getchar();
	system("cls");//清屏
}
int panduan()
{
	int a,b;
	b=scanf("%d",&a);
	while(b!=1){
	while((getchar())!='\n');
	printf("警告:只能输入数字!\n");
	printf("请正确输入!\n");
	b=scanf("%d",&a);
	}
	b=0;
	return a;
}
//  1、添加学生信息
void insert_student() {
	system("cls");
	initData();
	printf("\t添加学生信息\n");
	printf("请输入学生学号:") ;
	isIdSame(count);
	printf("\n");
	printf("姓名:");
	scanf("%s", student[count].name);
	printf("\n");
	printf("班级:");
	scanf("%s", student[count].banji);
	printf("\n");
	printf("数学成绩:");
	int aaa;
	aaa=panduan();
	student[count].math=aaa;
	printf("\n");
	printf("英语成绩:");
	int bbb;
	bbb=panduan();
	student[count].english=bbb;
	printf("\n");
	printf("计算机成绩:");
	int ccc;
	ccc=panduan();
	student[count].computer=ccc;
	printf("\n");
	student[count].total = student[count].math + student[count].english + student[count].computer;
	printf("总成绩:%d\n", student[count].total);

	printf("%s的信息录入成功\n\n", student[count].name);
	count++;
	int choose;
	printf("1、继续\t2、返回主页面\n");
	scanf("%d", &choose);
	system("cls");
	if (choose == 1) {
		insert_student();
	} else if (choose == 2) {
		caidan();
	} else if (choose != 1 || choose != 2) {
		printf("请正确输入1或2!");
		system("cls");
		chance();
	}

}
void chance() {
	int choose;
	printf("1、继续\t2、返回主页面\n");
	scanf("%d", &choose);
	if (choose == 1) {
		insert_student();
	} else if (choose == 2) {
		caidan();
	} else if (choose != 1 || choose != 2)
		printf("请正确输入1或2!");
}
// 判断学号是否重复重复返回1 否则返回0
int find1(struct Student student[], int num) {
	int temp = 0;
	for (int i = 0; i < count; i++) {
		if (student[i].num == num) {
			temp = 1;
			break;
		}
	}
	return temp;
}
//检验所输入的学号是否重复
void isIdSame(int x) {
	int inputId;
	scanf("%d", &inputId);
	do {
		if (find1(student, inputId)) {
			printf("学号有重复,请重新输入\n");
			scanf("%d", &inputId);
		} else {
			student[x].num = inputId;
			break;
		}
	} while (1);
	
}
// 2、查找展示结果
void search() {
	system("cls");
	int num;
	printf("请输入你想要查找的学生的学号:\n");
	num=panduan();
	int target = findIndex(num);
	if (target != -1) {
		printf("\n\t查询结果\n\n");
		showone(student[target]);
		con();
		system("cls");
		caidan();
	} else {
		printf("\n查无此人\n");
		con();
		system("cls");
		caidan();
	}
}
//根据学号返回对应下标
int findIndex(int num) {
	int temp;
	for (int i = 0; i < count; i++) {
		if (student[i].num == num) {
			temp = i;
			break;
		} else {
			temp = -1;
		}
	}
	return temp;
}
//查找学生信息
void showone(struct Student stu) {
	printf("学号:%d\n姓名:%s\n班级:%s\n数学:%d\n英语:%d\n计算机:%d\n总成绩:%d\n", stu.num, stu.name, stu.banji, stu.math, stu.english, stu.computer, stu.total);
	printf("\n-----------------------------\n");
}

// 6、显示所有信息
void showAll() {
	system("cls");
	for (int i = 0; i < count; i++) {
		showone(student[i]);
	}
	con();
	system("cls");
	caidan();
}
//3、按总分排序(冒泡排序)
void sortTotal() {
	int temp;
	for (int i = 0; i < count - 1; i++) {
		for (int j = 0; j < count - 1 - i; j++) {
			if (student[j].total < student[j + 1].total) {
				temp = student[j + 1].total;
				student[j + 1].total = student[j].total;
				student[j].total = temp;
			}
		}
	}
	printf("排序完成!");
	showAll();
	con();
	caidan();
	system("cls");
}
// 4、删除学生信息
void del() {
	system("cls");
	int num;
	int target;
	printf("\n请输入你想删除学生的学号\n");
	scanf("%d", &num);
	target = findIndex(num);
	if (target < 0) {
		printf("\n查无此人\n");
		con();

	} else {
		for (int i = target; i < count; i++) {
			student[i] = student[i + 1]; //删除操作 后一位元素覆盖前一位元素
		}
		printf("删除成功\n");
		con();
		count--;
	}
	int choose;
	printf("1、继续\t2、返回主页面\n");
	scanf("%d", &choose);
	if (choose == 1) {
		system("cls");
		del();
	} else if (choose == 2) {
		system("cls");
		caidan();
	} else if (choose != 1 || choose != 2) {
		printf("请输入1或2!");
		system("cls");
		chance2();
	}
	system("cls");
}
void chance2() {
	int choose;
	printf("1、继续\t2、返回主页面\n");
	scanf("%d", &choose);
	if (choose == 1) {
		system("cls");
		del();
	} else if (choose == 2) {
		system("cls");
		caidan();
	} else if (choose != 1 || choose != 2)
		printf("请输入1或2!");
}
// 5、修改学生信息
void updata() 
{
	system("cls");
	int num, flag;
	printf("请输入你要修改的学生的学号\n");
	scanf("%d", &num);
	int target = findIndex(num);
	if (target < 0) {
		printf("查无此人");
		con();
		caidan();
	} else {
		flag = 1;
		showone(student[target]);
	}
	do {
		int choose = 0;
		printf("请输入需要修改的选项\t(1.学号\t2.姓名\t3.班级\t4.数学\t5.英语\t6.计算机\t)\n");
		choose=panduan();
		switch (choose) {
			case 1:
				printf("请输入学号\n");
				isIdSame(target);
				break;
			case 2:
				printf("请输入姓名\n");
				scanf("%s", student[target].name);
				break;
			case 3:
				printf("请输入班级\n");
				scanf("%s", student[target].banji);
				break;
			case 4:
				printf("请输入数学\n");
				int aaa;
				aaa=panduan();
				student[target].math=aaa;
				break;
			case 5:
				printf("请输入英语\n");
				int bbb;
				bbb=panduan();
				student[target].english=bbb;
				break;
			case 6:
				printf("请输入计算机\n");
				int ccc;
				ccc=panduan();
				student[target].computer=ccc;
				break;

		}
		student[target].total = student[target].math + student[target].english + student[target].computer;
		printf("%s的信息修改成功\n", student[target].name);
		printf("\n按1继续\t按2退出修改\n");
		int choose2;
		choose2=panduan();
		if (choose2 == 1) {
			system("cls");
			flag = 1;
		} else {
			system("cls");
			flag = 0;
		}
	} while (flag);
	system("cls");
	caidan();
}

//  按任意键继续
void con() {
	printf("\n按任意键继续\n");
	getch();
	system("cls");
}
//初始化数据
void initData() {
	int xx=0;
		FILE * fp = NULL;
			fp = fopen("file.txt", "r");
			if (!fp) {
				printf("文件打开失败\n");
				exit(0);// 退出程序
			}
			for(int i = 0;i < 100;i ++) {   //读取数据 赋值给数组
				xx=	fscanf(fp, "%d\t%s\t%s\t%d\t%d\t%d\t%d\n", &student[i].num, student[i].name, student[i].banji, &student[i].math, &student[i].english, &student[i].computer, &student[i].total);
				if (xx == -1)
			{
				count = i;
				fclose(fp);
				break;
			}		
			}
			int x=count;
				while(x--)
				{
					printf("学号:%d\n姓名:%s\n班级:%s\n数学:%d\n英语:%d\n计算机:%d\n总成绩:%d\n",student[x].num, student[x].name, student[x].banji, student[x].math, student[x].english,student[x].computer, student[x].total);
				}
				return ;
}
//保存数据写入文件中
void writeData() {
	FILE *fp;
	    if((fp=fopen("D:\\file.txt","w"))==NULL)
	    {
	        printf("打开失败\n");
	        exit(0);
	    }
	for (int i = 0; i < count; i++) 
	{
		fprintf(fp, "%d\t%s\t%s\t%d\t%d\t%d\t%d\n", student[i].num, student[i].name, student[i].banji, student[i].math, student[i].english, student[i].computer, student[i].total);
	}
	fclose(fp);
	printf("\n");
	printf("数据保存成功\n");
	return;
}

void duqu()
{
	FILE *fp;
		    if((fp=fopen("D:\\file.txt","w"))==NULL)
		    {
		        printf("打开失败\n");
		        exit(0);
		    }
		    
		fclose(fp);
		printf("\n");
		return ;
}
int main() {
	getchar();
	system("cls");
	while (1) {
		establish();
		system("cls");
		writeData();
		Student();
		system("pause");
		system("cls");
	}
	system("pause");
	return 0;
}

  • 11
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值