📄 student.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 + -