学生档案信息课程设计_制作学生信息档案
学生档案信息课程设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“制作学生信息档案”。
/*注意首先建一个学生档案信息.txt文件到当前目录下,不然无法运行成功*/
#include #include #include #define Max 50
void Main_meau(void);//主菜单 void input(void);//输入学生信息 void serch(void);//查询学生信息 void amend(void);//修改学生信息 void census(void);//统计学生信息 void show(void);//显示学生信息
void sch_num(void);//按学号查询学生信息 void sch_name(void);//按姓名查询学生信息 void add(void);//添加学生信息 void del(void);//删除学生信息 void change(void);//修改学生信息 void c_pjf(void);//平均分统计 void c_nv(void);//男女生人数统计
void c_yc(void);//某年以前出生人数统计 void c_ds(void);//某地学生人数统计 void c_dts(void);//党团员学生人数统计
struct Data { int year;int mounth;int day;};
struct student { char num[15];//学号
char name[20];//姓名
char sex[5];//性别
int age;//年龄
char zzmm[20];//政治面貌
float score;//成绩
struct Data data;//出生日期
char addre[50];//地址 };
int open(struct student stu[Max]);//打开文件 void baocun(int number, struct student stu[Max]);//保存文件
int main(void){ Main_meau();return 1;}
void Main_meau(void)//主菜单 { int m=0,n;while(m==0){
printf(“nnn”);
printf(“*****************************************n”);
printf(“
*学*生*档*案*管*理*系*统*
n”);
printf(“
*欢 迎 使 用*nnn”);
printf(“
1---输入学生信息n”);
printf(“
2---查询学生信息n”);
printf(“
3---修改学生信息n”);
printf(“
4---统计学生信息n”);
printf(“
5---显示学生信息n”);
printf(“
6---退出系统n”);
printf(“*****************************************n”);
printf(“nnn请输入选项: ”);
scanf(“%d”,&n);
switch(n)
{
case 1: input();break;
case 2: serch();break;
case 3: amend();break;
case 4: census();break;
case 5: show();break;
case 6: m=1;break;
default:
printf(“输入错误,请重新输入.n”);break;
} } }
void input(void)//输入学生信息 { int number,i,k;struct student stu[Max];k=open(stu);printf(“请输入要增加的学生人数:n”);scanf(“%d”,&number);for(i=k+1;i
printf(“学号:”);scanf(“%s”,stu[i].num);
printf(“姓名:”);scanf(“%s”,stu[i].name);
printf(“性别:”);scanf(“%s”,stu[i].sex);
printf(“年龄:”);scanf(“%d”,&stu[i].age);
printf(“政治面貌:”);scanf(“%s”,stu[i].zzmm);
printf(“成绩:”);scanf(“%f”,&stu[i].score);
printf(“出生日期(按此格式写入:1990/07/28):n”);
scanf(“%d/%d/%d”,&stu[i].data.year,&stu[i].data.mounth,&stu[i].data.day);
printf(“地址:”);scanf(“%s”,stu[i].addre);} baocun(k+number,stu);}
void serch(void)//查询学生信息 { int i;printf(“nnn”);printf(“
*学生档案管理*
nn”);printf(“
1.学号查询
nn”);printf(“
2.姓名查询
nn”);printf(“
3.返回主菜单
nn”);printf(“nn请选择(1——3):”);scanf(“%d”,&i);printf(“nn”);switch(i){
case 1: sch_num();break;
case 2: sch_name();break;
case 3: return;
default: printf(“输入错误,请重新输入.n”);} }
void amend(void)//修改学生信息 { int i,m=0;while(m==0){
printf(“nn”);
printf(“tt*学生档案管理*nn”);
printf(“tt1.添加学生信息nn”);
printf(“tt2.删除学生信息nn”);
printf(“tt3.修改学生信息nn”);
printf(“tt4.返回主菜单nn”);
printf(“nn请选择(1——4): ”);
scanf(“%d”,&i);
switch(i)
{
case 1: add();break;
case 2: del();break;
case 3: change();break;
case 4: m=1;break;
} } }
void census(void)//统计学生信息 { int i,m=0;while(m==0){
printf(“nn”);
printf(“tt*学生档案管理*nn”);
printf(“tt1.平均分统计nn”);
printf(“tt2.男女生人数统计nn”);
printf(“tt3.某年以前出生人数统计nn”);
printf(“tt4.某地学生人数统计nn”);
printf(“tt5.党团员学生人数统计nn”);
printf(“tt6.返回主菜单nn”);
printf(“请选择(1——6): ”);
scanf(“%d”,&i);
switch(i)
{
case 1: c_pjf();break;
case 2: c_nv();break;
case 3: c_yc();break;
case 4: c_ds();break;
case 5: c_dts();break;
case 6: m=1;break;
} } }
void c_pjf(void)//平均分统计 { int i,k;float vs=0;struct student stu[Max];k=open(stu);for(i=1;i
vs=vs+stu[i].score;} printf(“入学时的平均分为: %.2fn”,vs/k);}
void c_nv(void)//男女生人数统计 { int i,k,man=0,gilr=0;struct student stu[Max];k=open(stu);for(i=1;i
if(strcmp(stu[i].sex,“男”)==0)
man++;
else
gilr++;} printf(“nn男生总人数为: %dn”,man);printf(“女生总人数为: %dn”,gilr);}
void c_yc(void)//某年以前出生人数统计 { int i,k,Year,number=0;struct student stu[Max];k=open(stu);printf(“请输入要统计的年份:
”);scanf(“%d”,&Year);for(i=1;i
if(Year>stu[i].data.year)
number++;} printf(“%d年以前出生的人数为:
%dn”,Year,number);}
void c_ds(void)//某地学生人数统计 { int i,k,number=0;struct student stu[Max];char db[30];k=open(stu);printf(“请输入地名: ”);scanf(“%s”,db);for(i=1;i
if(strcmp(stu[i].addre,db)==0)
number++;} printf(“%s学生人数为: %dn”,db,number);}
void c_dts(void)//党团员学生人数统计 { int i,k,da=0,tu=0;struct student stu[Max];k=open(stu);for(i=1;i
if(strcmp(stu[i].zzmm,“团员”)==0)
tu++;
if(strcmp(stu[i].zzmm,“党员”)==0)
da++;} printf(“团员有:
%d个n”,tu);printf(“党员有:
%d个n”,da);}
void show(void)//显示学生信息 { int i,k;struct student stu[Max];k=open(stu);if(k==0)
return;else
printf(“文件中总共有%d个学生信息:n”,k);for(i=1;i
printf(“nn学号tt姓名t性别t年龄t政治面貌t成绩t出生日期t地址n”);printf(“%st%st%st%dt%st%6.2f”,stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].zzmm,stu[i].score);
printf(“ %d%d%dtt%s”,stu[i].data.year,stu[i].data.mounth,stu[i].data.day,stu[i].addre);} }
void add(void)//添加学生信息 { int number,i,k;struct student stu[Max];k=open(stu);printf(“请输入要增加的学生人数:n”);scanf(“%d”,&number);for(i=k+1;i
printf(“学号:”);scanf(“%s”,stu[i].num);
printf(“姓名:”);scanf(“%s”,stu[i].name);
printf(“性别:”);scanf(“%s”,stu[i].sex);
printf(“年龄:”);scanf(“%d”,&stu[i].age);
printf(“政治面貌:”);scanf(“%s”,stu[i].zzmm);
printf(“成绩:”);scanf(“%f”,&stu[i].score);
printf(“出生日期(按此格式写入:1990/07/28):n”);
scanf(“%d/%d/%d”,&stu[i].data.year,&stu[i].data.mounth,&stu[i].data.day);
printf(“地址:”);scanf(“%s”,stu[i].addre);} baocun(k+number,stu);}
void del(void)//删除学生信息 { int i,k,j;FILE *fp;struct student stu[Max];char db[30];k=open(stu);printf(“请输入要删除学生的学号或姓名:”);scanf(“%s”,db);for(i=1;i
if(strcmp(db,stu[i].name)==0||strcmp(db,stu[i].num)==0)
break;} if(i
printf(“找到要删除的学生信息,删除中……n”);
if((fp=fopen(“学生档案信息.txt”,“w”))==NULL)
{
printf(“打开文件失败!n”);
exit(0);
}
fprintf(fp,“%dn”,k-1);
for(j=1;j
{
if(j==i)
continue;
fprintf(fp,“%sn%sn%sn%dn%sn%.2fn”,stu[j].num,stu[j].name,stu[j].sex,stu[j].age,stu[j].zzmm,stu[j].score);
fprintf(fp,“%d/%d/%dn”,stu[j].data.year,stu[j].data.mounth,stu[j].data.day);
fprintf(fp,“%sn”,stu[j].addre);
}
fclose(fp);
printf(“OK!n”);} else
printf(“未找到对应的学生信息n”);}
void change(void)//修改学生信息 { int i,k;char db[30];struct student stu[Max];printf(“请输入要修改的学生的学号或姓名:”);scanf(“%s”,db);k=open(stu);for(i=1;i
if(strcmp(db,stu[i].num)==0||strcmp(db,stu[i].name)==0)
break;} if(i
printf(“找到要修改的学生的信息,请重设该学生所有的信息.n”);
printf(“学号: ”);scanf(“%s”,stu[Max-1].num);
strcpy(stu[i].num,stu[Max-1].num);
printf(“姓名: ”);scanf(“%s”,stu[Max-1].name);
strcpy(stu[i].name,stu[Max-1].name);
printf(“性别: ”);scanf(“%s”,stu[Max-1].sex);
strcpy(stu[i].sex,stu[Max-1].sex);
printf(“年龄: ”);scanf(“%d”,&stu[Max-1].age);
stu[i].age=stu[Max-1].age;
printf(“政治面貌: ”);scanf(“%s”,stu[Max-1].zzmm);
strcpy(stu[i].zzmm,stu[Max-1].zzmm);
printf(“成绩: ”);scanf(“%f”,&stu[Max-1].score);
stu[i].score=stu[Max-1].score;
printf(“出生日期: ”);scanf(“%d/%d/%d”,&stu[Max-1].data.year,&stu[Max-1].data.mounth,&stu[Max-1].data.day);
stu[i].data.day=stu[Max-1].data.day;
stu[i].data.mounth=stu[Max-1].data.mounth;
stu[i].data.year=stu[Max-1].data.year;
printf(“地址: ”);scanf(“%s”,stu[Max-1].addre);
strcpy(stu[i].addre,stu[Max-1].addre);} else
printf(“未找到对应的学生信息n”);baocun(k,stu);}
void sch_num(void)//按学号查询学生信息 { int i,number;struct student stu[Max];char db[15];number=open(stu);printf(“n请输入要查询的学号:”);scanf(“%s”,db);for(i=1;i
if(strcmp(db,stu[i].num)==0)
break;} if(i
printf(“nn学号tt姓名t性别t年龄t政治面貌t成绩t出生日期t地址n”);
printf(“%st%st%st%dt%st%6.2f”,stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].zzmm,stu[i].score);
printf(“ %d%d%dtt%s”,stu[i].data.year,stu[i].data.mounth,stu[i].data.day,stu[i].addre);
} else
printf(“未找到此学号对应的学生信息n”);}
void sch_name(void)//按姓名查询学生信息 { int i,number;struct student stu[Max];char db[15];number=open(stu);printf(“n请输入要查询的姓名:”);scanf(“%s”,db);for(i=1;i
if(strcmp(db,stu[i].name)==0)
break;} if(i
printf(“nn学号tt姓名t性别t年龄t政治面貌t成绩t出生日期t地址n”);
printf(“%st%st%st%dt%st%6.2f”,stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].zzmm,stu[i].score);
printf(“ %d%d%dtt%s”,stu[i].data.year,stu[i].data.mounth,stu[i].data.day,stu[i].addre);
} else
printf(“未找到此姓名对应的学生信息n”);}
int open(struct student stu[Max])//打开文件 { int number=0,i;FILE *fp;if((fp=fopen(“学生档案信息.txt”,“r”))==NULL){
printf(“打开文件失败!n”);
exit(0);} if((fscanf(fp,“%d”,&number))==EOF)
number=0;else
for(i=1;i
{
fscanf(fp,“%s%s%s%d%s%f”,stu[i].num,stu[i].name,stu[i].sex,&stu[i].age,stu[i].zzmm,&stu[i].score);
fscanf(fp,“%d/%d/%d”,&stu[i].data.year,&stu[i].data.mounth,&stu[i].data.day);
fscanf(fp,“%s”,stu[i].addre);
} fclose(fp);if(number==0)
printf(“文件中无数据,请添加.n”);return number;}
void baocun(int number , struct student stu[Max])//保存文件 { int i;FILE *fp;if((fp=fopen(“学生档案信息.txt”,“w”))==NULL){
printf(“打开文件失败!n”);
exit(0);} fprintf(fp,“%dn”,number);for(i=1;i
{
fprintf(fp,“%sn%sn%sn%dn%sn%.2fn”,stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].zzmm,stu[i].score);
fprintf(fp,“%d/%d/%dn”,stu[i].data.year,stu[i].data.mounth,stu[i].data.day);
fprintf(fp,“%sn”,stu[i].addre);
} fclose(fp);}