c语言学生成绩管理系统总结

c语言学生成绩管理系统总结一、系统功能1.基本功能1.录入信息2.按照学号查找信息3.按照学号修改信息4.按照学号删除信息5.插入信息6.浏览全部信息7.按c语言成绩排序8.保存到文件2.结构体typedefstructstudent{ charnum[20];//学号 charname[10];//姓名 charsex[10];//性别 charduty[10];//专业 inteng;//英语成绩 intmath;

大家好,又见面了,我是你们的朋友全栈君。

c语言的大作业,主要功能是录入、修改、删除、插入、排序等,可能有些地方仍然有点bug。

一、系统功能
1.基本功能

1.录入信息
2.按照学号查找信息
3.按照学号修改信息
4.按照学号删除信息
5.插入信息
6.浏览全部信息
7.按c语言成绩排序
8.保存到文件

2.结构体
只写了几个基础的,学号刚开始写的int型的,但后来不知道怎么去查重等,改成了char型。

typedef struct student
{ 
   
	char num[20];     //学号
	char name[10];    //姓名
	char sex[10];     //性别
	char duty[10];    //专业
	int eng;          //英语成绩
	int math;         //数学成绩
	int c;            //c语言成绩
	struct student *next;next是指针变量,指向结构体变量 
}stu;

3.main函数

int main()
{ 

system("color 3F");//背景颜色
stu *head=(stu *)malloc(sizeof(stu));
head->next=NULL;//使head中的next部分为空
while(1)
{ 

printf("\t\t\t\t**********新生管理系统************\n");
printf("\t\t\t\t请选择你的操作\n");
printf("\t\t\t\t1.录入信息\n");
printf("\t\t\t\t2.按照学号查找信息\n");
printf("\t\t\t\t3.按照学号修改信息\n");
printf("\t\t\t\t4.按照学号删除信息\n");
printf("\t\t\t\t5.插入信息\n");
printf("\t\t\t\t6.浏览全部信息\n");
printf("\t\t\t\t7.按c语言成绩排序\n");
printf("\t\t\t\t8.保存到文件\n");
printf("\t\t\t\t0.退出\n");
printf("\t\t\t\t**********************************\n");
printf("\t\t\t\t请按键选择操作:\n");
fflush(stdin);//清除多余的未被保存的数据,防止乱码
int c;
scanf("%d",&c);
switch(c)//用switch语句进行选择和调用函数
{ 

case 1:
input(head);
break;
case 2:
seek(head);
break; 
case 3:
revise(head);
break;
case 4:
del(head);
break; 
case 5:
add(head); 
break;
case 6:
traver(head);
break; 
case 7:
sort(head); 
break;
case 8:
save(head);
break;
case 0:
return 0; 
default:
printf("输入错误!\n"); 
}
} 
} 

while循环在外,系统程序能够持续运行,switch判断语句进行功能选择与函数切换。

color[attr]
attr        指定控制台输出的颜色属性。
颜色属性由两个十六进制数字指定
第一个对应于背景,第二个对应于前景:
0 = 黑色              8 = 灰色
1 = 蓝色              9 = 淡蓝色
2 = 绿色              A = 淡绿色
3 = 浅绿色            B = 淡浅绿色
4 = 红色              C = 淡红色
5 = 紫色              D = 淡紫色
6 = 黄色              E = 淡黄色
7 = 白色              F = 亮白色

二、录入学生信息
在第一次验课设的时候,只简单地写了录入,没有写查重以及格式等的限制。在最后一次验的时候,学号查重依然有问题,遍历时应注意不能直接动头指针p,使q2=p,用q2实现遍历。

void input(stu *p)//录入 
{ 

int n,x;
system("cls");   //清屏函数
stu *q1,*q2;     //定义该结构体类型q1,q2指针
q1=p;
printf("请输入要录入的学生人数:");
scanf("%d",&n); 
while(n--)  //while循环n次,n个要录入的学生
{ 

stu *q=(stu *)malloc(sizeof(stu)); //给q分配内存
int i=1; //定义i循环三次使学号只能输入数字
int flag=1,flag1=1,flag2=1,flag3=1,flag4=1; 
loop1:while(flag)
{ 

printf("请输入学号(三位):");
scanf("%s",q->num);
if(strlen(q->num)!=3)//用strlen函数计算字符串长度使学号为三位数
{ 

printf("学号格式输入错误!\n");
fflush(stdin);//清除多余的未被保存的数据,防止乱码
continue;
}
q2=p; //头指针赋给q2
while(q2)
{ 

if(strcmp(q->num,q2->num)==0)//用strcmp函数,q2遍历查重
{ 

printf("输入的学号重复,请重新输入!\n");
goto loop1;//重复重新跳到上一个while循环
}
q2=q2->next;
}
while(i<3)
{ 

if(q->num[i]-'0'<0 || q->num[i]-'0'>9)//让学号只能输入数字
{ 

printf("学号格式输入错误!\n"); 
break;
}
else{ 

i++;
if (i==3)
flag=0;
}
}
}
printf("请输入学生姓名:");
scanf("%s",q->name);
while(flag1)
{ 
	
printf("请输入性别(w/m):");
scanf("%s",q->sex);
if(strcmp(q->sex,"w")==0)//用strcmp函数限制输入的字符,只能输入w/m
flag1=0;//跳出循环
else if(strcmp(q->sex,"m")==0)
flag1=0;//跳出循环
else
{ 

printf("性别格式输入错误!(请输入w/m)\n");
}
}
printf("请输入专业:");
scanf("%s",q->duty);
while (flag2)
{ 

printf("请输入英语成绩(0<=eng<=150):");
x=scanf("%d",&q->eng); //如果输入数字x=1
if(q->eng >= 0 && q->eng <= 150 && x==1 )//限制成绩范围
flag2=0;//跳出循环
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);//清理未被保存的数据
}
}
while(flag3)
{ 

printf("请输入数学成绩(0<=math<=150):");
x=scanf("%d",&q->math);
if(q->math>=0 && q->math<=150 && x==1)
flag3=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
flag3=1;
}
} 
while(flag4){ 

printf("请输入c语言成绩(0<=c<=150):");
x=scanf("%d",&q->c);
if(q->c>=0 && q->c<=150 && x==1)
flag4=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
flag4=1;
}
}
printf("录入成功!\n"); 
q->next=NULL; //使q中的next定义为空
q1->next=q;
q1=q;
}
}

