学生管理系统

来源:互联网 发布:mac java version 编辑:程序博客网 时间:2024/05/17 08:02
#include<stdio.h>//学生管理系统
#include<string.h>
#include<conio.h>
int scan();
int e();
void tishi();
void a();
void b();
void c();
void d();
void open();
void panduan();
int x=0;   //全局变量
struct student //------结构体
{
 char no[10];
 char name[20];
 char sex[3];
 int year;
 char ban[10];
 char TEL[12];
}s[35]={0};
main()//-------------------------------------------------------------------------------------------------------------主函数
{
 void save();
 open();
 panduan();//原文件学生数
 int t=1;
 tishi();
 while(t)
 {t=scan();} 
 save();
 
 getch();
}
void open ()
{
 int i;
 FILE *fp;
 if((fp=fopen("c:\\学生管理系统v2.0.dat","r"))==NULL)//打开文件
 {
  printf("原文件不存在!\n正在建立新文件!\n文件建立成功!\n");
  fp=fopen("c:\\学生管理系统v2.0.dat","w");//新建文件
 }
 for(i=0;i<35;i++)//读入文件
 fread(&s[i],sizeof(struct student ),1,fp);
 fclose(fp);//关闭文件
}
void panduan()
{
 int i;
 for(i=0;i<35;i++)
 {
  if(s[i].year==0)
  {x=i;break;}
  }
}
void tishi()//------------------输出提示
{
  printf("=================================系统功能菜单v3.0===============================\n");
  printf("--------------------------------------------------------------------------------\n");
  printf("\t\t1,查询学生信息\t");
  printf("\t\t2,添加学生信息\n");
  printf("\t\t3,修改学生查询\t");
  printf("\t\t4,删除学生信息\n");
  printf("\t\t\t\t  0,保存并退出\n");
  printf("--------------------------------------------------------------------------------\n");
  if(x==0)
  printf("\t\t\t     当前无学生信息请添加!\n\t\t\t\t  9位学号\n");
}
int scan()//---------输入
{
 int No=-1,i,j;
 i=x;
 char xx='c',NO,yy[10],zz[10],zc[10];
 printf("===========================请输入要操作的数字,0结束============================\n");
 while(No<0||No>4)
 {
  NO=getchar();
  No=NO-'0';
  if(No<0||No>4)
  printf("输入错误!请重新输入:\n");
 } 
 if(No==0)
 return 0;
 
 if(No==1)
 { 
  printf("********************************************************************************\n");
  printf("a 查询指定学生信息\tb 查询所有学生信息\n");
  printf("********************************************************************************\n");
  while(xx!='a'&&xx!='b')
  {
   getchar();
   scanf("%c",&xx);
  if(xx=='a'||xx=='b');
  else
  printf("输入错误!请重新输入:\n");
  }
  
  if(xx=='a')//单个查询
  {
   printf("请输入学生的学号:");
   scanf(" %s",yy);
   for(;i>=0;i--)
   {
    if(strcmp(yy,s[i].no)==0)
    {a(i);break;}   
   }
    if(i==-1)
    printf("信息不存在!\n"),getchar();
  }
  else if(xx=='b')//全部查询
  b(x); 
  }
  
  
  
  
  
  
 else if(No==2)
 {
  j=0;
  i =e(x++,j);
  if(i==1)
  return 1;
 }
 else if(No==3)
 {
  printf("请输入需要修改的学号:\n");
  scanf(" %s",zz);
  j=1;
  d(zz,j),getchar();
 }
 else if(No==4)
 {
  printf("请输入需要删除的学号:");
  scanf(" %s",zc);
  c(zc),getchar();
 }
 else{printf("输入错误!请重新输入:\n");
 }
 return 1; 
}
void cha()
{
 
}
void a(int n)//单个输出
{
 printf("查询结果:\n");
 printf("********************************************************************************\n");
 printf("学号\t\t姓名\t性别\t年龄\t班级\t联系电话\n");
 printf("--------------------------------------------------------------------------------\n");
 printf("%s\t%s\t%s\t%d\t%s\t%s\n",s[n].no,s[n].name,s[n].sex,s[n].year,s[n].ban,s[n].TEL);
 printf("********************************************************************************\n"),getchar();
}
void b(int n)//全部输出
{
 int i;
 printf("查询结果:\n");
 printf("********************************************************************************\n");
 printf("学号\t\t姓名\t性别\t年龄\t班级\t联系电话\n");
 for(i=0;i<n;i++)
 {
 printf("--------------------------------------------------------------------------------\n");
 printf("%s\t%s\t%s\t%d\t%s\t%s\n",s[i].no,s[i].name,s[i].sex,s[i].year,s[i].ban,s[i].TEL);
    }
 printf("********************************************************************************\n"),getchar();
}
void c(char n[])//删除学生信息
{
 int i,j;
 for(i=0;i<x;i++)
{ if(strcmp(n,s[i].no)==0)
{
 for(j=i;j<=x;j++)
 {
 s[j]=s[j+1];
 x--;
 printf("删除成功!\n");break;}}
 else
 printf("信息未找到!\n"); }
}
void d(char n[],int j)
{
 int i;
 for(i=0;i<x;i++)
 {if(strcmp(n,s[i].no)==0)
 {a(i);e(i,j);break;}
 else printf("信息未找到!\n"); }
}
int e(int n,int j)
{
 int i;
 printf("请%s输入完整学生信息:\n",j?"重新":"");
 printf("学号:");
 scanf(" %s",&s[n].no);
 for(i=0;i<x-1;i++)
 if(strcmp(s[n].no,s[i].no)==0)
 {
  printf("该学号已存在是否继续,0,继续(不会覆盖)1,返回菜单\n"); 
  getchar();
  scanf("%d",&i);
  if(i==1)
  return i;}
  printf("姓名:");
  scanf(" %s",&s[n].name);
  printf("性别:");
  scanf(" %s",&s[n].sex);
  printf("年龄:");
  scanf("%d",&s[n].year);
  printf("班级:");
  scanf(" %s",&s[n].ban);
  printf("联系电话:");
  scanf(" %s",&s[n].TEL); 
  printf("%s成功!\n",j?"修改":"添加"),getchar();

void  save()
{
 int i;
 FILE *fp1;
 fp1=fopen("c:\\学生管理系统v2.0.dat","w");//打开文件
 for(i=0;i<x;i++)
 fwrite(&s[i],sizeof(struct student ),1,fp1);//写入文件
 fclose(fp1);//关闭文件
}
0 0