资源描述
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
struct STUDENT
{
int num;
char name[10];
char sex;
int score;
struct STUDENT *next;
};
struct STUDENT *Head;
int count=0;
void createClass();
void showClass();
void insertClass();
void deleteClass();
void queryClass();
void savestuInfo();
void loadstuInfo();
void editClass();
void showMenu();
void main()
{
int choice;
do
{
showMenu();
printf("请选择项目:");
while(scanf("%d",&choice)!=1)
{
getchar();
system("cls");
showMenu();
printf("上次选择项目有错,请重新选择项目:");
}
system("cls");
switch(choice)
{
case 1:createClass();break;
case 2:showClass();break;
case 3:deleteClass();break;
case 4:insertClass();break;
case 5:editClass();break;
case 6:savestuInfo();break;
case 7:loadstuInfo();break;
case 8:queryClass();break;
case 9:exit(0);break;
default:printf("选择无效!");break;
}
printf("提示:按任意键继续!");
getch();
system("cls");
}while(choice!=9);
}
void createClass()
{
int i,n;
struct STUDENT *p,*q;
printf("请输入要创建的人数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
p=(struct STUDENT *)malloc(sizeof(struct STUDENT));
printf("请输入第%d个学生的学号、姓名、成绩、性别:",i+1);
scanf("%d%s%d%c",&p->num,p->name,&p->score,&p->sex);
p->next=NULL;
if(i==0)
Head=p;
else
{
q->next=p;
}
q=p;
count++;
}
}
void showClass()
{
struct STUDENT *p;
p=Head;
if(count==0)
printf("该班级为空!\n");
else
{
printf("学生信息如下:\n");
printf("学号 姓名 成绩 性别:\n");
while(p)
{
printf("%-6d%-6s%-6d%c\n",p->num,p->name,p->score,p->sex);
p=p->next;
}
}
}
void insertClass()
{
struct STUDENT *p,*q,*m;
int num;
printf("请输入插入位置上的学生的学号:");
scanf("%d",&num);
p=Head;
q=Head;
m=(struct STUDENT *)malloc(sizeof(struct STUDENT));
printf("请输入新增学生的学号、姓名、成绩、性别:");
scanf("%d%s%d%c",&m->num,m->name,&m->score,&m->sex);
m->next=NULL;
while(p)
{
if(p->num==num)
{
if(p==Head)
{
m->next=Head;
Head=m;
}
else
{
q->next=m;
m->next=p;
}
return;
}
else
{
if(p!=Head) q=p;
p=p->next;
}
}
}
void editClass()
{
struct STUDENT *p;
p=Head;
int num;
printf("请输入要修改的学生的学号:");
scanf("%d",&num);
while(p)
{
if(p->num==num)
{
printf("请输入新学生的姓名、成绩、性别:");
scanf("%s%d%c",p->name,&p->score,&p->sex);
return;
}
p=p->next;
}
if(p==NULL)
printf("要修改的学生不存在!");
}
void deleteClass()
{
struct STUDENT *p,*q;
int num;
printf("请输入要删除的学生的学号:");
scanf("%d",&num);
if(Head==NULL)
{
printf("该班级为空!\n");
}
q=Head;
while(num!=q->num&&q->next!=NULL)
{
p=q;
q=q->next;
}
if(num==q->num)
{
if(q==Head)
Head=q->next;
else
p->next=q->next;
free(q);
}
else
printf("要删除的学生不存在!\n");
}
void queryClass()
{
int x;
struct STUDENT *p;
p=Head;
printf("请输入需要查找的学生的学号:");
scanf("%d",&x);
while(p)
{
if(p->num==x)
{
printf("你要找的学生信息如下:\n");
printf("学号 姓名 成绩 性别:\n");
printf("%-6d%-6s%-6d%c\n",p->num,p->name,p->score,p->sex);
break;
}
p=p->next;
}
if(p==NULL) printf("查无此人!");
}
void savestuInfo()
{
FILE *fp;
struct STUDENT *p=Head;
if((fp=fopen("Class.txt","w"))==NULL)
{
printf("文件打开失败!");
return;
}
if(count)
{
fprintf(fp,"%d\n",count);
while(p)
{
fprintf(fp,"%d %s %d%c\n",p->num,p->name,p->score,p->sex);
p=p->next;
}
}
else
{
printf("该班级目前没人!");
}
if(fclose(fp))
{
printf("文件关闭失败!");
}
}
void loadstuInfo()
{
int i;
FILE *fp;
struct STUDENT *p,*q;
if((fp=fopen("Class.txt","r"))==NULL)
{
printf("文件打开失败!");
return;
}
p=Head;
while(p)
{
q=p->next;
free(p);
p=q;
}
fscanf(fp,"%d",&count);
for(i=0;i<count;i++)
{
p=(struct STUDENT *)malloc(sizeof(struct STUDENT));
fscanf(fp,"%d %s %d%c\n",&p->num,p->name,&p->score,&p->sex);
p->next=NULL;
if(i==0)
Head=p;
else
{
q->next=p;
}
q=p;
}
if(fclose(fp))
{
printf("文件关闭失败!");
}
}
void showMenu()
{
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");
}
展开阅读全文