三、查找学生信息

void seek(stu *p)//查找 
{ 

stu *q=p->next; 
char num[20];
int flag = 0;
system("cls"); 	//清屏函数
printf("请输入查找学生的学号:");
scanf("%s",num);
while(q!=NULL)
{ 
 
if(strcmp(q->num,num) == 0)//strcmp函数查找学生学号
{ 

printf("学生学号:%s\n",q->num);
printf("学生姓名:%s\n",q->name);
printf("学生性别:%s\n",q->sex);
printf("专业:%s\n",q->duty);
printf("英语成绩:%d\n",q->eng);
printf("数学成绩:%d\n",q->math);
printf("c语言成绩:%d\n",q->c);
flag = 1;
break;
}
q=q->next;//遍历
}
if(flag == 0)
{ 

printf("查无此人\n");
}
}

四、按照学号修改学生信息
在录入函数源代码的基础上写了修改功能。

void revise(stu *p)//修改
{ 

stu *q=p->next;
stu *q1,*q2; 
int x;
char num[200];
system("cls"); 	
printf("请输入要修改的学号:");
scanf("%s",num);
while(q!=NULL)
{ 

if(strcmp(q->num,num) == 0)
{ 

int i=1;
int flag=1,flag1=1,flag2=1,flag3=1,flag4=1;
loop1:while(flag)
{ 

printf("请输入学号(三位):");
scanf("%s",q->num);
if(strlen(q->num)!=3){ 

printf("学号格式输入错误!\n");
fflush(stdin);
continue;
}
q2=p;
while(q2)
{ 

if(strcmp(q->num,q2->num)==0)
{ 

printf("输入的学号重复,请重新输入!\n");
goto loop1;
}
else{ 

break;
}
q2=q2->next; 
}
while(i<3)
{ 

if(q->num[i]-'0'<0 || q->num[i]-'0'>9){ 

printf("学号格式输入错误!\n"); 
break;
}
else{ 

i++;
if (i==3)
flag=0;
}
}
}
printf("请输入学生姓名:");
scanf("%s",q->name);
while(flag1)
{ 
	
printf("请输入性别(w/m):");
scanf("%s",q->sex);
if(strcmp(q->sex,"w")==0)
flag1=0;
else if(strcmp(q->sex,"m")==0)
flag1=0;
else
{ 

printf("性别格式输入错误!(请输入w/m)\n");
}
}
printf("请输入专业:");
scanf("%s",q->duty);
while (flag2)
{ 

printf("请输入英语成绩(0<=eng<=150):");
x=scanf("%d",&q->eng);
if(q->eng >= 0 && q->eng <= 150 && x==1 )
flag2=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
}
}
while(flag3)
{ 

printf("请输入数学成绩(0<=math<=150):");
x=scanf("%d",&q->math);
if(q->math>=0 && q->math<=150 && x==1)
flag3=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
flag3=1;
}
} 
while(flag4){ 

printf("请输入c语言成绩(0<=c<=150):");
x=scanf("%d",&q->c);
if(q->c>=0 && q->c<=150 && x==1)
flag4=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
flag4=1;
}
}
printf("修改成功!\n");
return; 
}
q=q->next;
q2->next=q;
q2=q;
} 
printf("查无此人");
}

