// zuoye.cpp : 定义控制台应用程序的入口点。
//
//#include "stdafx.h"
#include"stdio.h"
#include"string.h"
int menu();
void query(); //查询
void sort(); //排序
void error(); //错误选项
void add(); //添加记录
void del(); //删除记录
void revise(); //修改学生信息t
void apart(); //分割男女学生
void read(); //读出数据
void initialize(); //初始化结构体
int index(int x); //索引
void del1();
struct a
{
char c[10];
char name[10];
char sex[10];
char birth[20];
char birthplace[20];
char tel[20];
char results[10];
};
FILE *fp;
FILE *fp_1;
FILE *fp_2;
int z=1;
char str[128];
struct a stu[34];
struct a stu_1[34];
struct a stu_2[34];
int main()
{
int g;
if((fp=fopen("D://tx0117.txt","r+"))==NULL)
{
printf("打开文件失败");
return 0;
}
initialize(); //初始化结构体
fclose(fp);
while((g=menu())!=0) //显示菜单选项,并返回所选功能号
{
switch (g)
{
case 1:
{
query(); //查询
break;
}
case 2:
{
sort(); //排序
break;
}
case 3:
{
add(); //添加学生记录
break;
}
case 4:
{
del(); //删除学生记录
break;
}
case 5:
{
revise(); //修改
break;
}
case 6:
{
apart(); //分割
break;
}
default:
break;
}
if(g>=0&&g<8)
{
puts("/n任意键返回主菜单");
scanf("%s",str);
}
else
puts("输入错误,请重新输入");
}
printf("保存中.../n");
/*if((fclose(fp)!=0))
{
printf("保存失败");
puts("数据丢失");
scanf("%s",str);
}*/
return 0;
}
int menu() //菜单
{
int p;
puts("/n请输入你的操作");
puts("0.退出此系统 1.查询学生信息");
puts("2.学生排序 3.添加学生信息");
puts("4.删除学生信息 5.修改学生信息");
puts("6.按性别分割学生至不同文件");
scanf("%d",&p);
return p;
}
void read() //读取数据
{
int i=0;
FILE *fp1;
fp1=fopen("tx0117.txt","r+");
//rewind(fp);
while(i<=z+1)
if(fgets(str,128,fp1)!=NULL)
printf("%s",str),i++;
fclose(fp1);
}
void query() //查询学生
{
int i;
FILE *fp1;
fp1=fopen("D://tx0117.txt","r+");
puts("/n请输入你要按什么查询");
puts("1,按姓名 2,按学号 3,查看全部学生信息");
scanf("%d",&i);
while(i!=1&&i!=2&&i!=3)
{
printf("请输入1或2或3");
scanf("%d",&i);
}
if(i==1)
{
i=index(1);
if(i==100)
;
else
{
puts("该学生资料如下:");
printf("%s %s %s %s %s %s %s/n",stu[i].c,stu[i].name,stu[i].sex,stu[i].birth,stu[i].birthplace,stu[i].tel,stu[i].results);
}
}
else
{
if(i==2)
{
i=index(2);
if(i==100)
;
else
{
puts("该学生资料如下:");
printf("%s %s %s %s %s %s %s/n",stu[i].c,stu[i].name,stu[i].sex,stu[i].birth,stu[i].birthplace,stu[i].tel,stu[i].results);
}
}
else
read();
}
fclose(fp1);
}
int index(int x) //索引结构体数组下标
{
int i;
char s[20];
if(x==1)
{
puts("请输入学生姓名");
scanf("%s",s);
}
else
{
puts("请输入学生学号");
scanf("%s",s);
}
if(x==1)
for(i=0;strcmp(stu[i].name,s)!=0&&i<=z;i++)
;
else
for(i=0;strcmp(stu[i].c,s)!=0&&i<=z;i++)
;
if(i>z)
{
puts("学生不存在");
return 100;
}
else
return i;
}
void add() //添加学生信息
{
int i=0;
FILE *fp1;
fp1=fopen("D://tx0117.txt","r+");
puts("请依次输入学生学号,姓名,性别,出生年月,籍贯,电话,成绩");
z++;
scanf("%s%s%s%s%s%s%s",stu[z].c,stu[z].name,stu[z].sex,stu[z].birth,stu[z].birthplace,stu[z].tel,stu[z].results);
for(i=0;strcmp(stu[i].name,stu[z].name)!=0;i++)
;
if(i!=z)
puts("学生重名");
else
{
//rewind(fp);
fprintf(fp1,"学号 姓名 性别 出生年月 籍贯 电话 成绩");
for(i=0;i<=z;i++)
{
fputc('/n',fp1);
fputs(stu[i].c,fp1);
fputc(' ',fp1);
fputs(stu[i].name,fp1);
if(strlen(stu[i].name)==4)
fputs(" ",fp1);
else
fputc(' ',fp1);
fputs(stu[i].sex,fp1);
fputs(" ",fp1);
fputs(stu[i].birth,fp1);
fputc(' ',fp1);
fputs(stu[i].birthplace,fp1);
fputc(' ',fp1);
fputs(stu[i].tel,fp1);
fputc(' ',fp1);
fputs(stu[i].results,fp1);
}
//fprintf(fp,"%s %s %s %s %s %s %s/n",stu[i].c,stu[i].name,stu[i].sex,stu[i].birth,stu[i].birthplace,stu[i].tel,stu[i].results);
puts("添加成功");
}
fclose(fp1);
}
void initialize() //初始化结构体数组
{
char i;
if(fgets(str,128,fp)!=NULL)
fscanf(fp,"%s",&stu[0].c);
fscanf(fp,"%s",&stu[0].name);
fscanf(fp,"%s",&stu[0].sex);
fscanf(fp,"%s",&stu[0].birth);
fscanf(fp,"%s",&stu[0].birthplace);
fscanf(fp,"%s",&stu[0].tel);
fscanf(fp,"%s",&stu[0].results);
for(;!feof(fp)&&(i=fgetc(fp))!=' ';z++)
{
fscanf(fp,"%s",&stu[z].c);
fscanf(fp,"%s",&stu[z].name);
fscanf(fp,"%s",&stu[z].sex);
fscanf(fp,"%s",&stu[z].birth);
fscanf(fp,"%s",&stu[z].birthplace);
fscanf(fp,"%s",&stu[z].tel);
fscanf(fp,"%s",&stu[z].results);
}
// for(i=9;i>=0;i--)
// stu[0].c[i+1]=stu[0].c[i];
// stu[0].c[0]='2';
z--;
}
void del()
{
int i;
FILE *fp1;
fp1=fopen("D://tx0117.txt","w+");
puts("/n请输入你要按什么删除学生信息");
puts("1,按姓名 2,按学号");
scanf("%d",&i);
while(i!=1&&i!=2)
{
printf("请输入1或2");
scanf("%d",&i);
}
if(i==1)
i=index(1);
else
i=index(2);
if(i==100)
;
else
{
for(;i<z;i++)
stu[i]=stu[i+1];
//z--;
//rewind(fp);
fprintf(fp1,"学号 姓名 性别 出生年月 籍贯 电话 成绩");
for(i=0;i<z;i++)
{
fputc('/n',fp1);
fputs(stu[i].c,fp1);
fputc(' ',fp1);
fputs(stu[i].name,fp1);
if(strlen(stu[i].name)==4)
fputs(" ",fp1);
else
fputc(' ',fp1);
fputs(stu[i].sex,fp1);
fputs(" ",fp1);
fputs(stu[i].birth,fp1);
fputc(' ',fp1);
fputs(stu[i].birthplace,fp1);
fputc(' ',fp1);
fputs(stu[i].tel,fp1);
fputc(' ',fp1);
fputs(stu[i].results,fp1);
}
z--;
//fprintf(fp,"/n ");
puts("删除完毕");
}
fclose(fp1);
}
void revise()
{
int i;
FILE *fp1;
fp1=fopen("D://tx0117.txt","r+");
i=index(2);
puts("请一次输入修改后的学生信息");
scanf("%s%s%s%s%s%s%s",stu[i].c,stu[i].name,stu[i].sex,stu[i].birth,stu[i].birthplace,stu[i].tel,stu[i].results);
//rewind(fp);
fprintf(fp1,"学号 姓名 性别 出生年月 籍贯 电话 成绩");
for(i=0;i<=z;i++)
{
fputc('/n',fp1);
fputs(stu[i].c,fp1);
fputc(' ',fp1);
fputs(stu[i].name,fp1);
if(strlen(stu[i].name)==4)
fputs(" ",fp1);
else
fputc(' ',fp1);
fputs(stu[i].sex,fp1);
fputs(" ",fp1);
fputs(stu[i].birth,fp1);
fputc(' ',fp1);
fputs(stu[i].birthplace,fp1);
fputc(' ',fp1);
fputs(stu[i].tel,fp1);
fputc(' ',fp1);
fputs(stu[i].results,fp1);
}
//fprintf(fp,"%s %s %s %s %s %s %s/n",stu[i].c,stu[i].name,stu[i].sex,stu[i].birth,stu[i].birthplace,stu[i].tel,stu[i].results);
puts("修改成功");
fclose(fp1);
}
void apart()
{
int i=0,i_1=0,i_2=0;
FILE *fp1;
fp1=fopen("D://tx0117.txt","r+");
if((fp_1=fopen("male.txt","r+"))==NULL||(fp_2=fopen("female.txt","r+"))==NULL)
{
puts("打开文件失败");
}
else
{
for(;i<=z;i++)
if(!strcmp(stu[i].sex,"男"))
stu_1[i_1++]=stu[i];
else
stu_2[i_2++]=stu[i];
fprintf(fp_1,"学号 姓名 性别 出生年月 籍贯 电话 成绩");
for(i=0;i<i_1;i++)
{
fputc('/n',fp_1);
fputs(stu_1[i].c,fp_1);
fputc(' ',fp_1);
fputs(stu_1[i].name,fp_1);
if(strlen(stu_1[i].name)==4)
fputs(" ",fp_1);
else
fputc(' ',fp_1);
fputs(stu_1[i].sex,fp_1);
fputs(" ",fp_1);
fputs(stu_1[i].birth,fp_1);
fputc(' ',fp_1);
fputs(stu_1[i].birthplace,fp_1);
fputc(' ',fp_1);
fputs(stu_1[i].tel,fp_1);
fputc(' ',fp_1);
fputs(stu_1[i].results,fp_1);
}
fprintf(fp_2,"学号 姓名 性别 出生年月 籍贯 电话 成绩");
for(i=0;i<i_2;i++)
{
fputc('/n',fp_2);
fputs(stu_2[i].c,fp_2);
fputc(' ',fp_2);
fputs(stu_2[i].name,fp_2);
if(strlen(stu_2[i].name)==4)
fputs(" ",fp_2);
else
fputc(' ',fp_2);
fputs(stu_2[i].sex,fp_2);
fputs(" ",fp_2);
fputs(stu_2[i].birth,fp_2);
fputc(' ',fp_2);
fputs(stu_2[i].birthplace,fp_2);
fputc(' ',fp_2);
fputs(stu_2[i].tel,fp_2);
fputc(' ',fp_2);
fputs(stu_2[i].results,fp_2);
}
}
fclose(fp1);
}
void sort() //冒泡排序
{
int i,j;
FILE *fp1;
fp1=fopen("D://tx0117.txt","r+");
puts("1.按学生姓名排序 2.按学生学号排序");
scanf("%d",&i);
while(i!=1&&i!=2)
{
printf("请输入1或2");
scanf("%d",&i);
}
if(i==1)
{
for(i=z;i>=0;i--)
for(j=z;j>=0;j--)
{
if(strcmp(stu[j-1].name,stu[j].name)>0)
{
stu[30]=stu[j-1];
stu[j-1]=stu[j];
stu[j]=stu[30];
}
}
//rewind(fp);
fprintf(fp1,"学号 姓名 性别 出生年月 籍贯 电话 成绩");
for(i=0;i<=z;i++)
{
fputc('/n',fp1);
fputs(stu[i].c,fp1);
fputc(' ',fp1);
fputs(stu[i].name,fp1);
if(strlen(stu[i].name)==4)
fputs(" ",fp1);
else
fputc(' ',fp1);
fputs(stu[i].sex,fp1);
fputs(" ",fp1);
fputs(stu[i].birth,fp1);
fputc(' ',fp1);
fputs(stu[i].birthplace,fp1);
fputc(' ',fp1);
fputs(stu[i].tel,fp1);
fputc(' ',fp1);
fputs(stu[i].results,fp1);
}
puts("分割完成");
}
else
{
for(i=z;i>=0;i--)
for(j=z;j>=0;j--)
{
if(strcmp(stu[j-1].c,stu[j].c)>0)
{
stu[30]=stu[j-1];
stu[j-1]=stu[j];
stu[j]=stu[30];
}
}
//rewind(fp);
fprintf(fp1,"学号 姓名 性别 出生年月 籍贯 电话 成绩");
for(i=0;i<=z;i++)
{
fputc('/n',fp1);
fputs(stu[i].c,fp1);
fputc(' ',fp1);
fputs(stu[i].name,fp1);
if(strlen(stu[i].name)==4)
fputs(" ",fp1);
else
fputc(' ',fp1);
fputs(stu[i].sex,fp1);
fputs(" ",fp1);
fputs(stu[i].birth,fp1);
fputc(' ',fp1);
fputs(stu[i].birthplace,fp1);
fputc(' ',fp1);
fputs(stu[i].tel,fp1);
fputc(' ',fp1);
fputs(stu[i].results,fp1);
}
}
puts("排序结束");
fclose(fp1);
}
/*void del1()
{
i=0;
FILE *fp1;
fp1=fopen("D://tx0117.txt",
fprintf(fp,"学号 姓名 性别 出生年月 籍贯 电话 成绩");
fputc('/n',fp1);
fputs(stu[i].c,fp1);
fputc(' ',fp1);
fputs(stu[i].name,fp1);
if(strlen(stu[i].name)==4)
fputs(" ",fp1);
else
fputc(' ',fp1);
fputs(stu[i].sex,fp1);
fputs(" ",fp1);
fputs(stu[i].birth,fp1);
fputc(' ',fp1);
fputs(stu[i].birthplace,fp1);
fputc(' ',fp1);
fputs(stu[i].tel,fp1);
fputc(' ',fp1);
fputs(stu[i].results,fp1);
//fprintf(fp,"/n ");
puts("删除完毕");
}
}*/