ddddd

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define Maxsize 100
struct user//用户名 
{
    char usename[20];
    char password[20];
};
struct student //学生结构 
{
    int num;
    char name[10];
    int computer;
    int english;
    int math;
    double average;
    int score;
    
};
int Count = 0;
int g;
void input(struct student s[]);//新建输入学生 
void output(struct student s[]);//输出学生成绩 
void averagesort(struct student s[]);//平均分排序 
void mathsort(struct student s[]);//数学排序 
void englishsort(struct student s[]);//英语排序 
void computersort(struct student s[]);//计算机排序 
void sort(struct student s[]);//排序 
void modify(struct student s[]);
void deleted(struct student s[]);
void search(struct student s[]);
void menu(struct student s[]);
void writetofile(struct student s[]);
void readfromfile(struct student s[]);
int Login(struct user sysuser);


int main()//主函数 
{
	struct user sysuser;
	struct student s[Maxsize];
	int n;
	printf("Please select\n");
	printf("1.Log in to the system\n");
	printf("0.sign out\n");
	printf("input n:\n");
	scanf("%d",&n);
	if(n==1)
	{
	
		if(Login(sysuser)==1)
		{
			printf("valid user!\n");
			menu(s);
		}else
		{
			printf("Invalid user!\n");
  			exit(0);
   		}
	}else if(n==0)
	{
		return 0;
	}
	
   
}


int Login(struct user sysuser)//登录系统 
{
	char tempname[20];
	char temppassword[20];
	int falg=0;
	int num=0;
	FILE *fp;
	if((fp=fopen("login.txt","r"))==NULL)
	{
		printf("File open error!\n");
		exit(0);
	}
	fscanf(fp,"%s",sysuser.usename);// 写在文件夹里	 
	fscanf(fp,"%s",sysuser.password);
	while(num<3)
	{
		printf("enter one user name. \n");
		scanf("%s",tempname);
		printf("Please enter your password.\n");
		scanf("%s",temppassword);
		num++;
		if(strcmp(sysuser.usename,tempname)==0&&strcmp(sysuser.password,temppassword)==0)
		{
			falg=1;
			break;
		}
		
	}
	if(falg==1)
		{
			printf("Login successfully!\n");
			return falg;
		}else
			return falg;
	
}
void menu(struct student s[])
{
	int n;
    while (1)
    {
        printf("--------------------------------------------\n");
        printf("1.Input\n");
        printf("2.Output\n");
        printf("3.search\n");
        printf("4.sort\n");
        printf("5.modify\n");
        printf("6.deleted\n");
        printf("7.write to file\n");
        printf("8.read for file\n");
        printf("0.exit\n");

        printf("--------------------------------------------\n");
        scanf("%d", &n);
        switch (n)
        {
        case 1:
            input(s);//结构体 
            break;

        case 2:
            output(s);
            break;
        case 3:
            search(s);
            break;
        case 4:
            sort(s);
            break;
        case 5:
            modify(s);
            break;
        case 6:
            deleted(s);
            break;

        case 7:
        	writetofile(s);
        	break;
        case 8:
        	readfromfile(s);
        	break;
        


        case 0:
            exit(1);
        }

    }
	
}

void input(struct student s[])
{
    int i, n;
    printf("input n:\n");
    scanf("%d", &n);
    if (Count == Maxsize)
    {
        printf("The arry is full\n");
    }
    for (i = 0; i < n; i++) {
        printf("Please input the student's num:\n");
        scanf("%d", &s[i].num);
        printf("Please input the student's name :\n");
        scanf("%s", s[i].name);
        printf("Please input the student's computer score:\n");
        scanf("%d", &s[i].computer);
        printf("Please input the student's english score:\n");
        scanf("%d", &s[i].english);
        printf("Please input the student's math score:\n");
        scanf("%d", &s[i].math);


        Count++;
    }
}


void output(struct student s[])
{
    printf("num\tname\tmath\tenglish\tcomputer\taverage\tscore\t\n");
    for (int i = 0; i < Count; i++)
    {
		s[i].average = (s[i].computer + s[i].math + s[i].english) / 3.0;
		s[i].score = (s[i].computer + s[i].math + s[i].english);
        printf("%d\t", s[i].num);
        printf("%s\t", s[i].name);
        printf("%d\t", s[i].math);
        printf("%d\t", s[i].english);
        printf("%d\t", s[i].computer);
        printf("    %.2f\t", s[i].average);
        printf(" %d\n",s[i].score);

    }
}


void sort(struct student s[])
{
    int n;
    while (1) {
        printf("--------\n");
        printf("1.math\n");
        printf("2.english\n");
        printf("3.computer\n");
        printf("4.average\n");
        printf("0.exit\n");
        printf("--------\n");
        printf("Sorting method:", n);
        scanf("%d", &n);
        switch (n) {
        case 1:mathsort(s); break;
        case 2:englishsort(s); break;
        case 3:computersort(s); break;
        case 4:averagesort(s); break;
        case 0:return;
        }
    }
}

void averagesort(struct student s[])
{
    int i, j;
    struct student temp;
    for (i = 1; i < Count; i++) {
        for (j = 0; j < Count - i; j++) {
            if (s[j].average < s[j + 1].average)
            {
                temp = s[j];
                s[j] = s[j + 1];
                s[j + 1] = temp;
            }
        }
    }
    output(s);
}