五、按照学号删除信息
注意while(!strcmp(q2->num,num)),刚开始写时while(strcmp(q2->num,num))一直删除不成功,当q2->num和num相等时为0,while循环无法进行。

void del(stu *p)//删除
{ 

stu *q1,*q2;//定义该结构体类型q1,q2指针
q1=p; //q1头结点,p头指针
q2=q1->next;
char num[200];
system("cls"); 	
printf("请输入想要删除的学号:");
scanf("%s",num);
while(q2!=0)
{ 

while(!strcmp(q2->num,num))
{ 

q1->next=q2->next;
free(q2);//释放q2
q2=NULL;
printf("删除成功\n");
return;
}
q1=q2;
q2=q2->next;
}
} 

六、插入信息(头插法)
插入部分也是结合的头插法和录入函数

void add(stu *p) //插入 
{ 

int n,x;
int i=1;
int flag=1,flag1=1,flag2=1,flag3=1,flag4=1;
stu *q,*q1,*q2;//不用像尾插法一样生成一个终端结点
q=(stu*)malloc(sizeof(stu));//给q分配内存
q1=(stu*)malloc(sizeof(stu));//给q1分配内存
q = p;//q为头结点
if(q1==NULL)
{ 

printf("插入失败\n");
exit(1);
}
for(int a=0;a<n;a++);
{ 

loop1:while(flag)
{ 

printf("请输入学号(三位):");
scanf("%s",q1->num);
if(strlen(q1->num)!=3){ 

printf("学号格式输入错误!\n");
fflush(stdin);
continue;
}
q2=p;
while(q2)
{ 

if(strcmp(q1->num,q2->num)==0)
{ 

printf("输入的学号重复,请重新输入!\n");
goto loop1;
}
q2=q2->next;
}
while(i<3)
{ 

if(q1->num[i]-'0'<0 || q1->num[i]-'0'>9){ 

printf("学号格式输入错误!\n"); 
break;
}
else{ 

i++;
if (i==3)
flag=0;
}
}
}
printf("请输入学生姓名:");
scanf("%s",q1->name);
while(flag1)
{ 
	
printf("请输入性别(w/m):");
scanf("%s",q1->sex);
if(strcmp(q1->sex,"w")==0)
flag1=0;
else if(strcmp(q1->sex,"m")==0)
flag1=0;
else
{ 

printf("性别格式输入错误!(请输入w/m)\n");
}
}
printf("请输入专业:");
scanf("%s",q1->duty);
while (flag2)
{ 

printf("请输入英语成绩(0<=eng<=150):");
x=scanf("%d",&q1->eng);
if(q1->eng >= 0 && q1->eng <= 150 &&x==1 )
flag2=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
}
}
while(flag3)
{ 

printf("请输入数学成绩(0<=math<=150):");
x=scanf("%d",&q1->math);
if(q1->math>=0 && q1->math<=150 && x==1)
flag3=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
flag3=1;
}
} 
while(flag4){ 

printf("请输入c语言成绩(0<=c<=150):");
x=scanf("%d",&q1->c);
if(q1->c>=0 && q1->c<=150 && x==1)
flag4=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
flag4=1;
}
}
q1->next=p->next;将p指向的地址赋值给q1;
p->next=q1;头指针的指针域next指向q1节点,使得q1成为开始节点
q1=q1->next;
printf("插入成功!\n");
}
} 

