分享原创:一个简单的学生信息管理系统(请大家提提意见)
程序代码:
#include<stdio.h> #include<string.h> #include<stdlib.h> #define NULL 0 struct student{ char name[20]; char id[20]; char sex[3]; int year,month; char major[50]; char ban_ji[50]; char address[50]; char phone_num[20]; }; int main(int argc, char* argv[]) { FILE* fp; fp=fopen("学生成绩管理系统.txt","ab+"); if(fp==NULL){ printf("打开文件失败!\n"); exit(1); } while(1){ printf("*******************欢迎使用学生成绩管理系统!**********************\n"); printf("1.录入学生信息\n"); printf("2.显示学生信息\n"); printf("3.查找学生\n"); printf("4.退出\n"); printf("********************************************************************\n"); printf("请选择要操作的项目:"); int i; scanf("%d",&i); switch(i){ case 1: { struct student *p=(student*)malloc(sizeof(struct student)); if(p==NULL){ printf("申请内存失败!\n"); exit(1); } printf("请输入学生姓名:"); scanf("%s",p->name); printf("请输入学生学号:"); scanf("%s",p->id); printf("请输入学生性别:"); scanf("%s",p->sex); printf("请输入学生出生年份:"); scanf("%d",&p->year); printf("请输入学生出生月份:"); scanf("%d",&p->month); printf("请输入学生的专业:"); scanf("%s",p->major); printf("请输入学生所在的班级:"); scanf("%s",p->ban_ji); printf("请输入学生的家庭住址:"); scanf("%s",p->address); printf("请输入学生的宿舍电话:"); scanf("%s",p->phone_num); fwrite(p,sizeof(struct student),1,fp); free(p); p=NULL; } system("pause"); system("cls"); break; case 2: { struct student* p=(student*)malloc(sizeof(struct student)); if(p==NULL){ printf("申请内存失败!\n"); exit(1); } rewind(fp); while(!feof(fp)){ if(fread(p,sizeof(struct student),1,fp)) printf("姓名:%s\n学号:%s\n性别:%s\n出生年月:%d %d\n专业:%s\n所在班级:%s\n家庭住址:%s\n宿舍电话:%s\n\n", p->name,p->id,p->sex,p->year,p->month,p->major,p->ban_ji,p->address,p->phone_num); } free(p); p=NULL; } system("pause"); system("cls"); break; case 3: rewind(fp); printf("1.按姓名查找\n2.按学号查找\n"); int j; scanf("%d",&j); switch(j){ case 1: { char names[20]; int n=0; printf("请输入要查找的学生的姓名:"); scanf("%s",names); struct student* p=(student*)malloc(sizeof(struct student)); if(p==NULL){ printf("申请内存失败!\n"); exit(1); } while(!feof(fp)){ if(fread(p,sizeof(struct student),1,fp)) if(strcmp(p->name,names)==0){ n++; printf("姓名:%s\n学号:%s\n性别:%s\n出生年月:%d %d\n专业:%s\n所在班级:%s\n家庭住址:%s\n宿舍电话:%s\n\n", p->name,p->id,p->sex,p->year,p->month,p->major,p->ban_ji,p->address,p->phone_num); } } if(!n) printf("没有对应的信息!\n"); } break; case 2: { char number[20]; int n=0; printf("请输入要查找的学生的学号:"); scanf("%s",number); struct student* p=(student*)malloc(sizeof(struct student)); if(p==NULL){ printf("申请内存失败!\n"); exit(1); } while(!feof(fp)){ if(fread(p,sizeof(struct student),1,fp)) if(strcmp(p->id,number)==0){ n++; printf("姓名:%s\n学号:%s\n性别:%s\n出生年月:%d %d\n专业:%s\n所在班级:%s\n家庭住址:%s\n宿舍电话:%s\n\n", p->name,p->id,p->sex,p->year,p->month,p->major,p->ban_ji,p->address,p->phone_num); } } if(!n) printf("没有对应的信息!\n"); } break; default:printf("您的输入无效!\n"); } system("pause"); system("cls"); break; case 4:exit(0); break; default:printf("您的输入无效!\n"); } } fclose(fp); return 0; }
[ 本帖最后由 南国利剑 于 2010-6-7 19:33 编辑 ]