#include "stdio.h"
#include "string.h"
#include "stdlib.h"
typedef struct student
{ char qinshi[15];
char chuangwei[10];
char name[20];
char phone[12];
long num;
}STU;
void shuru()
{ int i,n,m,s;
STU a;
FILE *fp;
fp=fopen("D:\\学生宿舍系统.dat","wb");
if(fp==NULL)
{ printf("!");return;}
system("cls");
printf("\t\t\t请输入管理密码!");
scanf("%d",&s);
if(s!=0)
{printf("管理密码错误!\n");
return;
}
else
printf("录入的个数是: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{ printf("\t寝室号:");
scanf("%s",a.qinshi);
printf("\t床 位:");
scanf("%s",a.chuangwei);
printf("\t姓 名:");
scanf("%s",a.name);
printf("\t手机号:");
scanf("%s",a.phone);
m=strlen(a.phone);
if(m!=11)
{printf("手机号出现错误!\n"); break;}
printf("\t学 号:");
scanf("%ld",&a.num);
fwrite(&a,sizeof(STU),1,fp);
}
fclose(fp);
}
void zhuijia()
{
int i,n,m;
STU a;
FILE *fp;
system("cls");
if((fp=fopen("D:\\学生宿舍系统.dat","ab"))==NULL)
{printf("error!\n");exit(0);}
printf("\n\n\t请输入追加人数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\t寝室号:");
scanf("%s",a.qinshi);
printf("\t床位:");
scanf("%s",a.chuangwei);
printf("\t姓名:");
scanf("%s",a.name);
printf("\t手机号:");
scanf("%s",a.phone);
m=strlen(a.phone);
if(m!=11)
{printf("手机号出现错误!\n"); break;}
printf("\t学号:");
scanf("%ld",&a.num);
fwrite(&a,sizeof(STU),1,fp);
}
fclose(fp);
}
void xianshi()
{STU a;
FILE*fp;
system("cls");
if((fp=fopen("D:\\学生宿舍系统.dat","rb"))==NULL)
{printf("error!\n");exit(0);}
rewind(fp);
printf("寝室号\t床位\t姓名\t手机号 \t学号\n");
while(fread(&a,sizeof(STU),1,fp)!=0)
printf("%s\t%s\t%s\t%s\t%ld\n",a.qinshi,a.chuangwei,a.name,a.phone,a.num);
fclose(fp);
}
void chaxunbyname()
{
int f=0;
char na[20];
STU a;
FILE *fp;
fp=fopen("D:\\学生宿舍系统.dat","rb");
if(fp==NULL)
{printf("无法打开!\n");exit(1);}
printf("请输入要查找姓名:");
scanf("%s",na);
while(fread(&a,sizeof(STU),1,fp)!=0)
if(strcmp(na,a.name)==0)
{
printf("寝室号\t床位\t姓名\t手机号 \t学号\n");
printf("%s\t%s\t%s\t%s\t%ld\n",a.qinshi,a.chuangwei,a.name,a.phone,a.num);
f=1;
}
if(f==0) printf("没有该学生信息。\n");
fclose(fp);
}
void chaxunbyxuehao()
{ int f=0,x;
STU a;
FILE *fp;
fp=fopen("D:\\学生宿舍系统.dat","rb");
if(fp==NULL)
{printf("打开失败!\n");exit(1);}
printf("请输入要查询的学号: ");
scanf("%d",&x);
while(fread(&a,sizeof(STU),1,fp)!=0)
if(x==a.num)
{
printf("寝室号\t床位\t姓名\t手机号 \t学号\n");
printf("%s\t%s\t%s\t%s\t%ld\n",a.qinshi,a.chuangwei,a.name,a.phone,a.num);
f=1;
}
if(f==0) printf("没有该学生信息。\n");
fclose(fp);
}
void chaxun()
{ int a;
system("cls");
printf("\n\n\t\t你现在已经进入学生宿舍管理系统\n");
printf("\t\t\t按姓名查询输入1\n");
printf("\t\t\t按学号查询输入2\n");
printf("\t\t\t退出输入3\n");
printf("\t\t\t请输入命令: ");
scanf("%d",&a);
switch(a)
{case 1:chaxunbyname();break;
case 2:chaxunbyxuehao();break;
case 3:break;
}
}
void shanchu()
{ int s;
struct student a[10];
int i=0, n, f=0, k;
long num;
FILE *fp;
printf("\t\t\t请输入管理密码!");
scanf("%d",&s);
if(s!=0)
{printf("管理密码错误!\n");
return;
}
else
system("cls");
{
fp=fopen("D:\\学生宿舍系统.dat","rb");
if (fp==NULL)
{printf("打开D:\\学生宿舍系统.dat 失败!\n");
exit(1);
}
fseek(fp,0,2);
n=ftell(fp)/sizeof(struct student) ;
rewind(fp);
printf("输入学号:");
scanf("%ld",&num);
for(i=0;i<n;i++)
fread (&a[i], sizeof (STU) , 1, fp);
for(i=0;i<n;i++)
if (num==a[i].num)
{ printf("按任意键删除");
f=1;
k=1;
break;
}
else f=0;
fclose (fp);
if(f==0)
printf("未找到对应学生信息\n");
else
{
for(i=k;i<n-1;i++)
a[i]=a[i+1];
n--;
fp=fopen("D:\\学生宿舍系统.dat","wb");
if (fp==NULL)
{ printf("打开D:\\学生宿舍系统.dat 失败!\n");
exit(1);
}
for (i=0;i<n;i++)
fwrite (&a[i], sizeof(struct student),1,fp);
fclose(fp);
}
getchar();getchar();
}
}
void xiugai()
{ int s;
long num;
int found = 0;
STU a;
FILE *fp;
system("cls");
printf("\t\t\t请输入管理密码!");
scanf("%d",&s);
if(s!=0)
{printf("管理密码错误!\n");
return;
}
fp = fopen("D:\\学生宿舍系统.dat", "rb+");
if (fp == NULL)
{
printf("打开D:\\学生宿舍系统.dat失败!\n");
exit(1);
}
printf("请输入要修改学生的学号: ");
scanf("%ld", &num);
while (fread(&a, sizeof(STU), 1, fp) != 0)
{
if (num == a.num)
{
printf("找到学生信息,请输入要修改的信息:\n");
printf("\t寝室号: ");
scanf("%s", &a.qinshi);
printf("\t床位: ");
scanf("%s", &a.chuangwei);
printf("\t姓名: ");
scanf("%s", a.name);
printf("\t手机号: ");
scanf("%s", a.phone);
fwrite(&a, sizeof(STU), 1, fp);
found = 1;
break;
}
}
if (found == 0)
{
printf("未找到该学生信息。\n");
}
else
{
printf("学生信息已成功修改。\n");
}
fclose(fp);
}
int main()
{
int a;
do
{ printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf(" $ ~_~欢迎进入学生宿舍管理系统~_~ $\n");
printf(" $ * 录入学生信息输入1 * $\n");
printf(" $ ** 显示学生信息输入2 ** $\n");
printf(" $ *** 查询学生信息输入3 *** $\n");
printf(" $ **** 追加学生信息输入4 **** $\n");
printf(" $ ***** 删除学生信息输入5 ***** $\n");
printf(" $ ****** 修改学生信息输入6 ****** $\n");
printf(" $ ******* 退 出 系 统 输入7 ******* $\n");
printf(" 》_《 输 入 命 令 : ");
scanf("%d",&a);
switch(a)
{
case 1:shuru();break;
case 2:xianshi();break;
case 3:chaxun();break;
case 4:zhuijia();break;
case 5:shanchu();break;
case 6:xiugai();break;
case 7:exit(0);
}
}while(a!=0);
return 0;
}
在数字系统中,只要能保存二进制数据的都可以是存储器。