简易学生信息查询系统

// 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("删除完毕");
 }
}*/

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值