在这里插入图片描述

七、浏览全部信息

void traver(stu *p) //遍历输出
{ 
	
stu *q = p->next ;//使p的next给q
system("cls"); 	//清屏
while(q!=NULL)
{ 

printf("学号:%s\n姓名:%s\n性别:%s\n专业:%s\n英语成绩:%d\n数学成绩:%d\nc语言成绩:%d\n",q->num,q->name,q->sex,q->duty,q->eng,q->math,q->c);
q=q->next;
}
}

八、按c语言成绩排序(降序)

void sort(stu *p)//排序 (c语言成绩) 
{ 
							
stu *q=NULL;
system("cls"); 							
while(q!=p->next) //q不等于头指针是一次循环
{ 

stu *pre=p;
stu *cur=pre->next;
while(cur!=q&&cur->next !=q) 
{ 

if(cur->c<cur->next->c )
{ 

pre->next =cur->next;
cur->next =cur->next->next;
pre->next->next =cur;
}
pre=pre->next;
cur=pre->next;
}
q=cur;
}
traver(p);//调用traver函数输出结果
}

九、保存文件

void save(stu *p)//文件 
{ 

FILE*fp = fopen("学生信息.txt","w");//创建文件指针
if(fp!=NULL)
{ 

while(p->next!=NULL)
{ 
  
fprintf(fp,"学号:%s\n",p->next->num);
fprintf(fp,"姓名:%s\n",p->next->name);
fprintf(fp,"性别:%s\n",p->next->sex);
fprintf(fp,"专业:%s\n",p->next->duty);
fprintf(fp,"英语成绩:%d\n",p->next->eng);
fprintf(fp,"数学成绩:%d\n",p->next->math);
fprintf(fp,"c语言成绩:%d\n",p->next->c);
fprintf(fp,"---------------------------\n");
p=p->next;
}
printf("保存成功!\n");
}
fclose(fp);
}

