首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

小弟敲了很长时间,但是终究还是有有关问题,不解中 不解中

2013-04-20 
小弟敲了很长时间,但是终究还是有问题,不解中 不解中#includestdio.h#includestdlib.h#define L 5#inc

小弟敲了很长时间,但是终究还是有问题,不解中 不解中
#include<stdio.h>
#include<stdlib.h>
#define L 5
#include<string.h>
#define M 8
#define N 10
struct student_system 
{
char num[M];
char name[N];
char sex[L];
int Clanguage;
int English;
struct student_system *next;
};
void UserReg();
void Login(); 
int Menu(void);
void Input();
void Scan();
void Search();
void Delete();
int main()
{
int ch;
int selectNum; 
system("cls");
printf("\t*********************************\n");
printf("\n\t*        注册和登录主菜单       *\n");    
printf("\t*           1   注册            *\n");
printf("\t*           2   登录            *\n");
printf("\t*           3   退出            *\n");
printf("\t*\t  请选择(0---3):\t*\n");
printf("\t*********************************\n");
scanf("%d",&selectNum);        
switch (selectNum)         
{
case 1:UserReg();          
 break;
case 2:Login();          
 break;
case 3:printf("退出系统!\n"); 
 exit(0);
default:printf("输入错误!");
break;
}
system("cls");
while(1)
{
ch=Menu();
switch(ch)
{
case 1:Input();
   break;
case 2:Scan();
   break;
case 3:Search();
   break;
case 4:Delete();
   break;
case 5:
   break;
case 0:exit(0);
default:printf("输入错误!");
break;
}
}
return 0;
}
void UserReg()
{
FILE *fp;                                 
char Linedata[50]={0},User[20],Pass[20]; 
system("cls");
fp = fopen("data.txt","at");              
printf("新用户注册:\n");         
printf("请输入用户名:\n");       
fflush(stdin);                             
gets(User);                               
printf("请输入密码:\n");
fflush(stdin);                              
gets(Pass);                                 


strcpy(Linedata,User);                     
strcat(Linedata,",");
strcat(Linedata,Pass);
strcat(Linedata,"\n");
fputs(Linedata,fp);                        
fclose(fp);                               
printf("注册成功!\n");
main();                                    
}
void Login()
{
FILE *fp;                                   
int find=0,i;
char User[N],Pass[N],Userstrcat[N]={0}; 
char Userdata[N]={0}; 
system("cls");
fp = fopen("data.txt","r");                
for(i=0;i<3;i++)
{
system("cls");
printf("用户登录(第%d次):\n",i+1);
printf("请输入用户名:\n");        
fflush(stdin);                                 
gets(User);                                    
printf("请输入密码:\n");
fflush(stdin);                                  
gets(Pass);                                  
strcpy(Userstrcat,User);                      
strcat(Userstrcat,",");
strcat(Userstrcat,Pass);
strcat(Userstrcat,"\n");
while (!feof(fp))                            
{
fgets(Userdata,19,fp);
if (strcmp(Userdata,Userstrcat)==0 )  
{
printf("登陆成功!\n");      
printf("欢迎使用学生管理系统!");
find=1; 
i=3;
break;                              
}
}

}
fclose(fp);                                        
if(!find)                                               
{
printf("用户名或者密码有误!\n"); 


exit(0);

}
int Menu(void)
{
int ch1;
printf("\t*********************************\n");
printf("\t*\t成绩管理系统主菜单\t*\n");
printf("\t*\t1.学生录入\t\t*\n");
printf("\t*\t2.学生浏览\t\t*\n");
printf("\t*\t3.学生查询\t\t*\n");
printf("\t*\t4.学生删除\t\t*\n");
printf("\t*\t5.成绩统计\t\t*\n");
printf("\t*\t0.退出系统\t\t*\n");
printf("\t*\t请选择(0---5):\t\t*\n");
printf("\t*********************************\n");
scanf("%d",&ch1);
return ch1;
}
void Input()
{
struct student_system stu;
FILE *fp;
system("cls");
printf("学生信息录入:");
printf("\n请输入(学号,姓名,性别,c语言成绩,英语成绩):");
scanf("%s%s%s%d%d",stu.num,stu.name,stu.sex,&stu.Clanguage,&stu.English);
if((fp=fopen("stu_txt","a+"))==NULL)
{
printf("文件打不开!");
return;
}
if(fwrite(&stu,sizeof(struct student_system),1,fp)!=1)
printf("输入错误!\n");
fclose(fp);
}
void Scan()
{
int i,sizeoffile,count;
struct student_system stu;
FILE *fp;
if((fp=fopen("stu_txt","r+"))==NULL)
{
printf("文件打不开!");
return;
}
i=0;
fseek(fp,0,2);
sizeoffile=ftell(fp);
rewind(fp);
count=sizeoffile/sizeof(struct student_system);
printf("\t学号\t    姓名      性别    c语言    英语\n");
for(i=0;i<count;i++)
{
fread(&stu,sizeof(struct student_system),1,fp);

printf("   %8s   %10s    %5s    %4d     %4d\n",stu.num,stu.name,stu.sex,stu.Clanguage,stu.English);
}
fclose(fp);
}
void Search()
{
FILE *fp;
int x,y,flag=0,sizeoffile;
char Search[N];
struct student_system search;
if((fp=fopen("stu_txt","rb"))==NULL)
{
printf("输入错误!");
return;
}
printf("请输入学号或姓名:");
scanf("%s",Search);
fseek(fp,0,2);
sizeoffile=ftell(fp);
rewind(fp);
x=sizeoffile/sizeof(struct student_system);
for(y=0;y<x;y++)
{
fread(&search,sizeof(struct student_system),1,fp);
if(strcmp(search.num,Search)==0||strcmp(search.name,Search)==0)
{
printf("     学号       姓名      性别     c语言   英语\n");
printf("%8s  %10s    %5s    %4d    %4d\n",search.num,search.name,search.sex,search.Clanguage,search.English);
flag=1;
}
}
if(flag==0)
printf("没有这个人的信息!");
fclose(fp);
}
void Delete()
{
int sizeoffile,number,i;
char content[N];
FILE *fp;
struct student_system *p,*q,*head=NULL;
struct student_system *m,*n;
p=q=(struct student_system*)malloc(sizeof(struct student_system));
p->next=NULL;
if((fp=fopen("stu_txt","rb+"))==NULL)
{
printf("文件打不开!");
return;
}
fseek(fp,0,2);
sizeoffile=ftell(fp);
rewind(fp);
number=sizeoffile/sizeof(struct student_system);
for(i=0;i<number;i++)
{
fread(p,sizeof(struct student_system),1,fp);
if(head==NULL)
head=p;
else 
q->next=p;
q=p;
p=(struct student_system*)malloc(sizeof(struct student_system));
}
q->next=NULL;
fclose(fp);
m=head;

printf("请输入学生学号或姓名:\n");
scanf("%s",content);
m=head;
while(m!=NULL)


{
if(strcmp(m->name,content)==0||strcmp(m->num,content)==0)
{
if(m!=head)
{
n->next=m->next;
break;
}
else
{
head=head->next;
break;
}
}
n=m;
m=m->next;
}
printf("剩余的学生信息简介(学号和姓名):\n");
m=head;
while(m!=NULL)
{
printf("%8s\t",m->num);
printf("%10s\n",m->name);
m=m->next;
}
if((fp=fopen("stu_txt","w+"))==NULL)
{
printf("文件打不开!");
return;
}
rewind(fp);
m=head;
while(m!=NULL)
{
if(fwrite(m,sizeof(struct student_system),1,fp)!=1)
printf("文件打开错误!");
m=m->next;
}
fclose(fp);
}

热点排行