求助C语言!!!!!要求编写一个学生信息管理系统的C语言代码
2个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <windows.h>
#define N 30
void save();
struct student
{
char student_id[N]; //学号
char name[N]; // 姓名
char age[N]; // 年龄
char gender[N]; //性别
char born[N]; //出生年月
char address[N]; //地址
char number[N]; //电话号码
char E_mail[N]; //电子邮箱
struct student* next;
};
struct student *head;
//登陆模块
int LogIn()
{
char a[30],b[30];
int cout = 0;
L: while( cout < 3 )
{
printf( "请输入账号:" );
scanf( "%s",&a);
fflush(stdin);
printf( "请输入密码:" );
scanf( "%s",&b);
fflush(stdin);
if( (strcmp( a,"luohai") != 0) || (strcmp( b,"123456") != 0))
{
cout ++;
printf("警告:登陆错误,您还有 %d 次机会。\n",3-cout);
goto L;
}
else
{
printf( "\n登陆成功,正在努力加载......\n" );
Sleep(500);
system( "cls");
return 1;
}
}
printf("登陆三次失败,退出!\n");
exit(0);
}
//输入学生信息
void Great_Stu()
{
char a;
struct student *p1,*p2; // p2建立新节点
do{
p2 =(struct student *)malloc(sizeof(struct student));
p2 ->next = NULL;
if( head == NULL ) //若为空表 直接接入表头
{
printf("请依次输入:学号 姓名 年龄 性别 出生年月 地址 电话号码 邮箱\n");
scanf("%s %s %s %s %s %s %s %s",&p2->student_id,&p2->name,&p2->age,&p2->gender,&p2->born,&p2->address,&p2->number,&p2->E_mail);
head = p2;
}
else
{
p1 = head;
while( p1 ->next != NULL )
{
p1 = p1 ->next;
}
p2 =(struct student *)malloc(sizeof(struct student));
p2 ->next = NULL;
printf("请依次输入:\n学号 姓名 年龄 性别 出生年月 地址 电话号码 邮箱\n");
fflush(stdin);
scanf("%s %s %s %s %s %s %s %s",&p2->student_id,&p2->name,&p2->age,&p2->gender,&p2->born,&p2->address,&p2->number,&p2->E_mail);
p1 -> next = p2;
}
fflush(stdin);
printf("是否继续输入(y/n)\n");
scanf("%c",&a);
}while(a == 'y' || a == 'Y');
}
//保存到文件
void save()
{
FILE *fp;
struct student *p;
p = head;
if( (fp = fopen("student.txt","w")) == NULL )
{
printf("打开失败!\n");
}
else
{
while( p != NULL )
{
fprintf(fp," %s %s %s %s %s %s %s %s",p->student_id,p->student_id,p->name,p->age,p->gender,p->born,p->address,p->number,p->E_mail);
p = p->next;
}
printf("文件保存成功!\n\n");
}
fclose(fp);
return ;
}
//打开文件信息
void open()
{
FILE *fp = NULL;
struct student *p1,*p2;
p1 = p2 = (struct student *)malloc(sizeof(struct student));
fp = fopen( "student.txt","r");
if( fp== NULL )
{
printf("该文件没有任何信息记录!\n");
return ;
}
head = p1;
while(!feof(fp))
{
fflush(stdin);
fscanf(fp,"%s %s %s %s %s %s %s %s",&p2->student_id,&p2->name,&p2->age,&p2->gender,&p2->born,&p2->address,&p2->number,&p2->E_mail);
p1 ->next = p2;
p1 =p2;
p2 = (struct student *)malloc(sizeof(struct student));
p1 ->next = NULL;
}
fclose(fp);
printf("成功打开文件!\n");
return;
}
//浏览学生信息
void display()
{
struct student *temp;
temp = head ;
if( temp == NULL )
printf("无学生信息记录!\n");
else
{
printf("\n您输入的学生信息为:\n\n");
printf("学号 姓名 年龄 性别 出生年月 地址 电话号码 邮箱\n");
while( temp != NULL )
{
printf("%s %s %s %s %s %s %s %s",temp->student_id,temp->name,temp->age,temp->gender,
temp->born,temp->address,temp->number,temp->E_mail);
if(temp ->next != NULL)
temp = temp->next;
else
{ printf("\n");
return ;
}
printf("\n");
}
}
}
//按姓名查找
void search_name()
{
char name1[30];
struct student *p;
p = head;
printf( "请输入查找的姓名:");
fflush(stdin);
scanf("%s",name1);
while( p != NULL)
{
if( (strcmp(name1,p->name)) == 0 )
{
printf("您查找的学生信息为:\n");
printf("学号 姓名 年龄 性别 出生年月 地址 电话号码 邮箱\n");
printf("%s %s %s %s %s %s %s %s\n",p->student_id,p->name,p->age,p->gender,
p->born,p->address,p->number,p->E_mail);
return ;
}
else
{
p = p ->next;
}
}
printf("查无此人!\n");
}
//按学号查找
void search_id()
{
char id[30];
struct student *p;
p = head;
printf( "请输入查找的学号:");
fflush(stdin);
scanf("%s",id);
while( p != NULL)
{
if( (strcmp(id,p->student_id)) == 0 )
{
printf("学号 姓名 年龄 性别 出生年月 地址 电话号码 邮箱\n");
printf("%s %s %s %s %s %s %s %s\n",p->student_id,p->name,p->age,p->gender,
p->born,p->address,p->number,p->E_mail);
return ;
}
else
{
p = p ->next;
}
}
printf("对不起,查无此人!\n");
}
//查找
void search()
{
int i;
struct student *p;
p = head;
printf("请输入查找方式:1.按姓名查找 2.按学号查找:");
scanf("%d",&i);
switch(i)
{
case 1:
search_name();
break;
case 2:
search_id();
break;
default:
printf("输入无效。\n");
}
}
//增加学生信息 插入到表尾
void add_imformation()
{
struct student *p3,*p4;
p3 = head;
if( p3 == NULL)
Great_Stu();
else
{
while( p3 ->next != NULL )
{
p3 = p3 ->next;
}
p4 =(struct student *)malloc(sizeof(struct student));
p4 ->next = NULL;
fflush(stdin);
printf("请依次输入您要增加的学生信息:\n学号 姓名 年龄 性别 出生年月 地址 电话号码 邮箱\n");
scanf("%s %s %s %s %s %s %s %s",&p4->student_id,&p4->name,&p4->age,&p4->gender,&p4->born,&p4->address,&p4->number,&p4->E_mail);
p3 -> next = p4;
printf("增加学生信息成功!\n\n");
}
}
//修改数据
void Modify()
{
struct student *p;
char name2[N];
printf("请输入你想修改的学生姓名:");
scanf( "%s", &name2);
p = head;
while( p != NULL )
{
if( (strcmp(name2,p->name)) == 0 )
{
printf("该学生信息为:\n");
printf("学号 姓名 年龄 性别 出生年月 地址 电话号码 邮箱\n");
printf("%s %s %s %s %s %s %s %s\n",p->student_id,p->name,p->age,p->gender,
p->born,p->address,p->number,p->E_mail);
fflush(stdin);
printf("您将修改为:\n");
scanf("%s %s %s %s %s %s %s %s",&p->student_id,&p->name,&p->age,&p->gender,&p->born,&p->address,&p->number,&p->E_mail);
return;
}
else
p = p ->next;
}
printf(" 修改数据成功!\n\n");
}
//删除数据
void Delet()
{
char num[N],c;
printf("请输入你要删除的学生的学号:\n");
scanf("%s",&num);
struct student *p1, *p2;
p1 = head;
if( p1 == NULL )
{
printf("无任何学生信息记录!\n");
return ;
}
p2 = p1 ->next;
if( (strcmp(num,p1 ->number)) == 0) //删除数据在链表头
{
printf( "该生的信息为:\n");
printf("学号 姓名 年龄 性别 出生年月 地址 电话号码 邮箱\n");
printf("%s %s %s %s %s %s %s %s\n",p1->student_id,p1->name,p1->age,p1->gender,
p1->born,p1->address,p1->number,p1->E_mail);
printf("确认删除该学生信息?(y/n)\n");
fflush(stdin);
scanf("%c",&c);
if(c == 'y' || c =='Y' )
{
head = p2;
printf("成功删除该学生信息!\n");
free(p1);
return ;
}
else
return ;
}
else
{
while( p2 != NULL )
{
if( (strcmp(num,p2->number)) == 0 )
{
printf( "该生的信息为:\n");
printf("学号 姓名 年龄 性别 出生年月 地址 电话号码 邮箱\n");
printf("%s %s %s %s %s %s %s %s\n",p2->student_id,p2->name,p2->age,p2->gender,
p2->born,p2->address,p2->number,p2->E_mail);
printf("确认删除该学生信息?(y/n)\n");
fflush(stdin);
scanf("%c",&c);
if(c == 'y' || c =='Y' )
{
p1 -> next = p2 -> next ;
free(p2);
printf("成功删除该学生信息!\n");
return ;
}
else
return ;
}
else if( p2 ->next != NULL)
{
p1 = p1 ->next;
p2 = p2 ->next;
}
}
printf("删除该学生信息失败.\n");
}
}
//退出系统
int quit()
{
char ch;
printf( "确定退出?(y/n)\n" );
fflush(stdin);
scanf("%c",&ch);
if( ch == 'Y'|| ch == 'y' )
return 0;
else
{
return 1;
}
}
int main()
{
int choose;
printf(" ----******************************----\n");
printf(" * 欢迎登陆学生管理系统 *\n");
printf(" ----******************************----\n");
printf("请登陆:\n");
LogIn();
printf(" ----******************************----\n");
printf(" * 学生管理系统 *\n");
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(" ◇ 8.打开信息文件 ◇ \n");
printf(" ◇ 9.退出系统 ◇ \n");
printf("---------------------------------------\n");
H: printf("请选择功能:");
fflush(stdin);
scanf("%d",&choose);
switch(choose)
{
case 1 :
Great_Stu();
break;
case 2 :
display();
break;
case 3:
search();
break;
case 4:
add_imformation();
break;
case 5:
Modify();
break;
case 6:
Delet();
break;
case 7:
save();
break;
case 8:
open();
break;
case 9 :
{
if( quit() == 0 )
exit(0);
else
goto H;
}
break;
default:
{
printf("输入有误,请重新输入:\n");
goto H;
}
}
goto H;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已发送QQ请求。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询