全部代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct student
{ 

char num[20];
char name[10];
char sex[10];
char duty[10];
int eng;
int math;
int c; 
struct student *next;
}stu;
void input(stu *p)//录入 
{ 

int n,x;
system("cls");
stu *q1,*q2;
q1=p;
printf("请输入要录入的学生人数:");
scanf("%d",&n); 
while(n--)
{ 

stu *q=(stu *)malloc(sizeof(stu));
int i=1;
int flag=1,flag1=1,flag2=1,flag3=1,flag4=1;
loop1:while(flag)
{ 

printf("请输入学号(三位):");
scanf("%s",q->num);
if(strlen(q->num)!=3){ 

printf("学号格式输入错误!\n");
fflush(stdin);
continue;
}
q2=p;
while(q2)
{ 

if(strcmp(q->num,q2->num)==0)
{ 

printf("输入的学号重复,请重新输入!\n");
goto loop1;
}
q2=q2->next;
}
while(i<3)
{ 

if(q->num[i]-'0'<0 || q->num[i]-'0'>9){ 

printf("学号格式输入错误!\n"); 
break;
}
else{ 

i++;
if (i==3)
flag=0;
}
}
}
printf("请输入学生姓名:");
scanf("%s",q->name);
while(flag1)
{ 
	
printf("请输入性别(w/m):");
scanf("%s",q->sex);
if(strcmp(q->sex,"w")==0)
flag1=0;
else if(strcmp(q->sex,"m")==0)
flag1=0;
else
{ 

printf("性别格式输入错误!(请输入w/m)\n");
}
}
printf("请输入专业:");
scanf("%s",q->duty);
while (flag2)
{ 

printf("请输入英语成绩(0<=eng<=150):");
x=scanf("%d",&q->eng);
if(q->eng >= 0 && q->eng <= 150 && x==1 )
flag2=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
}
}
while(flag3)
{ 

printf("请输入数学成绩(0<=math<=150):");
x=scanf("%d",&q->math);
if(q->math>=0 && q->math<=150 && x==1)
flag3=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
flag3=1;
}
} 
while(flag4){ 

printf("请输入c语言成绩(0<=c<=150):");
x=scanf("%d",&q->c);
if(q->c>=0 && q->c<=150 && x==1)
flag4=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
flag4=1;
}
}
printf("录入成功!\n"); 
q->next=NULL;
q1->next=q;
q1=q;
}
}
void traver(stu *p) //遍历输出
{ 
	
stu *q = p->next ;
system("cls"); 	
while(q!=NULL)
{ 

printf("学号:%s\n姓名:%s\n性别:%s\n专业:%s\n英语成绩:%d\n数学成绩:%d\nc语言成绩:%d\n",q->num,q->name,q->sex,q->duty,q->eng,q->math,q->c);
q=q->next;
}
}
void add(stu *p) //插入 
{ 

int n,x;
int i=1;
int flag=1,flag1=1,flag2=1,flag3=1,flag4=1;
stu *q,*q1,*q2;
q=(stu*)malloc(sizeof(stu));
q1=(stu*)malloc(sizeof(stu));
q = p;
if(q1==NULL)
{ 

printf("插入失败\n");
exit(1);
}
for(int a=0;a<n;a++);
{ 

loop1:while(flag)
{ 

printf("请输入学号(三位):");
scanf("%s",q1->num);
if(strlen(q1->num)!=3){ 

printf("学号格式输入错误!\n");
fflush(stdin);
continue;
}
q2=p;
while(q2)
{ 

if(strcmp(q1->num,q2->num)==0)
{ 

printf("输入的学号重复,请重新输入!\n");
goto loop1;
}
q2=q2->next;
}
while(i<3)
{ 

if(q1->num[i]-'0'<0 || q1->num[i]-'0'>9){ 

printf("学号格式输入错误!\n"); 
break;
}
else{ 

i++;
if (i==3)
flag=0;
}
}
}
printf("请输入学生姓名:");
scanf("%s",q1->name);
while(flag1)
{ 
	
printf("请输入性别(w/m):");
scanf("%s",q1->sex);
if(strcmp(q1->sex,"w")==0)
flag1=0;
else if(strcmp(q1->sex,"m")==0)
flag1=0;
else
{ 

printf("性别格式输入错误!(请输入w/m)\n");
}
}
printf("请输入专业:");
scanf("%s",q1->duty);
while (flag2)
{ 

printf("请输入英语成绩(0<=eng<=150):");
x=scanf("%d",&q1->eng);
if(q1->eng >= 0 && q1->eng <= 150 &&x==1 )
flag2=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
}
}
while(flag3)
{ 

printf("请输入数学成绩(0<=math<=150):");
x=scanf("%d",&q1->math);
if(q1->math>=0 && q1->math<=150 && x==1)
flag3=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
flag3=1;
}
} 
while(flag4){ 

printf("请输入c语言成绩(0<=c<=150):");
x=scanf("%d",&q1->c);
if(q1->c>=0 && q1->c<=150 && x==1)
flag4=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
flag4=1;
}
}
q1->next=p->next;
p->next=q1;
q1=q1->next;
printf("插入成功!\n");
}
} 
void seek(stu *p)//查找 
{ 

stu *q=p->next;
char num[20];
int flag = 0;
system("cls"); 	
printf("请输入查找学生的学号:");
scanf("%s",num);
while(q!=NULL)
{ 
 
if(strcmp(q->num,num) == 0)
{ 

printf("学生学号:%s\n",q->num);
printf("学生姓名:%s\n",q->name);
printf("学生性别:%s\n",q->sex);
printf("专业:%s\n",q->duty);
printf("英语成绩:%d\n",q->eng);
printf("数学成绩:%d\n",q->math);
printf("c语言成绩:%d\n",q->c);
flag = 1;
break;
}
q=q->next;
}
if(flag == 0)
{ 

printf("查无此人\n");
}
}
void revise(stu *p)//修改
{ 

stu *q=p->next;
stu *q1,*q2; 
int x;
char num[200];
system("cls"); 	
printf("请输入要修改的学号:");
scanf("%s",num);
while(q!=NULL)
{ 

if(strcmp(q->num,num) == 0)
{ 

int i=1;
int flag=1,flag1=1,flag2=1,flag3=1,flag4=1;
loop1:while(flag)
{ 

printf("请输入学号(三位):");
scanf("%s",q->num);
if(strlen(q->num)!=3){ 

printf("学号格式输入错误!\n");
fflush(stdin);
continue;
}
q2=p;
while(q2)
{ 

if(strcmp(q->num,q2->num)==0)
{ 

printf("输入的学号重复,请重新输入!\n");
goto loop1;
}
else{ 

break;
}
q2=q2->next; 
}
while(i<3)
{ 

if(q->num[i]-'0'<0 || q->num[i]-'0'>9){ 

printf("学号格式输入错误!\n"); 
break;
}
else{ 

i++;
if (i==3)
flag=0;
}
}
}
printf("请输入学生姓名:");
scanf("%s",q->name);
while(flag1)
{ 
	
printf("请输入性别(w/m):");
scanf("%s",q->sex);
if(strcmp(q->sex,"w")==0)
flag1=0;
else if(strcmp(q->sex,"m")==0)
flag1=0;
else
{ 

printf("性别格式输入错误!(请输入w/m)\n");
}
}
printf("请输入专业:");
scanf("%s",q->duty);
while (flag2)
{ 

printf("请输入英语成绩(0<=eng<=150):");
x=scanf("%d",&q->eng);
if(q->eng >= 0 && q->eng <= 150 && x==1 )
flag2=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
}
}
while(flag3)
{ 

printf("请输入数学成绩(0<=math<=150):");
x=scanf("%d",&q->math);
if(q->math>=0 && q->math<=150 && x==1)
flag3=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
flag3=1;
}
} 
while(flag4){ 

printf("请输入c语言成绩(0<=c<=150):");
x=scanf("%d",&q->c);
if(q->c>=0 && q->c<=150 && x==1)
flag4=0;
else{ 

printf("成绩格式输入错误!\n");
fflush(stdin);
flag4=1;
}
}
printf("修改成功!\n");
return; 
}
q=q->next;
q2->next=q;
q2=q;
} 
printf("查无此人");
}
void del(stu *p)//删除
{ 

stu *q1,*q2;
q1=p;
q2=q1->next;
char num[200];
system("cls"); 	
printf("请输入想要删除的学号:");
scanf("%s",num);
while(q2!=0)
{ 

while(!strcmp(q2->num,num))
{ 

q1->next=q2->next;
free(q2);
q2=NULL;
printf("删除成功\n");
return;
}
q1=q2;
q2=q2->next;
}
} 
void sort(stu *p)//排序 (c语言成绩) 
{ 
							
stu *q=NULL;
system("cls"); 							
while(q!=p->next) 
{ 

stu *pre=p;
stu *cur=pre->next;
while(cur!=q&&cur->next !=q) 
{ 

if(cur->c<cur->next->c )
{ 

pre->next =cur->next;
cur->next =cur->next->next;
pre->next->next =cur;
}
pre=pre->next;
cur=pre->next;
}
q=cur;
}
traver(p);
}
void save(stu *p)//文件 
{ 

FILE*fp = fopen("学生信息.txt","w");
if(fp!=NULL)
{ 

while(p->next!=NULL)
{ 
  
fprintf(fp,"学号:%s\n",p->next->num);
fprintf(fp,"姓名:%s\n",p->next->name);
fprintf(fp,"性别:%s\n",p->next->sex);
fprintf(fp,"专业:%s\n",p->next->duty);
fprintf(fp,"英语成绩:%d\n",p->next->eng);
fprintf(fp,"数学成绩:%d\n",p->next->math);
fprintf(fp,"c语言成绩:%d\n",p->next->c);
fprintf(fp,"---------------------------\n");
p=p->next;
}
printf("保存成功!\n");
}
fclose(fp);
}
int main()
{ 

system("color 3F");
stu *head=(stu *)malloc(sizeof(stu));
head->next=NULL;
while(1)
{ 

printf("\t\t\t\t**********新生管理系统************\n");
printf("\t\t\t\t请选择你的操作\n");
printf("\t\t\t\t1.录入信息\n");
printf("\t\t\t\t2.按照学号查找信息\n");
printf("\t\t\t\t3.按照学号修改信息\n");
printf("\t\t\t\t4.按照学号删除信息\n");
printf("\t\t\t\t5.插入信息\n");
printf("\t\t\t\t6.浏览全部信息\n");
printf("\t\t\t\t7.按c语言成绩排序\n");
printf("\t\t\t\t8.保存到文件\n");
printf("\t\t\t\t0.退出\n");
printf("\t\t\t\t**********************************\n");
printf("\t\t\t\t请按键选择操作:\n");
fflush(stdin);
int c;
scanf("%d",&c);
switch(c)
{ 

case 1:
input(head);
break;
case 2:
seek(head);
break; 
case 3:
revise(head);
break;
case 4:
del(head);
break; 
case 5:
add(head); 
break;
case 6:
traver(head);
break; 
case 7:
sort(head); 
break;
case 8:
save(head);
break;
case 0:
return 0; 
default:
printf("输入错误!\n"); 
}
} 
} 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151598.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 特立独行的理解_幸福在一起第14集

    特立独行的理解_幸福在一起第14集原题链接对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数。1 是一个幸福数。此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68,3 次迭代后得到 100,最后得到 1。则 19 就是幸福数。显然,在一个幸福数迭代到 1 的过程中经过的数字都是幸福数,它们的幸福是依附于初始数字的。例如 82、68、100 的幸福是依附于 19 的。而一个特立独行的幸福数,是在一个有限的区间内不依附于任何其它数字的;其独立性就是依附于它的的幸福数

  • Java递归详解_java难不难学

    Java递归详解_java难不难学学习目标:提示:这里可以添加学习目标例如:一周掌握Java入门知识学习内容:提示:这里可以添加要学的内容例如:1、搭建Java开发环境2、掌握Java基本语法3、掌握条件语句4、掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、周一至周五晚上7点—晚上9点2、周六上午9点-上午11点3、周日下午3点-下午6点学习产出:提示:这里统计学习计划的总量例如:1、技术笔记2遍2、CSDN技术博客3篇

  • Visual Studio中C++关于Unicode字符集和多字节字符集

    Visual Studio中C++关于Unicode字符集和多字节字符集1.Unicode字符集  原本标准字符集为8位的ASCII码,但世界上的书写语言不能简单地用256个8位代码即一字节表示,就试更宽的值,例如16位值。这就是Unicode非常简单的原理。与混乱的256字符代码映射,以及含有一些单字节代码和一些双字节代码的双字节字符集不同,Unicode是统一的16位系统,这样就允许表示65536个字符。在这里会高兴地告诉你前128个Unicode字符(1

    2022年10月26日
  • java基本变量和引用变量_引用类型与值类型的区别

    java基本变量和引用变量_引用类型与值类型的区别Java中数据类型分为两大类:基本数据类型与复合数据类型。相应地,变量也有两种类型:基本类型与引用类型。Java的8中基本类型的变量称为基本类型变量,而类、接口和数组变量时引用类型变量。这两种类型变量的结构和含义不同,系统对他们的处理也不相同。1.基本类型与引用类型变量*基本类型(primitivetype)基本数据类型的变量包含了单个值,这个值的长度和格式符合变量所属数据类型的要求,可以是一个…

    2022年10月21日
  • Apple Watch更懂女人心

    Apple Watch更懂女人心

  • pytest重试_连接重连失败是什么意思

    pytest重试_连接重连失败是什么意思安装:pip3installpytest-rerunfailures重新运行所有失败用例要重新运行所有测试失败的用例,请使用–reruns命令行选项,并指定要运行测试的最大次数:$py

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号