void mathsort(struct student s[])
{
    int i, j;
    struct student temp;
    for (i = 1; i < Count; i++)
    {
        for (j = 0; j < Count - i; j++)
        {
            if (s[j].math < s[j + 1].math)
            {
                temp = s[j];
                s[j] = s[j + 1];
                s[j + 1] = temp;
            }
        }
    }
    output(s);
}


void englishsort(struct student s[])
{
    int i, j;
    struct student temp;
    for (i = 1; i < Count; i++)
    {
        for (j = 0; j < Count - i; j++)
        {
            if (s[j].english < s[j + 1].english)
            {
                temp = s[j];
                s[j] = s[j + 1];
                s[j + 1] = temp;
            }
        }
    }
	output(s);
}

void computersort(struct student s[])
{
    int i, j;
   struct student temp;
    for (i = 1; i < Count; i++) {
        for (j = 0; j < Count - i; j++) {
            if (s[j].computer < s[j + 1].computer)
            {
                temp = s[j];
                s[j] = s[j + 1];
                s[j + 1] = temp;
            }
        }
    }
    output(s);
}


void modify(struct student d[])//修改成绩 
{
	int n,number,t;
	printf("Please input student number\n");
	scanf("%d",&number);
	for(int i=0;i<Count;i++)
	{
		if(d[i].num==number)
		{
			while(1)
			{
			
			printf("Please input the subject you want to modify.\n");
			printf("1.math\n");
			printf("2.english\n");
			printf("3.computer\n");
			printf("0.exit\n");
			scanf("%d",&n);
			switch(n)
			{
				case 1:
					printf("Revise the math score to\n");
					scanf("%d",&t);
					d[i].math=t;
					break;
			
				case 2:
					printf("Revise the english score to\n");
					scanf("%d",&t);
					d[i].english=t;
					break;
			
				case 3:
					printf("Revise the computer score to\n");
					scanf("%d",&t);
					d[i].computer=t;
					break;
				case 0:
					menu(d);
					break;
			
			}
			printf("Modification completed\n");
			}
		}
	}
}





void deleted(struct student s[])
{

    int i, n, j = -1;
    printf("Deleted student number:\n");
    scanf("%d", &n);
    for (i = 0; i < Count; i++) {
        if (s[i].num == n) {
            j = i;
            break;
        }
    }
    if (j == -1) {
        printf("No Found\n");
    }
    else {
        for (i = j; i < Count - 1; i++) {
            s[i] = s[i + 1];
        }
    }
    Count--;
}

void search(struct student s[])
{
    int i, flag = 0,N;
    int number;
    char name[20];
    if (Count == 0) {
        printf("Count of student is zero!\n");
        return;
    }
    printf("1.input search number:\n\n");
    printf("2.input search name:\n");
    scanf("%d", &N);
    if(N==1)
    {
    	printf("Please input number:\n");
		scanf("%d",&number);
    	for (i = 0; i < Count; i++)
    	{
        	if (s[i].num == number) {
            	flag = 1;
            	break;
        	}
    	}
	}else if(N==2)
	{
		printf("Please input name:\n");
		scanf("%s",name);
		for (i = 0; i < Count; i++)
    	{
        	if (strcmp(s[i].name,name)==0) {
            	flag = 1;
            	break;
        	}
    	}
	}else
	{
		printf("input error!\n");
	}
    if (flag == 1) {
    	printf("num\tname\tmath\tenglish\tcomputer\taverage\t\n");
        printf("%d\t", s[i].num);
        printf("%s\t", s[i].name);
        printf("%d\t", s[i].math);
        printf("%d\t", s[i].english);
        printf("%d\t", s[i].computer);
        printf("     %.2f\n", s[i].average);
    }
    else {
        printf("Not Found\n");
    }
}

void writetofile(struct student s[])
{
	int i;
	FILE *fp;
	fp=fopen("chengji.txt","w");
 
	fprintf(fp,"学号\t姓名\t数学成绩\t英语成绩\t计算机成绩\t平均成绩\n");
 
	for(i=0;i<Count;i++)
 
		fprintf(fp,"%d\t%s\t%d\t%d\t%d\t%.2f\t\n",s[i].num,s[i].name,s[i].math,s[i].english,s[i].computer,s[i].average);
}
void readfromfile(struct student s[])
{
	struct student l[Maxsize];
  	int i;
  	FILE *fp;
  	if((fp=fopen("printing.txt","r"))==NULL){
   		printf("Error opening file\n");
   		exit(0);
 	}
  	for(i=0;i<Count;i++){
   		fscanf(fp,"%d ",&l[i].num);
      	fscanf(fp,"%s ",l[i].name);
   		fscanf(fp,"%d ",&l[i].math);
   		fscanf(fp,"%d ",&l[i].english);
   		fscanf(fp,"%d ",&l[i].computer);
   		fscanf(fp,"%lf ",&l[i].average);
  	}
  	if(fclose(fp)){
   		printf("cannot close file\n");
   		exit(0);
  	}
  	for(i=0;i<Count;i++){
   		printf("num:%d\n",l[i].num);
   		printf("name:%s\n",l[i].name);
   		printf("math:%d\n",l[i].math);
   		printf("english:%d\n",l[i].english);
   		printf("computer:%d\n",l[i].computer);
   		printf("average:%lf\n",l[i].average);
   		printf("********\n");
  } 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值