向高手问一个小小的问题
#include <stdio.h>#define M 500
#include <windows.h>
#include<conio.h>
#include <string.h>
struct student
{ int num;
char name[20];
char sex[3];
char nation[5];
char addr[30];
char age[3];
char brithday[11];
char phone[13];
} stu[M];
int enter (struct student stu []);
void menu2();
void menu();
void scan();
void print();
void scanname();
void scanno();
void change();
void menu3();
void change();
void paixu();
void delete_xh();
void save(struct student stu[]);
void load(struct student stu[]);
void help();
void password();
int j=0;
main ()
{ char a;
menu ();
password();
a=getche();
switch(a)
{
case '1' :system("cls"); enter(stu) ;break;
case '2' : system("cls");scan(stu) ;break;
case '3' : system("cls");delete_xh(stu);break;
case '4' : system("cls");save(stu);break;
case '5' : system("cls");paixu(stu);break;
case '6' : system("cls");change(stu);break;system ("exit");
case '7' : system("cls"); load(stu);;break;
case '8' : system("cls"); help();;break;
case '9' :system("cls"); printf("欢迎再次使用学生管理系统");system("PAUSE");;break;
default:
{
system("PAUSE");
system("cls");
_beep(300,200);
_beep(200,200);
_beep(100,200);
printf("输入错误请重新选择:\n");}
if(a=='1'||a=='2'||a=='3'||a=='4'||a=='5'||a=='6'||a=='7'||a=='8'||a=='9')
break;
else
main();
}
return 0;
}
void menu ()
{
printf("\t\t\t学生管理系统主菜单\n");
printf("********************************************************************************\n");
printf("请按数字(1-9)选择:\n");
printf("1.录入学生信息.\n");
printf("2.查询学生信息.\n");
printf("3.按学号删除学生信息.\n");
printf("4.保存学生信息.\n");
printf("5.按学号排序.\n");
printf("6.修改信息.\n");
printf("7.导入信息.\n");
printf("8.帮助.\n");
printf("9.退出系统!\n");
printf("********************************************************************************\n");
}
int enter(struct student stu[])
{
int i,k;
for(i=j;i<=j;i++)
{
j++;
printf("**********************************录入学生**************************************\n");
printf("第%d个学生:\n",j);
printf("学号:\n");
scanf("%d",&stu[i].num);
/* for(x=1;x<=j;x++)
{
if(stu[x].num==stu[i].num)
{
printf("学号重复了!请重新录入!\n");
printf("第%d个学生:\n",j);
printf("学号:\n");
scanf("%d",&stu[i].num);
i--;
x--;
break;
}
}*/
printf("姓名:\n");
scanf("%s",stu[i].name);
printf("年龄:\n");
scanf("%s",&stu[i].age);
printf("性别(m/w):\n");
scanf("%s",stu[i].sex);
printf("出生日期 年.月.日:\n");
scanf("%s",stu[i].brithday);
printf("籍贯:\n");
scanf("%s",stu[i].nation);
printf("家庭地址:\n");
scanf("%s",stu[i].addr);
printf("电话:\n");
scanf("%s",stu[i].phone);
printf("\n");
printf("*********************输入R退回主菜单,按ENTER继续录入****************************\n");
_beep(600,200);
getchar();
if((k=getchar())=='R')
{
system ("cls");
main();
break;
}
}
return 0;
}
void menu2()
{
printf("*******************************查询学生信息*************************************\n");
printf("请按1~3选择:\n");
printf("1.显示所有学生信息\n");
printf("2.搜索学号查询\n");
printf("3.搜索姓名查询\n");
printf("4.退回主菜单\n");
printf("*******************************查询学生信息*************************************\n");
}
void scan()
{ char b;
menu2();
b=getche();
switch(b)
{ case '1':system("cls"); print(stu) ;break;
case '2':system("cls"); scanno(stu);break;
case '3': system("cls");scanname(stu);break;
case '4': system("cls");main();break;
default: system ("cls");
_beep(300,200);
_beep(200,200);
_beep(100,200);
printf("请重新选择:\n");
scan();
}
}
void print(struct student stu[])
{ int n;
if(j>0)
{
for (n=0;n<j;n++)
{
{
printf("学号:%d\n",stu[n].num);
printf("姓名:%s\n",stu[n].name);
printf("年龄:%s\n",stu[n].age);
printf("性别(m/w):%s\n",stu[n].sex);
printf("出生日期 年.月.日:%s\n",stu[n].brithday);
printf("籍贯:%s\n",stu[n].nation);
printf("家庭地址:%s\n",stu[n].addr);
printf("电话:%s\n",stu[n].phone);
printf("*******************************查询学生信息*************************************\n");
system("PAUSE");
system("cls");
}
if(n==(j-1))
{
printf("\n以上是全部学生信息!\n");
system("PAUSE");
system("cls");
scan();
}
}
}
else
{
system("cls");
printf("\n无学生信息,请输入学生信息!!!!\n");
_beep(400,500);
system("PAUSE");
system("cls");
scan();
}
}
void scanno(struct student stu[])
{
int i,a,z=-1;
printf("\n请输入要查询的学号:\n");
scanf("%d",&a);
for(i=0;i<j;i++)
{
if(a==stu[i].num)z=i;
}
if(z!=-1)
{
printf("学号:%d\n",stu[z].num);
printf("姓名:%s\n",stu[z].name);
printf("年龄:%s\n",stu[z].age);
printf("性别(m/w):%s\n",stu[z].sex);
printf("出生日期 年.月.日:%s\n",stu[z].brithday);
printf("籍贯:%s\n",stu[z].nation);
printf("家庭地址:%s\n",stu[z].addr);
printf("电话:%s\n",stu[z].phone);
printf("*******************************查询学生信息*************************************\n");
system("PAUSE");
system("cls");
scan();
}
else
{
printf("无此学生信息!按任意键返回\n");
system("PAUSE");
system("cls");
scan();
}
}
void scanname(struct student stu[])
{
char a[5];
int i,n;
printf("\n请输入要查询的姓名:\n");
scanf("%s",a);
for(i=0;i<j;i++)
{
if(!strcmp(a,stu[i].name))
break;
}
n=(!strcmp(a,stu[i].name));
if(n==1)
{
printf("学号:%d\n",stu[i].num);
printf("姓名:%s\n",stu[i].name);
printf("年龄:%s\n",stu[i].age);
printf("性别(m/w):%s\n",stu[i].sex);
printf("出生日期 年.月.日:%s\n",stu[i].brithday);
printf("籍贯:%s\n",stu[i].nation);
printf("家庭地址:%s\n",stu[i].addr);
printf("电话:%s\n",stu[i].phone);
printf("*******************************查询学生信息*************************************\n");
system("PAUSE");
system("cls");
scan();
}
else
{
printf("无此学生信息!按任意键返回\n");
system("PAUSE");
system("cls");
scan();
}
}
void menu3()
{
printf("*******************************修改学生信息*************************************\n");
printf("请按1~2选择:\n");
printf("1.搜索学号修改\n");
printf("2.搜索姓名修改\n");
printf("3.退回主菜单\n");
printf("*******************************修改学生信息*************************************\n");
}
void change(struct student stu[])
{
char b;
menu3();
b=getche();
switch(b)
{
case '1':system("cls");
{
int k,i,a,z=-1;
printf("\n请输入要修改的学号:\n");
scanf("%d",&a);
for(i=0;i<j;i++)
{
if(a==stu[i].num)
z=i;
}
if(z!=-1)
{
printf("此学生信息为:\n");
printf("学号:%d\n",stu[z].num);
printf("姓名:%s\n",stu[z].name);
printf("年龄:%s\n",stu[z].age);
printf("性别(m/w):%s\n",stu[z].sex);
printf("出生日期 年.月.日:%s\n",stu[z].brithday);
printf("籍贯:%s\n",stu[z].nation);
printf("家庭地址:%s\n",stu[z].addr);
printf("电话:%s\n",stu[z].phone);
printf("*******************************修改学生信息*************************************\n");
printf("请输入此学生新信息:\n");
printf("学号:\n");
scanf("%d",&stu[z].num);
printf("姓名:\n");
scanf("%s",stu[z].name);
printf("年龄:\n");
scanf("%s",stu[z].age);
printf("性别(m/w):\n");
scanf("%s",stu[z].sex);
printf("出生日期 年.月.日:\n");
scanf("%s",stu[z].brithday);
printf("籍贯:\n");
scanf("%s",stu[z].nation);
printf("家庭地址:\n");
scanf("%s",stu[z].addr);
printf("电话:\n");
scanf("%s",stu[z].phone);
printf("\n");
printf("*****************修改完成!输入R退回主菜单,按ENTER返回修改菜单*****************\n");
getchar();
if((k=getchar())=='R')
{
system ("cls");
main();
break;
}
}
if(z==-1);
{
system("cls");
printf("\n无学生信息,请输入学生信息!!!!\n");
system("PAUSE");
system("cls");
change(stu);
}
system("cls");
change(stu);
}break;
case '2': system("cls");
{ char a[5];
int i,n,k;
printf("\n请输入要修改的姓名:\n");
scanf("%s",a);
for(i=0;i<j;i++)
{
if(!strcmp(a,stu[i].name))
break;
}
n=(!strcmp(a,stu[i].name));
if(n==1)
{
printf("学号:%d\n",stu[i].num);
printf("姓名:%s\n",stu[i].name);
printf("年龄:%s\n",stu[i].age);
printf("性别(m/w):%s\n",stu[i].sex);
printf("出生日期 年.月.日:%s\n",stu[i].brithday);
printf("籍贯:%s\n",stu[i].nation);
printf("家庭地址:%s\n",stu[i].addr);
printf("电话:%s\n",stu[i].phone);
printf("*******************************修改学生信息*************************************\n");
printf("请输入此学生新信息:\n");
printf("学号:\n");
scanf("%d",&stu[i].num);
printf("姓名:\n");
scanf("%s",stu[i].name);
printf("年龄:\n");
scanf("%s",stu[i].age);
printf("性别(m/w):\n");
scanf("%s",stu[i].sex);
printf("出生日期 年.月.日:\n");
scanf("%s",stu[i].brithday);
printf("籍贯:\n");
scanf("%s",stu[i].nation);
printf("家庭地址:\n");
scanf("%s",stu[i].addr);
printf("电话:\n");
scanf("%s",stu[i].phone);
printf("\n");
printf("*****************修改完成!输入R退回主菜单,按ENTER返回修改菜单*****************\n");
getchar();
if((k=getchar())=='R')
{
system ("cls");
main();
break;
}
system("PAUSE");
system("cls");
change(stu);
}
else
{
printf("无此学生信息!按任意键返回\n");
system("PAUSE");
system("cls");
change(stu);
}
}break;
case '3': system("cls");main();break;
default: system ("cls");
printf("请重新选择:\n");
change(stu);
}
}
void paixu(struct student stu[])
{
int i,k,n;
char t[30];
for(i=0;i<j;i++)
for(k=0;k<j-i-1;k++)
{
if(stu[k].num>stu[k+1].num)
{
n=stu[k].num;//学号调换
stu[k].num=stu[k+1].num;
stu[k+1].num=n;
strcpy (t,stu[k].name);//名字调换
strcpy (stu[k].name,stu[k+1].name);
strcpy(stu[k+1].name,t);
strcpy (t,stu[k].age);//年龄调换
strcpy (stu[k].age,stu[k+1].age);
strcpy(stu[k+1].age,t);
strcpy(t,stu[k].sex);//性别调换
strcpy (stu[k].sex,stu[k+1].sex);
strcpy(stu[k+1].sex,t);
strcpy(t,stu[k].brithday);//生日调换
strcpy (stu[k].brithday,stu[k+1].brithday);
strcpy(stu[k+1].brithday,t);
strcpy(t,stu[k].nation);//籍贯调换
strcpy(stu[k].nation,stu[k+1].nation);
strcpy(stu[k+1].nation,t);
strcpy(t,stu[k].addr); //地址调换
strcpy(stu[k].addr,stu[k+1].addr);
strcpy(stu[k+1].addr,t);
strcpy(t,stu[k].phone);
strcpy(stu[k].phone,stu[k+1].phone);
strcpy(stu[k+1].phone,t);
}
}
printf("\n排序完成!\n");
system("PAUSE");
system("cls");
main();
}
void delete_xh ( )
{ int i,z=-1,a,t;
char k;
printf("请输入学生学号:\n");
scanf("%d",&a);
for(i=0;i<j;i++)
{
if(a==stu[i].num)
z=i;
}
if(z!=-1)
{
{
printf("*****************************!删除学生信息!***********************************\n");
printf("此学生信息为:\n");
printf("学号:%d\n",stu[z].num);
printf("姓名:%s\n",stu[z].name);
printf("年龄:%s\n",stu[z].age);
printf("性别(m/w):%s\n",stu[z].sex);
printf("出生日期 年.月.日:%s\n",stu[z].brithday);
printf("籍贯:%s\n",stu[z].nation);
printf("家庭地址:%s\n",stu[z].addr);
printf("电话:%s\n",stu[z].phone);
for(;z<j;z++)
{
stu[z].num=stu[z+1].num;
strcpy (stu[z].name,stu[z+1].name);
strcpy (stu[z].age,stu[z+1].age);
strcpy (stu[z].sex,stu[z+1].sex);
strcpy (stu[z].brithday,stu[z+1].brithday);
strcpy (stu[z].nation,stu[z+1].nation);
strcpy (stu[z].addr,stu[z+1].addr);
strcpy (stu[z].phone,stu[z+1].phone);
}
j--;
printf("\n*****************删除完成!按ENTER返回删除菜单*********************************\n");
}
}
else
printf("\n无此学生信息!!!!\n");
system("PAUSE");
system("cls");
main ( );
if(z==-1)
{
system("cls");
printf("\n无此学生信息!!!!\n");
system("PAUSE");
system("cls");
main();
}
}
void save(struct student stu[])
{ FILE *fp;
int i;
if((fp=fopen("学生信息.txt","wb"))==NULL)
{ printf("不能打开\n");
return;
}
else
{
fwrite(stu,sizeof(struct student),j,fp);
fclose(fp);
printf("OK,保存完毕!任意键返回。");
getch();
system("cls");
main();
}
}
void load(struct student stu[])
{
FILE *fp;
int i=0;
if((fp=fopen("学生信息.txt","rb"))==NULL)
{ printf("打不开文件!\n");
main();
}
else
{ if(fp!=NULL)
while(!feof(fp))
{ fread(stu+i,sizeof(struct student),1,fp);
i++;
}
fclose (fp);
i--;
printf("读取成功!读取了%d个记录,任意键返回!",i);
j = i;
getch();
system("cls");
main();
}
return --i;
}
void password()
{
long b;
printf ("请输入管理员密码!\n");
scanf ("%d",&b);
if (b!=123456)
{printf ("密码错误!\n");return;}
else
printf ("密码正确!欢迎进入系统o(∩_∩)o,请输入");
}
void help()
{
printf("1.首次使用本系统时录入学生信息后请及时保存!\n");
printf("2.保存文件默认路径和本软件是同一路径,文件名为“学生信息”.\n");
printf("3.用本系统录入过信息且保存成功,再次查看学生信息时,请先导入数据后再查看\n");
printf("4.本系统仅限交流之用,严禁用于商业,版权所有。\n\t\t\t\t\t\t编者:孙宇洪\n\t\t\t\t\t\t2009.11.23\n");
system("PAUSE");
system("cls");
main();
}
说明:我编写了password函数,如何将输入的密码转换成星号