⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 student.c

📁 简易通讯录c语言版
💻 C
字号:
#include "stdio.h"
#include "string.h"
#include "conio.h"
#include <stdlib.h>
#include <malloc.h>
struct student {
	char name[20];
	float grade;
	char address[100];
};

int total_number = 0;
struct student * st;


int print_menu() {
	int temp;
	printf("\n\n\n\nGrade Managing System \n");
	printf("-------------------------------- \n");
	printf("-----------Main Menu------------ \n");
	printf("1.Input Grade. \n");
	printf("2.Sort Grade. \n");
	printf("3.Search Grade. \n");
	printf("4.Save Grade. \n");
	printf("5.View Total Information. \n");
	printf("6.Help. \n");
	printf("7.Exit. \n");
	printf("Operation=");

	scanf("%d",&temp);
	printf(" \n\n\n");
	return temp;
}

void input_data_screen() {

	int i;
	printf("How many students ? \n");
	scanf("%d",&total_number);
	if(!st)
	st = (struct student *)malloc(sizeof(struct student)*(total_number+1));

	printf("Input Begins! \n");
	for(i = 1;i <= total_number;i++) {

		printf("Name?");
		scanf("%s",st[i].name);

		printf("\nGrade?");
		scanf("%f",&st[i].grade);

		printf("\nAddress?");
		scanf("%s",st[i].address);

		printf("\n\n\n");
	}

	printf("Input Finished! \n");
}

void input_data_file() {

	char filename[20];
	int i;FILE * fp;
	printf("Please input file name ! \n");
	scanf("%s",filename);

	

	if ((fp = fopen(filename,"r")) == NULL) printf("File not Found! \n");
	else {
	    fscanf(fp,"%d",&total_number);
	    //st = new student[total_number+1];
		if(!st)
		st = (struct student *)malloc(sizeof(struct student)*(total_number+1));
	    for(i = 1;i <= total_number;i++)
		fscanf(fp,"%s%f%s",st[i].name,&st[i].grade,st[i].address);
	}

	fclose(fp);

}


void input_data() {
	int ans = 0;

	while (ans != 3) {

		printf("1.Input From Screen. \n");
		printf("2.Input From File. \n");
		printf("3.Return to Main Menu. \n");

		printf("?");
		scanf("%d",&ans);

		switch (ans) {
		case 1 : input_data_screen(); break;
		case 2 : input_data_file(); break;
		}
	}
}


void sort_data() {

	struct	student temp;
	int i,j;
	printf("Grade Sorting....... \n");

	for(i = 1;i <= total_number-1;i++)
		for(j = i + 1;j <= total_number;j++)
			if (st[i].grade < st[j].grade) {
				temp = st[i];
				st[i] = st[j];
				st[j] = temp;
			}

	printf("Sorting Finished! \n");
}


void search_name() {
	char s_name[20];
	int total_find = 0;
	int i;
	printf("Please input Name ! \n");
	scanf("%s",s_name);

	printf("\n\n------Result------\n");
	for(i = 1;i <= total_number;i++)
		if (strcmp(st[i].name,s_name) == 0) {
			printf("Name = %s\n",st[i].name);
			printf("Grade = %.2f\n",st[i].grade);
			printf("Address = %s\n",st[i].address);
			total_find++;
		}

	if (total_find == 0) printf("Name not Found! \n");
	else printf("Total Find = %d\n",total_find);
	printf("------------------\n\n");
}

void search_grade() {
	float s_grade;
	int total_find = 0;
	int i;
	printf("Please input Grade ! \n");
	scanf("%f",&s_grade);

	printf("\n\n------Result------\n");
	for(i = 1;i <= total_number;i++)
		if (st[i].grade == s_grade) {
			printf("Name = %s\n",st[i].name);
			printf("Grade = %.2f\n",st[i].grade);
			printf("Address = %s\n",st[i].address);
			total_find++;
		}

	if (total_find == 0) printf("Grade not Found! \n");
	else printf("Total Find = %d\n",total_find);
	printf("------------------\n\n");
}

void search_address() {
	char s_address[100];
	int total_find = 0;
	int i;
	printf("Please input Address ! \n");
	scanf("%s",s_address);

	printf("\n\n------Result------\n");
	for(i = 1;i <= total_number;i++)
		if (strcmp(st[i].address,s_address) == 0) {
			printf("Name = %s",st[i].name);
			printf("Grade = %.2f",st[i].grade);
			printf("Address = %s",st[i].address);
			total_find++;
		}

	if (total_find == 0) printf("Address not Found! \n");
	else printf("Total Find = %d\n",total_find);
	printf("------------------\n\n");
}


void search_data() {

	int ans = 0;

	while (ans != 4) {

		printf("What do you want to search ? \n");
		printf("1.Name. \n");
		printf("2.Grade. \n");
		printf("3.Address. \n");
		printf("4.Return to Main Menu. \n");

		printf("?");

		scanf("%d",&ans);

		switch (ans) {
		case 1 : search_name(); break;
		case 2 : search_grade(); break;
		case 3 : search_address(); break;
		}
	}
}

void save_data() {

	char filename[20];int i;FILE * fp;

	printf("Please input file name ! \n");
	scanf("%s",filename);

	

	fp = fopen(filename,"w");

	fprintf(fp,"%d\n",total_number);

	for(i =1;i <= total_number;i++) {
		fprintf(fp,"%s ",st[i].name);
		fprintf(fp,"%.2f ",st[i].grade);
		fprintf(fp,"%s\n",st[i].address);
	}

	fclose(fp);
}

void help() {

	printf("\n\n\nInput File Format :  \n");
	printf("Total Number \n");
	printf("Name Grade Address \n");
	printf("----------------------------------- \n");
	printf("Example : \n");
	printf("2 \n");
	printf("Blue 100 sname@ent.net \n");
	printf("Red 92 sred@ent.net \n");
	printf("----------------------------------- \n");
}

void view_all() {
	int i;

	for(i = 1;i <= total_number;i++) {

		printf("Student %d\n",i);

		printf("Name = %s\n",st[i].name);
		printf("Grade = %.2f\n",st[i].grade);
		printf("Address = %s\n",st[i].address);

		printf("\n");

	}
}


void destroy_all() {
	if(st)
		free(st);
}

void main() {
	int choice = 0;
	//clrscr();
	while (choice != 7) {

		choice = print_menu();

		switch (choice) {
		case 1 : input_data(); break;
		case 2 : sort_data(); break;
		case 3 : search_data(); break;
		case 4 : save_data(); break;
		case 5 : view_all(); break;
		case 6 : help(); break;
		}

	}

	destroy_all();

	printf("-------------------------------------- \n");
	printf("Thanks for using!  \n");
}






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -