回复 4楼 grmmylbs
我把代码发上去吧。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define N 20
#define M 30
void output();
void search();
void insert(struct student *h);
void delet();
void modify(struct student *p);
void rank();
//排序
void statics();
//统计
void save(struct student *head);
//学生信息
struct student
{
int num;
//学生号
char clas[M];
//学生班级
char name[N];
char sex[N];
//性别
char item[N];
//项目
char phonenum[N];
//学生电话
char area[N];
//领取号码条区
char strip[N];
//号码条
struct student *next;
};
//录入学生信息
//////改过
struct student *input()
{
FILE *fp;
int i,n;
struct student *p,*p1,*p2,*head;
p2=(struct student *)malloc(sizeof(struct student));
head=p1=(struct student *)malloc(sizeof(struct student));
i=1;
printf("录入学生数n: ");
scanf("%d",&n);
printf("请输入参赛学生信息:\n学生号\t 学生班级\t
姓名\t性别\t项目\t 学生电话\t 领码区\t 号码条\n\n");
scanf("%d%s%s%s%s%s%s%s",&p2->num,p2->clas,p2->name,p2->sex,p2->item,p2->phonenum,p2->area,p2->strip);
p2->next=NULL;
p1->next=p2;
p1=p2;
while(i<n)
{
//p1的下一结点只向新结点p2,p1始终指向最后的结点
p2=(struct student *)malloc(sizeof(struct student));
//为新结点申请空间
scanf("%d%s%s%s%s%s%s%s",&p2->num,p2->clas,p2->name,p2->sex,p2->item,p2->phonenum,p2->area,p2->strip);
p1->next=p2;
p2->next=NULL;
p1=p2;
i++;
}
//p1->next=NULL;
//使p1下一结点指向NULL
fp=fopen("super.txt","w");
p=head->next;
while(p!=NULL)
{
//fprintf(fp,"%d %s %s %s %s %s %s %s",p->num,p->clas,p->name,p->sex,p->item,p->phonenum,p->area,p->strip);
fwrite(p,sizeof(struct student),1,fp);
p=p->next;
}
fclose(fp);
p=head->next;
while(p!=NULL)
{
printf("%d\n",p->num);
p=p->next;
}
system("pause");
return head;
}
//主函数
main()
{
int i,x,j;
int flag=0,Y=0;
FILE *fp;
struct student * head;
char pw[N],land[N];
struct secret p1,p2;
while(1)
{
printf("\n\t\t\t|---◆
!注册用户名按1号键!
◆---|\n\n");
printf("\t\t\t|---◆
!用户登录按2号键!
◆---|\n\n");
printf("\t\t\t|---◆ !浏览所有信息按3号键! ◆---|\n\n");
printf("请输入您要操作的编号:
");
scanf("%d",&flag);
if(flag==1)
{
printf("\n请输入要注册的用户名:\t");
scanf("%s",p1.admin);
fp=fopen("pass.txt","a+");
printf("\n请输入要设置的6位密码:\t");
scanf("%s",p1.password);
for(i=0;i<6;i++)
{
p1.password[i]=p1.password[i]+4;
//输入密码
}
fprintf(fp,"%s %s\n",p1.admin,p1.password);
fclose(fp);
}
////////////////////
if(flag==2)
{
for(i=0;i<3;i++)
{
printf("请输入用户名:\t");
scanf("%s",p2.admin);
printf("\n\n
欢迎来到运动会管理系统\n请输入您的6位密码:\t
\n");
/////////////////////////////////密码再次输入有问题!/////////////////////////////////
for(j=0;j<6;j++)
{
land[j]=getch();
//输入密码
printf("*");
}
for(j=0;j<flag;j++)
land[j]=land[j]+4;
strcpy(p2.password,land);
fp=fopen("pass.txt","r");
while(fscanf(fp,"%s %s",p1.admin,p1.password)!=EOF)
//EOF符号结束读取文件
{
if((strcmp(p1.admin,p2.admin)==0)&&(strcmp(p1.password,p2.password)==0))
{
Y=1;
break;
}
}
if(Y=1)
{
for(i=0;i<6;i++)
{
printf("\n\n
*********** ♀♀欢迎进入运动会管理系统♀♀ ***********
\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("
*
按0号键:退出系统。
*
\n");
printf("
******************************************************
\n");
printf("\n\n请输入您要做的操作编号:\t");
scanf("%d",&x);
if(x==0) break;
head=(struct student *)malloc(sizeof(struct student));
switch(x)
{
case 1: head=input();
system("cls");
//清屏
break;
case 2: output(head);
break;
case 3: modify(head);
break;
case 4: delet();
break;
case 5: search();
break;
case 6: insert(head);
break;
case 7: rank();
break;
case 8: statics();
break;
case 9:save(head);
break;
}
}
break;
}
else
printf("对不起您的密码有误\n");
}
}
//if(flag==2)结束
if(flag==3)
rank();
}
}
//输出学生信息
//////改过
void output()
{
FILE *fp;
struct student *p;
p=(struct student *)malloc(sizeof(struct student));
fp=fopen("super.txt","r");
while(fread(p,sizeof(struct student),1,fp)!=NULL)
{
printf("%d,%s,%s,%s,%s,%s,%s,%s\n",p->num,p->clas,p->name,p->sex,p->item,p->phonenum,p->area,p->strip);
//p=(struct student *)malloc(sizeof(struct student));
}
system("pause");
fclose(fp);
}
//查找学生信息
void search()
{
FILE *fp;
// char r[N];
int num;
struct student *p;
p=(struct student *)malloc(sizeof(struct student));
fp=fopen("super.txt","r");
//p2=(struct student *)malloc(sizeof(struct student));
printf("请输入要查找的学生号: ");
scanf("%d",&num);
while(fread(p,sizeof(struct student),1,fp)!=NULL)
{
printf("%d,%s,%s,%s,%s,%s,%s,%s\n",p->num,p->clas,p->name,p->sex,p->item,p->phonenum,p->area,p->strip);
//p=(struct student *)malloc(sizeof(struct student));
}
system("pause");
fclose(fp);
}