学生信息管理系统c语言(用C语言编程学生信息管理系统!)

:暂无数据 2026-10-14 20:20:09 :0

学生信息管理系统c语言(用C语言编程学生信息管理系统!)

今天给各位分享用C语言编程学生信息管理系统!的知识,其中也会对用C语言编程学生信息管理系统!进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录

用C语言编程学生信息管理系统!

/*【学生管理系统】*/
//modify
#include《stdio.h》
#include《string.h》
#include《conio.h》
#include《stdlib.h》
#include《time.h》
#define N 100
typedef struct student
{
int num; //学号,姓名,年龄,性别,出生年月,地址,电话,
char name;
char sex;
int age;
int y,m;
int tel;
char add;
char mail;
int res;
int stu;
} SDate;
int PassWord();
void Menu();
int Input_Choice(); //函数声明
void Info_Paixu(SDate *student,int n);
void Info_print(SDate *stu,int n);
int Input_file(SDate *stu1);
int Info_Input(SDate *stu,int count);
void Info_Seach(SDate *stu,int n);
void Info_Change(SDate *stu,int n,int Num);
void Exit();
void Print_file(SDate *stu,int n);
int Info_Del(SDate *stu, int n, int del);
void Info_Change(SDate *stu, int res, int choice);
int Info_Add(SDate *stu, int count);
int main()
{
SDate stu;
int ret=0,res=0,choice=0;
char ch;
loop:
ret=PassWord(); //登录函数 默认密码为admin
if(!ret)
{
system("cls");
printf("\n\t\t密码错误或验证码错误!\n"); //默认密码:admin
system("pause");
system("cls");
goto loop;
}
system("cls");
e:
Menu(); //菜单显示函数
printf("你的选择是?\n");
scanf("%d",&ret);
switch(ret)
{
case 1:
choice=Input_Choice(); //InputChoice()数据输入方式选择函数
if(choice==1)
res=Info_Input(stu,res); //键盘输入函数
else if(choice==2)
res=Input_file(stu); //文件读取函数
else
{
system("cls");
goto e;
}
break;
case 2:
if(res==0)
{
system("cls");
printf("没有数据输入,请重新选择!\n");
goto e;
}
else
Info_print(stu,res);
break;
case 3:
if(res==0||res==1)
{
system("cls");
printf("没有需要排序数据,请重新选择!\n");
goto e;
}
else
Info_Paixu(stu,res);
break;
case 4:
Info_Seach(stu,res);
break;
case 5:
res=Info_Add(stu,res);
break;
case 6:
Info_print(stu,res);
printf("输入学号进行删除:");
scanf("%d",&choice);
res=Info_Del(stu, res, choice);
break;
case 7:
printf("请输入需要修改的学号:");
scanf("%d",&choice);
Info_Change(stu,res,choice);
break;
case 8:
Print_file(stu, res);
break;
case 9:
Exit();
break;
default :
printf("您的选泽有误!\n");
}
getchar();
printf("返回主菜单重新选择y/n?");
scanf("%c",&ch);
if(ch==’Y’||ch==’y’)
{
system("cls");
goto e;
}
return 0;
}
int yanzheng() //验证码模块
{
int a,b,c,d;
srand((unsigned)time(NULL));
a=rand()%100;
b=rand()%100;
c=a+b;
printf("\n\t **************************\n");
printf("\t\t验证码: %d+%d=?\n",a,b);
printf("\t\t 答案为:");
scanf("%d",&d);
if(c==d)
return 1;
else
return 0;
}
int PassWord() //登录模块
{
int i=0;
char passWord;
char p="admin"; //默认密码设置
char ch;
printf("\t 欢迎使用学生信息管理系统\n");
printf("\n");
printf("\t\t用户名:Admin\n");
printf("\n");
printf("\t\t密码:");
while((ch=getch())!=13)
{
putchar(’*’);
passWord=ch;
i++;
}
passWord=’\0’;
if(strcmp(p,passWord)==0)
yanzheng();
else
return 0;
}
void Menu() //菜单模块
{
printf("\t 欢迎使用学生信息管理系统\n");
printf("\n*******************************************\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\t6、学生信息删除\t\t **\n");
printf("** \t\t7、学生信息修改\t\t **\n");
printf("** \t\t8、学生信息保存\t\t **\n");
printf("**\t\t9、退出\t\t\t **\n");
printf("*******************************************\n");
}
int Input_Choice() //数据输入方式选择
{
int i;
system("cls");
printf("\t 欢迎使用学生信息管理系统\n");
printf("\t\t1、键盘录入\n");
printf("\t\t2、文件读取\n");
printf("\t\t0、返回\n");
printf("\t你的选择是?");
scanf("%d",&i);
return i;
}
int Info_Input(SDate *stu,int count) //信息从键盘输入模块
{
SDate *p;
p=stu;
system("cls");
printf("请输入第%d个学生学号(输入0结束):\n",count+1);
scanf("%d",&p-》num);
while(p-》num!=0)
{
printf("请输入该学生姓名:\n");
scanf("%s",p-》name);
printf("请输入该学生年龄:\n");
scanf("%d",&p-》age);
getchar();
printf("请输入该学生性别:\n");
scanf("%c",&p-》sex);
printf("请输入该学生出生年月:\n");
scanf("%d%d",&p-》y,&p-》m);
printf("请输入该学生住址:\n");
scanf("%s",p-》add);
printf("请输入该学生联系电话:\n");
scanf("%d",&p-》tel);
printf("请输入该学生E-Mail:\n");
scanf("%s",p-》mail);
count++;
p++;
system("cls");
printf("请输入第%d个学生学号(输入0结束):\n",count);
scanf("%d",&p-》num);
}
return count;
}
int Input_file(SDate *stu1) //信息从文件输入模块
{
int rin=0;
SDate *p;
FILE *fp;
p=stu1;

if((fp=fopen("StuInfo.txt","r"))==NULL)
printf("该文件不存在!\n");
while(!feof(fp))
{
fscanf(fp,"%d %s %c %d %d %d %d %s %s\n",&p-》num,p-》name,&p-》sex,&p-》age,&p-》y,&p-》m,&p-》tel,p-》add,p-》mail);
p++;
rin++;
}
fclose(fp);
printf("文件读取成功!\n");
return rin;
}
void Info_print(SDate *stu,int n) //信息输出至屏幕模块
{
SDate *p;
if(n==0) //学号,姓名,年龄,性别,出生年月,地址,电话,
printf("没有录入信息!\n");
else
{
printf("\n以下是%d个同学的信息\n",n);
printf("学号 姓名 性别 年龄 出生年月 电话 地址 E-Mail\n");
for(p=stu; p《stu+n; p++)
printf("%d %s %c %d %d-%d %d %s %s\n",p-》num,p-》name,p-》sex,p-》age,p-》y,p-》m,p-》tel,p-》add,p-》mail);
}
}
void Print_file(SDate *stu,int n) //信息保存至文件模块
{
FILE *fp;
SDate *p;
p=stu;
if((fp=fopen("StuInfo.txt","a"))==NULL)
printf("文件读取失败!\n");
else
{
for(; p《stu+n; p++)
fprintf(fp,"%d %s %c %d %d %d %d %s %s\n",p-》num,p-》name,p-》sex,p-》age,p-》y,p-》m,p-》tel,p-》add,p-》mail);
fclose(fp);
printf("\n保存成功!\n");
}
}
void Info_Paixu(SDate *stu,int n) //学号排序模块
{
int i,j;
SDate p;
for(i=0; i《n-1; i++)
{
for(j=0; j《n-1-i; j++)
{
if((stu.num))
{
p=stu;
stu;
stu=p;
}
}
}
printf("排序完成!\n");
}
void Exit() //退出模块
{
printf("谢谢使用!\n");
exit(1);
}
void Info_Seach(SDate *stu,int n) //查询模块,目前仅支持学号或姓名的精准查询
{
int num,choice;
char name;
int flag=-1,i;
system("cls");
printf("请输入查询方式:\t1、学号查询\n\t \t2、名字查询\n");
printf("您的选择是?");
scanf("%d",&choice);
if(choice==1)
{
lab1:
printf("请输入需要查找的学号:\n");
scanf("%d",#);
for(i=0; i《n; i++)
{
if(num==stu.num)
{
flag=i;
printf("%d %s %c %d %d-%d %d %s %s\n",stu.mail);
}
}
if(flag==-1)
{
printf("未找到!请重新选择\n");
printf("1、返回继续查询\n2、退出查询,返回主菜单\n3、退出程序你的选择是?");
scanf("%d",&choice);
if(choice==1)
{
system("cls");
goto lab1;
}
if(choice==2)
goto end;
else
Exit();
}
}
else if(choice==2)
{
lab2:
printf("请输入需要查找的姓名:\n");
scanf("%s",name);
for(i=0; i《n; i++)
if(strcmp(name,stu.name)==0)
{
flag=i;
printf("%d %s %c %d %d-%d %d %s %s\n",stu.mail);
}
if(flag==-1)
{
printf("您的输入有误!请重新选择\n");
printf("\t\t1、返回继续查询\n\t\t2、退出查询,返回主菜单\n\t\t3、退出程序\t\t\n你的选择是?");
scanf("%d",&choice);
if(choice==1)
{
system("cls");
goto lab2;
}
if(choice==2)
goto end;
else
Exit();
}
}
end:
;
}
void Info_Change(SDate *stu,int n,int Num) //信息修改模块
{
int i;
for(i=0; i《n; i++)
if(stu.num==Num)
{
printf("请输入该学生姓名:\n");
scanf("%s",stu.name);
printf("请输入该学生年龄:\n");
scanf("%d",&stu.age);
getchar();
printf("请输入该学生性别:\n");
scanf("%c",&stu.sex);
printf("请输入该学生出生年月:\n");
scanf("%d%d",&stu.m);
printf("请输入该学生住址:\n");
scanf("%s",stu.add);
printf("请输入该学生联系电话:\n");
scanf("%d",&stu.tel);
printf("请输入该学生E-Mail:\n");
scanf("%s",stu.mail);
printf("学号为%d的同学信息修改完成!\n",Num);
}
}
int Info_Del(SDate *stu, int n, int del) //信息删除模块
{
int i,j;
for(i=0; i《n; i++)
if(stu.num==del)
for(j=i; j《n-1; j++)
stu;
n--;
printf("删除成功!\n");
return n;
}
int Info_Add(SDate *stu,int count) //信息添加模块
{
SDate *p;
system("cls");
printf("当前共有%d个数据\n",count+1);
p=stu+(count);
printf("请输入第%d个学生学号(输入0结束):\n",count+1);
scanf("%d",&p-》num);
while(p-》num!=0)
{
printf("请输入该学生姓名:\n");
scanf("%s",p-》name);
printf("请输入该学生年龄:\n");
scanf("%d",&p-》age);
getchar();
printf("请输入该学生性别:\n");
scanf("%c",&p-》sex);
printf("请输入该学生出生年月:\n");
scanf("%d%d",&p-》y,&p-》m);
printf("请输入该学生住址:\n");
scanf("%s",p-》add);
printf("请输入该学生联系电话:\n");
scanf("%d",&p-》tel);
printf("请输入该学生E-Mail:\n");
scanf("%s",p-》mail);
count++;
p++;
system("cls");
printf("请输入第%d个学生学号(输入0结束):\n",count+1);
scanf("%d",&p-》num);
}
return count;
}

用c语言编写学生信息管理系统

#include《stdio.h》
#include《stdlib.h》
#include《string.h》
#include《conio.h》
#define N 200
int input(struct Student stu);
void save(struct Student stu,int n);
int load(struct Student stu);
void output(struct Student stu,int n);
int insert(struct Student stu_save,int n);
void sort(struct Student stu_save,int n);
void find(struct Student stu_save,int n);
int delete_stu(struct Student stu_save,int n);
typedef struct Student
{
char num;
char name;
char sex;
int age;
float score;
float tolscore;
float ave;
}STU;
int main()
{
int total=0,a;
STU stu;
printf("☆☆☆☆☆学籍管理系统☆☆☆☆☆\n\n");
do{
printf("\n**********************************\n");
printf("1-导入学生信息\n2-加载学生信息\n3-保存学生信息\n4-按学号插入学生\n5-给学生排序\n6-查找学生\n7-删除学生\n8-输出当前学生数据\n9-退出\n");
printf("**********************************\n");
printf("请按键选择:");
scanf("%d",&a);
switch(a)
{
case 1:

total=input(stu);
break;
case 2: total=load(stu);break;
case 3:save(stu,total);break;
case 4: total+=insert(stu,total);break;
case 5:sort(stu,total);break;
case 6:find(stu,total);break;
case 7:total-=delete_stu(stu,total);break;
case 8:output(stu,total);break;
case 9:exit(0);break;
default:printf("输入错误,请重新输入!\n");break;
}
//system("cls");
}while(1);
}
int input(struct Student stu)
{
int i,j,n;
float sum;
printf("请输入要导入的学生人数\n");
scanf("%d",&n);
printf("请输入学生的学号、姓名、性别、年龄及三门课成绩\n");
for(i=0;i《n;i++)
{

scanf("%s",stu.num);
scanf("%s",stu.name);
scanf(" %c",&stu.sex); //%c前的空格用于接收上一个字符串后的空格、回车、制表符,etc
scanf("%d",&stu.age);
sum=0;
for(j=0;j《3;j++)
{
scanf("%f",&stu);
sum+=stu;
}
stu.tolscore=sum;
stu.ave=sum/3.0f;
}

return (n);
}
void save(struct Student stu,int n)
{
FILE *fp;
int i;
char filename;
printf("请输入文件名:");
scanf("%s",filename);
if(strchr(filename,’.’)==NULL)
strcat(filename,".dat");
if((fp=fopen(filename,"wb"))==NULL)
{
printf("Cannot open this file\n");
system("pause");
return;
}
fwrite(&n,sizeof(int),1,fp);
for(i=0;i《n;i++)
fwrite(&stu,sizeof(struct Student),1,fp);
fclose(fp);
printf("保存成功!");
system("pause");
return;
}
int load(struct Student stu_save)
{
FILE *fp;
int i,n;
char filename;
printf("请输入要加载的文件名: ");
//getchar();
scanf("%s",filename);
// gets(filename);
if(strchr(filename,’.’)==NULL)
strcat(filename,".dat");
if((fp=fopen(filename,"rb"))==NULL)
{
printf("Cannot open this file\n");
system("pause");
return 0;
}
fread(&n,sizeof(int),1,fp);
for(i=0;i《n;i++)
fread(&stu_save,sizeof(struct Student),1,fp);
fclose(fp);
system("cls");
printf("文件加载成功!数据如下");
output(stu_save,n);
return n;
}
void output(struct Student stu_save,int n)
{
int i,j;
// system("cls");
printf("\n学号\t姓名\t性别\t年龄\t成绩一\t成绩二\t成绩三\t总分\t平均分\n");
for(i=0;i《n;i++)
{
printf("%s\t",stu_save.num);
printf("%s\t",stu_save.name);
printf("%c\t",stu_save.sex);
printf("%d\t",stu_save.age);
for(j=0;j《3;j++)
printf("%g\t",stu_save);
printf("%g\t",stu_save.tolscore);
printf("%.2f",stu_save.ave);
putchar(10);
}
system("pause");
return;
}
int insert(struct Student stu_save,int n)
{
int i,j,num=0;
float sum=0;
struct Student s;
char flag;
if(n》200)
{
printf("空间已满,无法插入!\n");
return 0;
}
// load(stu_save,n-1);
do{

printf("\n请依次输入学号、姓名、性别、年龄及三门课成绩\n");
scanf("%s",s.num);
scanf("%s",s.name);
scanf(" %c",&s.sex); //%c前的空格用于接收上一个字符串后的空格、回车、制表符,etc
scanf("%d",&s.age);
for(j=0;j《3;j++)
scanf("%f",&s.score);
sum=0;
for(j=0;j《3;j++)
sum+=s.score;
s.tolscore=sum;
s.ave=sum/3;
num++;
for(i=n+num-1;strcmp(stu_save.num,s.num)》0&&i》0;i--)
stu_save;
stu_save=s;
printf("插入成功!");

fflush(stdin);
do
{
printf("继续插入?(y/n)");

flag=getch();
}while(flag!=’y’&&flag!=’n’);
}while(flag==’y’);

system("pause");
//save(stu_save,n);
return num;
}
void sort(struct Student stu_save,int n)
{
int a,i,j;
struct Student t;
system("cls");
printf("\n1-按序号排序\n2-按成绩排序\n请选择:");
scanf("%d",&a);
while(a!=1&&a!=2)
{
printf("输入有误,请重新输入!\n");
scanf("%d",&a);
}
//load(stu_save,n);
if(a==1)
{
for(i=0;i《n-1;i++)
for(j=0;j《n-i-1;j++)
{
if(strcmp(stu_save.num)》0)
{
t=stu_save;
stu_save;
stu_save=t;
}
}
}
else
{
for(i=0;i《n-1;i++)
for(j=0;j《n-i-1;j++)
{
if(stu_save.ave)
{
t=stu_save;
stu_save;
stu_save=t;
}
}
}
// save(stu_save,n);
printf("排序成功!\n");
output(stu_save,n);
return;
}
void find(struct Student stu_save,int n)
{
char ch;
do{
int i,j,w=1;
char search;
//load(stu_save,n);
printf("请输入学生的学号或姓名");
scanf("%s",search);
for(i=0;i《n;i++)
{
if(strcmp(stu_save.name,search)==0)
{
printf("查找成功,该学生的信息为:\n");
printf("%s\t",stu_save.num);
printf("%s\t",stu_save.name);
printf("%c\t",stu_save.sex);
printf("%d\t",stu_save.age);
for(j=0;j《3;j++)
printf("%g\t",stu_save);
printf("%g\t",stu_save.tolscore);
printf("%.2f",stu_save.ave);
putchar(10);
w=0;
break;
}
}
if(w)
printf("查找失败\n");

do
{
printf("\n按Y继续查找,按N返回上级菜单\n");
ch=getch();
}while(ch!=’y’&&ch!=’n’);
if(ch==’n’)
return;
}while(ch==’y’);
}
int delete_stu(struct Student stu_save,int n)
{
int i,w=1;
char search;
// load(stu_save,n);
printf("\n请输入要删除学生的姓名或学号\n");
scanf("%s",search);
for(i=0;i《n;i++)
if(strcmp(stu_save.name,search)==0)
{
w=0;
break;
}
if(w)
{
printf("无此学生!\n");
return 0;
}
for(;i《n-1;i++)
stu_save;
printf("删除成功!\n");
// save(stu_save,n-1);
return 1;
}
之前随便写的 忘了有没有调试 有问题再私信找我 采纳哦~~

学生信息管理系统C语言编程

#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#define N 3
typedef struct z1
{
char no;
char name;
int score;
float sum;
float average;
int order;
struct z1 *next;
}STUDENT;
STUDENT *init();
STUDENT *create();
STUDENT *del(STUDENT *h);
void print(STUDENT *h);
void search1(STUDENT *h);
void search3(STUDENT *h);
STUDENT *insert(STUDENT *h);
void sort(STUDENT *h);
void save(STUDENT *h);
void tongji(STUDENT *h);
int menu_select();
STUDENT *load();
void inputs(char *prompt,char *s,int count);
STUDENT *load();
main()
{
int i;
STUDENT *head;
head=init();
for(;;)
{
switch(menu_select())
{
case 0:head=init();break;
case 1:head=create();break;
case 2:head=insert(head);break;
case 3:save(head);break;
case 4:print(head);break;
case 5:search1(head);break;
case 6:head=del(head);break;
case 7:sort(head);break;
case 8:tongji(head);break;
case 9:search3(head);break;
case 10:exit(0);
}
}
}
int menu_select()
{
char *menu={"************菜单************",
"0. 初始化链表",
"1. 输入学生成绩",
"2. 插入学生成绩",
"3. 保存学生记录",
"4. 显示学生记录",
"5. 按学号查找学生信息",
"6. 删除指定学号的学生信息",
"7. 按某一门课对学生成绩排序",
"8. 统计某门课程的学生成绩",
"9. 按姓名查找学生信息",
"10. 退出系统"};
char s;
int c,i;
for(i=0;i《=11;i++)
printf(" %s\n",menu);
do
{
printf("\n请选择0~10中的某一个选项\n");
scanf("%s",s);
c=atoi(s);
}while(c《0||c》10);
return c;
}
STUDENT *init()
{
return NULL;
}
STUDENT *create()
{
int i;int s;
STUDENT *h=NULL,*info;
for(;;)
{
info=(STUDENT *)malloc(sizeof(STUDENT));
if(!info)
{
printf("\n内存不足");
return NULL;
}
inputs("输入学号:",info-》no,11);
if(info-》no==’@’)break;
inputs("输入姓名:",info-》name,15);
printf("开始输入%d门课的成绩\n",N);
s=0;
for(i=0;i《N;i++)
{
do{
printf("第%d门分数:",i+1);
scanf("%d",&info-》score);
if(info-》score《0)
printf("输入成绩错误,请重新输入:\n");
}while(info-》score《0);
s=s+info-》score;
}
info-》sum=s;
info-》average=(float)s/N;
info-》order=0;
info-》next=h;
h=info;
}
return h;
}
void inputs(char *prompt,char *s,int count)
{
char p;
do
{
printf(prompt);
scanf("%s",p);
if(strlen(p)》count)
printf("\n太长了!\n");
}while(strlen(p)》count);
strcpy(s,p);
}
void print(STUDENT *h)
{
int i=0;
STUDENT *p;
p=h;
printf("\n\n\n***********************学生***********************\n");
printf("|序号|学号 | 姓名 | 语文 | 英语 |数学 | 总分 |平均分 |名次 |\n");
printf("|---|-------|--------|----|----|----|------|------|---|\n");
while(p!=NULL)
{
i++;
printf("|%3d |%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",i,p-》no,p-》name,p-》score,p-》sum,p-》average,p-》order);
p=p-》next;
}
printf("***********************end***********************\n");
}
STUDENT *del(STUDENT *h)
{
STUDENT *p,*q;
char s;
printf("请输入要删除的学生的学号\n");
scanf("%s",s);
q=p=h;
while(strcmp(p-》no,s)&&p!=NULL)
{
q=p;
p=p-》next;
}
if(p==NULL)
printf("\n链表中没有学号为%s的学生\n",s);
else
{
printf("\n\n\n***********************找到了***********************\n");
printf("|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n");
printf("|----------|----------|----|----|----|------|------|---|\n");
printf("|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p-》no,p-》name,p-》score,p-》sum,p-》average,p-》order);
printf("***********************end***********************\n");
printf("请按任意键删除\n");
getchar();
if(p==h)
h=p-》next;
else q-》next=p-》next;
free(p);
printf("\n已经删除学号为%s的学生\n",s);
printf("不要忘了保存数据\n");
}
return h;
}
void search1(STUDENT *h)
{
STUDENT *p;
char s;
printf("请输入你要查找的同学的学号\n");
scanf("%s",s);
p=h;
while(strcmp(p-》no,s)&&p!=NULL)
p=p-》next;
if(p==NULL)
printf("’n没有学号为%s的学生\n",s);
else
{
printf("\n\n\n***********************找到了***********************\n");
printf("|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n");
printf("|----------|-----------|----|----|----|------|------|---|\n");
printf("|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p-》no,p-》name,p-》score,p-》sum,p-》average,p-》order);
printf("***********************end***********************\n");
}
}
void search3(STUDENT *h)
{
STUDENT *p;
char s;
printf("请输入你要查找的同学的姓名\n");
scanf("%s",s);
p=h;
while(strcmp(p-》name,s)&&p!=NULL)
p=p-》next;
if(p==NULL)
printf("\n没有姓名为%s的学生\n",s);
else
{
printf("\n\n\n***********************找到了***********************\n");
printf("|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n");
printf("|----------|-----------|----|----|----|------|------|---|\n");
printf("|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p-》no,p-》name,p-》score,p-》sum,p-》average,p-》order);
printf("***********************end***********************\n");
}
}
STUDENT *insert(STUDENT *h)
{
STUDENT *p,*q,*info;
char s;
int s1,i;
printf("请输入插入点的学生学号\n");
scanf("%s",s);
printf("\n请输入新的学生信息\n");
info=(STUDENT *)malloc(sizeof(STUDENT));
if(!info)
{
printf("\n内存不足!");
return NULL;
}
inputs("输入学号:",info-》no,11);
inputs("输入姓名:",info-》name,15);
printf("请输入%d门课的分数\n",N);
s1=0;
for(i=0;i《N;i++)
{
do{
printf("分数%d",i+1);
scanf("%d",&info-》score);
if(info-》score《0)
printf("输入数据有误,请重新输入\n");
}while(info-》score《0);
s1=s1+info-》score;
}
info-》sum=s1;
info-》average=(float)s1/N;
info-》order=0;
info-》next=NULL;
p=h;
q=h;
while(strcmp(p-》no,s)&&p!=NULL)
{q=p;p=p-》next;}
if(p==NULL)
if(p==h)
h=info;
else q-》next=info;
else
if(p==h)
{
info-》next=p;
h=info;
}
else
{
info-》next=p;
q-》next=info;
}
printf("\n已经插入了%s这个学生\n",info-》name);
printf("----不要忘了存盘啊--\n");
return(h);
}
void save(STUDENT *h)
{
FILE *fp;
STUDENT *p;
char outfile;
printf("请输入保存文件的文件名,例如 c:\\f1\\te.txt:\n");
scanf("%s",outfile);
if((fp=fopen(outfile,"wb"))==NULL)
{
printf("不能打开文件\n");
exit(1);
}
printf("\n正在保存......\n");
p=h;
while(p!=NULL)
{
fwrite(p,sizeof(STUDENT),1,fp);
p=p-》next;
}
fclose(fp);
printf("------保存成功!!!------\n");
}
void sort(STUDENT *h)
{
int i=0,j;
STUDENT *p,*q,*t,*h1;
printf("请输入要按哪门课程的编号来排序:(0.语文 1.数学 2.英语)\n");
scanf("%d",&j);
h1=h-》next;
h-》next=NULL;
while(h1!=NULL)
{
t=h1;
h1=h1-》next;
p=h;
q=h;
while(t-》score&&p!=NULL)
{
q=p;
p=p-》next;
}
if(p==q)
{
t-》next=p;
h=t;
}
else
{
t-》next=p;
q-》next=t;
}
}
p=h;
while(p!=NULL)
{
i++;
p-》order=i;
p=p-》next;
}
print(h);
printf("排序成功!!!\n");
}
void tongji(STUDENT *h)
{
STUDENT *p;
int a,b,i;
printf("请输入课程编号\n");
scanf("%d",&i);
printf("请输入分数段:\n");
scanf("%d,%d",&a,&b);
p=h;
while(p!=NULL)
{
printf("\n\n\n***********************找到了***********************\n");
if(p-》score《=b)
{
printf("|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n");
printf("|--------|---------|----|----|----|------|------|---|\n");
printf("|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p-》no,p-》name,p-》score,p-》sum,p-》average,p-》order);
}
p=p-》next;
}
printf("***********************end***********************\n");
}

c语言 学生管理系统

#include 《stdlib.h》
#include 《stdio.h》
#include 《iostream》
#include 《string》
#include 《fstream》
using namespace std;
struct Node//定义链表结点
{
char* class_0;//班级
int number;
char* name;//姓名
float elec;//电子技术成绩
float c_prog;//C程序设计成绩
float media;//多媒体技术成绩
float eng;//大学英语成绩
float math;//高等数学成绩
float sport;//大学体育成绩
float polity;//马克思主义政治经济学成绩
float ave;//平均成绩
int order;//名次
Node* link;
Node(){link=NULL;}
Node(int _number,char* _class_0,char* _name,float _elec,
float _c_prog,float _media,float _eng,float _math,
float _sport,float _polity,float _ave,int _order,Node* next)
{
number=_number;
class_0=new char;
strcpy(class_0,_class_0);
name=new char;
strcpy(name,_name);
elec=_elec;
c_prog=_c_prog;
media=_media;
eng=_eng;
math=_math;
sport=_sport;
polity=_polity;
ave=_ave;
order=_order;
link=next;
}
~Node()
{
delete class_0;
delete name;
}
};
class StudentScore
{
private:
Node* first;//链表的头指针
int choice;//选择数据的读入方式
int fileNum;//当前文件数减一
int fileLoc;//定位当前文件
string* fileName;
int operChoice;
int RecordLength;
public:
StudentScore();
void Save();
void BuildList();//手工建立成绩链表
void ReadInfo(int k);//从内存中读入学生信息
void ClearList();
void Statistic();
void Sort();
void Add();
void Delete();
void PrintList();
void Menu();
};
StudentScore::StudentScore()
{
RecordLength=0;
operChoice=0;
first=NULL;
choice=0;
fileLoc=0;
fileNum=0;
fileName=new string;//最多可以存10个文件
}
int GetOrder(Node* first,float ave);
void StudentScore::BuildList()
{
int _number;//学号
char* _class_0=new char;//班级
char* _name=new char;//姓名
float _elec;//电子技术成绩
float _c_prog;//C程序设计成绩
float _media;//多媒体技术成绩
float _eng;//大学英语成绩
float _math;//高等数学成绩
float _sport;//大学体育成绩
float _polity;//马克思主义政治经济学成绩
float _ave;//平均成绩
int _order;//名次
char c;
Node *p,*r=NULL;
first=NULL;
cout《《"您要输入学生成绩信息?"《《endl;
while((c=getchar())==’n’);
while(tolower(c)!=’n’)
{
cin》》_class_0;//班级
cin》》_number;
cin》》_name;//姓名
cin》》_elec;
cin》》_c_prog;
cin》》_media;
cin》》_eng;
cin》》_math;
cin》》_sport;
cin》》_polity;
_ave=(_elec+_c_prog+_media+_eng+_math+_sport+_polity)/7;//求得平均成绩
_order=GetOrder(first,_ave);
p=new Node(_number,_class_0,_name,_elec,
_c_prog,_media,_eng,_math,_sport,_polity,
_ave,_order,NULL);//建立一个新的结点储存信息
if(first!=NULL)
r-》link=p;
else first=p;
r=p;
RecordLength++;
cout《《"您要输入学生成绩信息?"《《endl;
while((c=getchar())==’n’);
}
}
int GetOrder(Node* first,float ave)//名次记录有严重问题
{
int order=1;
Node* temp=first;
for(;temp;temp=temp-》link)
{ if(temp-》ave》ave) order++;
if(temp-》ave《ave) (temp-》order)++;
}
return order;
}
void StudentScore::Statistic()
{
Node* temp=first;
float a_elec=0.0;//电子技术成绩
float a_c_prog=0.0;//C程序设计成绩
float a_media=0.0;//多媒体技术成绩
float a_eng=0.0;//大学英语成绩
float a_math=0.0;//高等数学成绩
float a_sport=0.0;//大学体育成绩
float a_polity=0.0;//马克思主义政治经济学成绩
int i=0;
while(temp)
{
a_elec+=temp-》elec;
a_c_prog+=temp-》c_prog;
a_media+=temp-》media;
a_eng+=temp-》eng;
a_math+=temp-》math;
a_sport+=temp-》sport;
a_polity+=temp-》polity;
i++;
temp=temp-》link;
}
a_elec=a_elec/i;
a_c_prog=a_c_prog/i;
a_media=a_media/i;
a_eng=a_eng/i;
a_math=a_math/i;
a_sport=a_sport/i;
a_polity=a_polity/i;
cout《《"电子技术平均成绩为:"《《a_elec《《endl;
cout《《"c程序设计平均成绩为:"《《a_c_prog《《endl;
cout《《"多媒体技术平均成绩为:"《《a_media《《endl;
cout《《"英语平均成绩为:"《《a_eng《《endl;
cout《《"高等数学平均成绩为:"《《a_math《《endl;
cout《《"体育平均成绩为:"《《a_sport《《endl;
cout《《"政治平均成绩为:"《《a_polity《《endl;
}
void StudentScore::Delete()
{
int studNum;
Node* p;
Node* temp=first;
cout《《"请输入要删除的学生学号"《《endl;
cin》》studNum;
float average;
for(;temp;temp=temp-》link)
{
cout《《temp-》number;

if(temp-》number==studNum)
{
average=temp-》ave;
if(temp==first)//说明是第一次
{
first=first-》link;
delete temp;
break;//如果不跳出的话 temp=temp-》link会出错
}
else
{
p-》link=temp-》link;
delete temp;
break;
}
}
p=temp;
RecordLength--;
}
//下面修改学生排名
temp=first;
for(;temp;temp=temp-》link)
if(temp-》ave《average) temp-》order--;
}
void StudentScore::Add()
{
int _number;//学号
char* _class_0=new char;//班级
char* _name=new char;//姓名
float _elec;//电子技术成绩
float _c_prog;//C程序设计成绩
float _media;//多媒体技术成绩
float _eng;//大学英语成绩
float _math;//高等数学成绩
float _sport;//大学体育成绩
float _polity;//马克思主义政治经济学成绩
float _ave;//平均成绩
int _order;//名次
char c;
Node *p,*r=NULL;
r=first;
while(r-》link)
r=r-》link;
// first=NULL;
cout《《"您要输入学生成绩信息?"《《endl;
while((c=getchar())==’n’);
while(tolower(c)!=’n’)
{
cin》》_class_0;//班级
cin》》_number;
cin》》_name;//姓名
cin》》_elec;
cin》》_c_prog;
cin》》_media;
cin》》_eng;
cin》》_math;
cin》》_sport;
cin》》_polity;
_ave=(_elec+_c_prog+_media+_eng+_math+_sport+_polity)/7;//求得平均成绩
//写一个返回排名的程序
_order=GetOrder(first,_ave);
p=new Node(_number,_class_0,_name,_elec,
_c_prog,_media,_eng,_math,_sport,_polity,
_ave,_order,NULL);//建立一个新的结点储存信息
if(first!=NULL)
r-》link=p;
else first=p;
r=p;
RecordLength++;
cout《《"您要输入学生成绩信息?"《《endl;
while((c=getchar())==’n’);
}
}
void StudentScore::Sort()//简单bubble排序从高分到低分排序
{
int i=0;
Node* temp=first;
Node* before;
// Node* p=first;
for(;temp-》link;)
{
if(temp-》ave《temp-》link-》ave)
{

if(temp==first)//说明是第一个结点
{
first=first-》link;
// p=temp;
// temp=temp-》link;
temp-》link=temp-》link-》link;
first-》link=temp;
before=first;
}
else//不是第一个结点
{
before-》link=temp-》link;
temp-》link=temp-》link-》link;
before-》link-》link=temp;
before=before-》link;
}
}
else
{
temp=temp-》link;
}
i++;//计算次数
}
for(;i》0;i--)
{
temp=first;
for(int j=0;j《i;j++)
{
if(temp-》ave《temp-》link-》ave)
{
cout《《"small!"《《endl;
if(temp==first)//说明是第一个结点
{
first=first-》link;
// p=temp;
// temp=temp-》link;
temp-》link=temp-》link-》link;
first-》link=temp;
before=first;
}
else//不是第一个结点
{
before-》link=temp-》link;
temp-》link=temp-》link-》link;
before-》link-》link=temp;
before=before-》link;
}
}
else
{
temp=temp-》link;
}
}
}

}
/*
bool IsSorted(Node* first)
{
for(;first;first=first-》link)
if(first-》ave《first-》link-》ave) return false;
return true;
}*/
void StudentScore::PrintList()//打印链表程序
{
cout《《"The list contains:"《《endl;
Node* temp=first;
for(;temp;temp=temp-》link)
{
cout《《temp-》class_0《《","《《temp-》name《《endl;
cout《《temp-》order《《endl;
}
}
void StudentScore::ClearList()//清除链表
{
Node* p=new Node;
while(first)
{
p=first-》link;
delete first;
first=p;
}
}
//读函数
void StudentScore::ReadInfo(int k)//读第k个文件的信息存入链表
{
// int wordLength;//记录子段长度
int _number;//学号
char* _class_0=new char;//班级
char* _name=new char;//姓名
float _elec;//电子技术成绩
float _c_prog;//C程序设计成绩
float _media;//多媒体技术成绩
float _eng;//大学英语成绩
float _math;//高等数学成绩
float _sport;//大学体育成绩
float _polity;//马克思主义政治经济学成绩
float _ave;//平均成绩
int _order;//名次
Node *p,*r=NULL;
first=NULL;
ifstream Infile(fileName.c_str());
if(!Infile)
{
cout《《"file is not present!"《《endl;
return;
}
Infile》》RecordLength;
cout《《RecordLength;
for(int i=0;i《RecordLength;i++)
{
Infile》》_class_0;//班级
// cout《《_class_0;
Infile》》_number;
Infile》》_name;//姓名
Infile》》_elec;
Infile》》_c_prog;
Infile》》_media;
Infile》》_eng;
Infile》》_math;
Infile》》_sport;
Infile》》_polity;
Infile》》_ave;
Infile》》_order;
_ave=(_elec+_c_prog+_media+_eng+_math+_sport+_polity)/7;//求得平均成绩
//写一个返回排名的程序
_order=GetOrder(first,_ave);
p=new Node(_number,_class_0,_name,_elec,
_c_prog,_media,_eng,_math,_sport,_polity,
_ave,_order,NULL);//建立一个新的结点储存信息
if(first!=NULL)
r-》link=p;
else first=p;
r=p;
}
}
void StudentScore::Save()
{
string tempName;
cout《《"请输入将要保存的文件名:"《《endl;
//要判断是否跟现有文件重名
cin》》tempName;
ofstream savefile(tempName.c_str());//要做一个转换
Node* temp=first;
savefile《《RecordLength《《endl;
for(;temp;temp=temp-》link)
{
savefile《《temp-》class_0《《" "《《temp-》number《《" "《《temp-》name《《" "《《temp-》elec《《" "
《《temp-》c_prog《《" "《《temp-》media《《" "《《temp-》eng《《" "《《temp-》math《《" "
《《temp-》sport《《" "《《temp-》polity《《" "《《temp-》ave《《" "《《temp-》order《《endl;
}
savefile.close();

//读取文件表信息
ifstream Readfileinfo("FileRecord.txt");
Readfileinfo》》fileNum;
for(int i=0;i《fileNum;i++)
Readfileinfo》》fileName;
Readfileinfo.close();
fileNum++;
fileName=tempName;
//修改文件表信息
ofstream changefile("FileRecord.txt");
changefile《《fileNum《《endl;
for(i=0;i《fileNum;i++)
changefile《《fileName《《endl;
changefile.close();
}
void StudentScore::Menu()
{
cout《《"请您选择数据的读入方式:"《《endl;
cout《《"(1) 重新手动建立一份新的数据表"《《endl;
cout《《"(2) 从文件中读入数据"《《endl;
cout《《"请选择:";
cin》》choice;
if(choice==1)
{
BuildList();
}
if(choice==2)
{
cout《《"当前有如下文件,请选择读入文件:"《《endl;
ifstream fileRecord("fileRecord.txt");
if(!fileRecord)
{
cout《《"fileRecord is not present!"《《endl;
return;
}
fileRecord》》fileNum;
cout《《"当前有"《《fileNum《《"个文件:"《《endl;
for(int i=0;i《fileNum;i++)
{
fileRecord》》fileName;
cout《《fileName《《" ";
}
cout《《"请您选择一个文件:";
cin》》fileLoc;
ReadInfo(fileLoc-1);
PrintList();
}
cout《《"请选择您需要的操作:"《《endl;
cout《《"(1) 统计学生各科成绩"《《endl;
cout《《"(2) 删除某个学生成绩记录"《《endl;
cout《《"(3) 增加某个学生成绩记录"《《endl;
cout《《"(4) 在链表中为所有学生成绩记录排序"《《endl;
cin》》operChoice;
if(operChoice==1)
Statistic();
if(operChoice==2)
Delete();
if(operChoice==3)
Add();
if(operChoice==4)
Sort();
Save();
ClearList();
}
int main()
{
cout《《"//////////////////////////////////"《《endl;
cout《《"欢迎使用学生成绩管理系统!"《《endl;
cout《《"//////////////////////////////////"《《endl;
cout《《endl;
cout《《endl;
StudentScore s;
s.Menu();
return 0;
}

c语言学生信息管理系统代码

代码如下:

#include《stdio.h》
#include《malloc.h》
#include《stdlib.h》
#include《string.h》
#include《conio.h》
typedef struct examinee //考生信息结构
{   char examno; //准考证号
char name; //姓名
char sex; //性别
short age; //年龄
char examtype; //报考科目
}ElemType;

typedef struct Node //定义链表结点
{
ElemType data; //数据域
struct Node *next; //指针域
}Node,*List,*position;

List make_empty( List L ); //创建一个带头结点的空表
int is_empty( List L ); //测试链表是否是空表
int is_last( position p, List L ); //测试当前位置是否是表尾
position make_node( position p,int n ); //创建结点并输入考生信息
void put_information( position p ); //是否输出该考生信息
void put_name_information( List L ); //输出姓名为xx的考生信息
int put_pos_information( position p ); //输出该地址考生信息
void link_to_tail( List L, position p ); //将结点连接到表尾
int ciculation_make(); //循环创建考生信息
int judge_put_all(); //是否输出所有考生信息
void put_all(List L); //输出所有考生信息。
position find( List L ); //查找第一个姓名为xx的元素并返回位置
position find_previous( List L ); //查找第一个姓名为xx的元素并返回该元素直接前驱的位置
//int judge_delete_val(); //询问是否删除考生数据
int delete_val( List L ); //删除指定考生信息并输出其信息
void menu(List L); //菜单函数
List L;
//position p;

int
main( void ) 
{
List L = NULL; //定义头结点指针
position p = NULL; //定义表工作指针
L = make_empty( L ); //创建空表
printf("\t\t\t★★考生报名管理程序★★\n\t\t----------------------------------------\n");
menu(L);
return 0;
}

//创建一个带头结点的空表
List
make_empty( List L)
{
L = ( List ) malloc (sizeof( Node ));
if(NULL == L)
{
printf("内存分配失败");
exit( 1 );
}
L-》next = NULL;
//printf("空表创建成功。\n");
return L;
}

//创建结点并输入考生信息
position
make_node( position p ,int n)
{
if(n) //n为1是创建结点并输入,n为0是修改
{
p = ( position ) malloc ( sizeof ( Node ));
p-》next = NULL ;
}
printf("请输入考生准考证号:");
gets(p-》data.examno);
printf("请输入考生姓名:");
gets(p-》data.name);
do
{
printf("请输入考生性别,只能输入“男”或者“女”:");
gets(p-》data.sex);
}
while( 0 != strcmp( p-》data.sex, "男" ) && 0 != strcmp( p-》data.sex, "女" )); //判断性别是否有误
printf("请输入考生年龄:");
scanf("%hd",&p-》data.age);
getchar();  //如果把这句删掉,就“无法执行”下面的报考类别
/*下面的do while用来判断报考类别是否输入有误*/
do
{
printf("请输入报考类别,只能输入“数学”或“英语”或者“数据结构”:");
gets(p-》data.examtype);
}
while( 0 != strcmp( "英语", p-》data.examtype ) && 0 != strcmp( "数学", p-》data.examtype ) && 0 != strcmp( "数据结构", p-》data.examtype ));
if(n)
{
printf("报名成功\n");
}
else
{
printf("修改成功\n");
}
return p;
}

//前插法;
void
link_to_tail( List L, position p)
{
p-》next = L-》next;
L-》next = p;
}

//查找第一个姓名为xx的元素并返回位置
position
find( List L )
{
position p = L-》next;
char name;
printf("请输入你要查找的考生姓名:");
gets(name);
while( p != NULL && 0 != strcmp( p-》data.name , name))
{
p=p-》next;
}
return p;
}
//测试链表是否是空表
int
is_empty( List L )
{
return L-》next == NULL;
}
//测试当前位置是否是表尾
int
is_last( position p, List L )
{
return p-》next == NULL;
}
//输出姓名为xx的考生信息
void
put_name_information( List L )
{
position p = find(L);
if(p!=NULL)
{
printf("您要查找的考生信息:\n");
printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n\n",p-》data.examno,p-》data.name,p-》data.sex,p-》data.age,p-》data.examtype);
}
else
{
printf("没有您要找的学生。\n");
}
}
//循环创建考生信息
int
ciculation_make()
{
int n = 2;
do
{
printf("是否继续创建考生信息?是请输入“1”,不是请输入“0”:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
return n;
}

//是否输出考生信息
void
put_information( position p )
{
int n=2;
do
{
printf("是否输出该考生信息?是请输入“1”,不是请输入“0”:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
if(n)
{
printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",p-》data.examno,p-》data.name,p-》data.sex,p-》data.age,p-》data.examtype);
}
}


//是否输出所有考生信息
int
judge_put_all()
{
int n = 2;
do
{
printf("是否输出所有考生信息?是请输入“1”,不是请输入“0”:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
return n;
}

//输出所有考生信息
void
put_all(List L)
{
if(L-》next == NULL)
{
printf("现无考生报名!\n");
}
else
{
position p=L-》next;
while( p != NULL )
{
printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",p-》data.examno,p-》data.name,p-》data.sex,p-》data.age,p-》data.examtype);
p=p-》next;
}
}
//getchar();
}

//询问是否删除考生数据
int
judge_delete_val()
{
int n = 2;

do
{
printf("是否要删除某个考生数据?是请输入“1”,不是输入“0”:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
return n;
}

//查找第一个姓名为xx的元素并返回其直接前驱的位置
position
find_previous( List L )
{
position q = L;
position p = L-》next;
char name;
printf("请输入你要查找的考生姓名:");
gets(name);
while( p != NULL && 0 != strcmp( p-》data.name , name))
{
q=p;
p=p-》next;
}
if( p != NULL )
{
return q;
}
else
return p;
}

//删除指定考生信息并输出其信息
int
delete_val(List L)
{
int n=2;
position q=NULL;
position p=find_previous( L ); //返回考生信息地址
if( NULL == p )
{
printf("你要删除的考生不存在\n");
return 0;
}
else
{
q = p-》next;
p-》next = q-》next;
printf("删除成功。\n删除的考生信息为:\n");
printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",q-》data.examno,q-》data.name,q-》data.sex,q-》data.age,q-》data.examtype);
free(q);
return 1;
}

}

//输出该地址考试信息
int
put_pos_information( position p )
{
if(p != NULL )
{
printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n\n",p-》data.examno,p-》data.name,p-》data.sex,p-》data.age,p-》data.examtype);
return 1;
}
else
{
printf("没有您要查找的学生。");
return 0;
}
}
//菜单函数
void
menu(List L)
{
printf("\t\t\t   a. 考生报名入口\n");
printf("\t\t\t   b. 查询考生信息\n");
printf("\t\t\t   c. 修改考生信息\n");
printf("\t\t\t   d. 删除考生信息\n");
printf("\t\t\t   e. 全部考生信息\n");
printf("\t\t\t   f. 程序作者信息\n");
printf("\t\t\t   g.   退出程序\n");
char n=’h’;
while(n != ’g’)
{
do  //确定正确输入
{
printf("请通过字母序号选择功能:");
n = getchar();
getchar();
putchar(’\n’);
if( n 《 ’a’ || n 》 ’g’)
{
printf("错误的字母序号。\n");
}
}
while( n 《 ’a’ || n 》 ’g’ );
switch (n)
{
case ’a’:
{
printf("请输入报名考生信息:\n");
position p = make_node( p, 1 ); //创建新结点
link_to_tail( L, p ); //将新结点连接到表上
put_information( p );   //是否输出该考生信息
putchar(’\n’);
}
break;

case ’b’:
{
put_name_information( L );
putchar(’\n’);
}
break;

case ’c’:
{
int n=0;
position p = NULL;
printf("您正在进行修改操作。\n");
p = find(L);
n = put_pos_information( p );
if(n)
{
make_node( p , 0 );
put_information( p );   //是否输出该考生信息
}
putchar(’\n’);
}
break;

case ’d’:
{
printf("您正在进行删除操作。\n");
delete_val( L );
putchar(’\n’);
}
break;

case ’e’:
{
put_all( L );
putchar(’\n’);
}
break;

case ’f’:
{
printf("              修改日期    版本号      修改人      修改内容    \n");
printf("        --------------------------------------------------------\n");
printf("              2018.6.19    v2.0       陈百川     增加主菜单\n");
printf("              2018.6.23    v3.0       陈百川   增加生成文件功能\n\n");
printf("            该版本号为v2.0\n");
putchar(’\n’);
}
break;

default:
break;
}
}
printf("                     感谢本次使用,祝您生活愉快。");
getch();
}

评论收起

怎样用c语言编写一个学生信息管理系统

给你个我写的参考:
#
include
《stdio.h》
#
include
《malloc.h》
struct
Student
{

char
name;

int
age;

int
id;

char
sex;
};
int
input(struct
Student
**
pArr)
{

int
i;

int
len;

printf("请输入学生的个数:\n");

printf("len
=
");

scanf("%d",
&len);

*pArr
=
(struct
Student
*)malloc(len
*
sizeof(struct
Student));

for(i
=
0;
i
《
len;
++i)

{
printf("请输入第%d个学生的信息:\n",
i
+
1);
printf("姓名
=
");
scanf("%s",
(*pArr).name);
printf("年龄
=
");
scanf("%d",
&((*pArr).age));
printf("学号
=
");
scanf("%d",
&((*pArr).id));
printf("性别(1-男
0-女)
=
");
scanf("
%c",
&((*pArr).sex));

}

return
len;
}
void
output(struct
Student
*
pArr,
int
len,
int
sid)
{

int
i;

for(i
=
0;
i
《
len;
++i)
if(pArr.id
==
sid)
break;

printf("\n\n学生的信息是:\n");

printf("第%d个学生的信息是:\n",
i
+
1);

printf("姓名
=
%s\n",
pArr.name);

printf("年龄
=
%d\n",
pArr.age);

printf("学号
=
%d\n",
pArr.id);

if(pArr.sex
==
’1’)
printf("性别
=
男\n");

else
printf("性别
=
女\n");
}
int
main(void)
{

int
len,
id;

struct
Student
*
pArr;

len
=
input(&pArr);

printf("输入要查找的学号:\n");

scanf("%d",
&id);

output(pArr,
len,
id);

return
0;
}

C语言学生信息管理系统

#include《stdio.h》 
#include《string.h》 
#include《stdlib.h》 
#include《conio.h》 
#define max 20 
typedef struct student //学生 
{ 
char sno; // 学号 
char sname; //姓名 
char sex; //性别 
char age; //年龄 
char depart; //系 
char classs; //班 
char grade; //年级 
struct student* next; 
} student; 
student* head; 
int LogOn() //登录模块,已实现输入密码不回显,如果中途发现输错某几位,可退格键重输 
{ 
char username; 
printf("\n请输入用户名:"); 
scanf("%s",username); 
printf("\n请输入密码(最多15位):"); 
//开始以不回显且支持退格方式获取输入密码 
int i=0; 
while((i》=0)&&(password=getch())!=13)//条件i》=0是用于限制退格的范围 
{ 
if(password==’\b’)//对退格键的处理 
{ 
printf("%c%c%c",’\b’,’\0’,’\b’); 
i=i-2; 
} 
else 
printf("*"); 
} 
password=’\0’; 
//已获取密码。验证用户身份 
if(!strcmp(username,"zhang")&&!strcmp(password,"8147086")) 
{ 
printf("\n登录成功!"); 
return 1; 
} 
else  
return 0; 
} 
void regist() 
{ 
char ch; 
student *s,*ptr; //s用来建新结点,ptr用来暂存头结点 
do 
{ 
s=(student*)malloc(sizeof(student)); // 新建一个学生结点 
printf("\n开始注册..."); //开始注册 
printf("\n请输入该学生的学号:"); 
scanf("%s",s-》sno); 
printf("\n请输入该学生的姓名:"); 
scanf("%s",s-》sname); 
printf("\n请输入该学生的性别:"); 
scanf("%s",s-》sex); 
printf("\n请输入该学生的年龄:"); 
scanf("%s",s-》age); 
printf("\n请输入该学生的系:"); 
scanf("%s",s-》depart); 
printf("\n请输入该学生所在的班:"); 
scanf("%s",s-》classs); 
printf("\n请输入该学生所在的年级"); 
scanf("%s",s-》grade); 
ptr=head; 
head=s;//将新结点插入队头 
s-》next=ptr; 
fflush(stdin); 
printf("\n请问是否继续注册?(Y/N)"); 
scanf("%c",&ch); 
}while(ch==’Y’||ch==’y’); 
return; 
} 
void ElePrint(char str) //输出单个元素 
{ 
if(str==NULL) exit(0); 
printf("%s",str); 
for(unsigned int i=0;i《12-strlen(str);i++) printf(" ");//为了对齐输出,需插入一些空格 
return; 
} 
int LinePrint(student *ptr) //输出一行 
{ 
if(ptr==NULL) //检查传进来的指针 
return 0; 
printf("\n"); 
ElePrint(ptr-》sno); 
ElePrint(ptr-》sname); 
ElePrint(ptr-》age); 
ElePrint(ptr-》sex); 
ElePrint(ptr-》depart); 
ElePrint(ptr-》classs); 
ElePrint(ptr-》grade); 
return 1; 
} 
void print() //输出全部学生信息 
{ 
student *ptr=head; 
printf("\n学号 姓名 年龄 性别 系 班 年级 "); 
while(ptr) 
{ 
LinePrint(ptr); 
ptr=ptr-》next; 
} 
printf("\n"); 
return; 
} 
void search()//查询模块 
{ 
int method;//查询方式 
char no; //用来接收查询关键字 
while(1) 
{ 
printf("\n请选择查询方式"); 
printf("\n1.按学号查询"); 
printf("\n2.按姓名查询"); 
printf("\n3.按所在系查询"); 
printf("\n4.按所在班级查询"); 
printf("\n5.按所在年级查询"); 
printf("\n6.打印全部学生信息"); 
printf("\n7.返回主菜单\n"); 
scanf("%d",&method); 
student *p=head,*temp; 
switch(method) 
{ 
case 1:  
printf("\n请输入要查询的学号:"); 
scanf("%s",no);  
while(p) 
{ 
if(!strcmp(p-》sno,no)) 
break; 
else 
{ 
temp=p; 
p=p-》next; 
} 
} 
printf("\n学号 姓名 年龄 性别 系 班 年级 "); 
LinePrint(p); 
break; 
case 2: 
printf("\n请输入要查询的姓名:"); 
scanf("%s",name); 
printf("\n学号 姓名 年龄 性别 系 班 年级 "); 
while(p) 
{ 
if(!strcmp(p-》sname,name)) 
LinePrint(p);  
p=p-》next; 
} 
break; 
case 3: 
printf("\n请输入学生所在的系:"); 
scanf("%s",departm); 
printf("\n学号 姓名 年龄 性别 系 班 年级 "); 
while(p) 
{ 
if(!strcmp(p-》depart,departm)) 
LinePrint(p); 
p=p-》next; 
} 
break; 
case 4: 
printf("\n请输入学生所在的班:"); 
scanf("%s",clss); 
printf("\n请输入学生所在的年级:");  
scanf("%s",grades);  
printf("\n学号 姓名 年龄 性别 系 班 年级 "); 
while(p) 
{ 
if(!strcmp(p-》classs,clss)&&!strcmp(p-》grade,grades)) 
LinePrint(p); 
p=p-》next; 
} 
break; 
case 5: 
printf("\n请输入学生所在的年级:"); 
scanf("%s",grades); 
printf("\n学号 姓名 年龄 性别 系 班 年级 "); 
while(p) 
{ 
if(!strcmp(p-》grade,grades)) 
LinePrint(p); 
p=p-》next; 
} 
break; 
case 6: 
print(); 
break; 
case 7: 
return; 
default: 
printf("很抱歉,暂无此查询方式!"); 
break; 
} 
} 
} 
void modify()//修改学生信息 
{ 
char num; 
student *p=head; 
printf("\n请输入要修改的学生的学号:"); 
scanf("%s",num); 
while(p) 
{ 
if(!strcmp(p-》sno,num)) 
break; 
else 
p=p-》next; 
} 
if(p==NULL) 
{ 
printf("\n错误:没有此学生的信息!\n"); 
return; 
} 
LinePrint(p); 
printf("\n请输入要修改的该学生的信息:"); 
printf("\n1.姓名"); 
printf("\n2.性别"); 
printf("\n3.年龄"); 
printf("\n4.所在的系"); 
printf("\n5.所在的班"); 
printf("\n6.所在的年级"); 
char name1; 
int select; 
fflush(stdin); 
scanf("%d",&select); 
printf("\n请输入新的信息:"); 
switch(select) 
{ 
case 1: 
scanf("%s",name1); 
strcpy(p-》sname,name1); 
break; 
case 2: 
scanf("%s",sex1); 
strcpy(p-》sex,sex1); 
break; 
case 3: 
scanf("%s",age1); 
strcpy(p-》age,age1); 
break; 
case 4: 
scanf("%s",depart1); 
strcpy(p-》depart,depart1); 
break; 
case 5: 
scanf("%s",class1); 
strcpy(p-》classs,class1); 
break; 
case 6: 
scanf("%s",grade1); 
strcpy(p-》grade,grade1); 
break; 
default: 
printf("\nError!"); 
break; 
} 
LinePrint(p); 
return; 
} 
void del()// 删除某学生的信息 
{ 
student *p=head,*temp=head,*s; 
char num1; 
printf("\n请输入要删除的学生的学号:"); 
scanf("%s",num1); 
while(p)//查找该学生所在的结点 
{ 
if(!strcmp(p-》sno,num1)) 
break; 
else 
{ 
temp=p; 
p=p-》next; 
} 
}//while 
if(!p)  
{ 
printf("\n不存在此学生的信息."); 
return; 
} 
LinePrint(p);//输出该学生的信息 
printf("\n请问真的要删除该学生的信息吗?(Y/N)"); 
char ch; 
fflush(stdin); 
scanf("%c",&ch); 
if(ch==’Y’||ch==’y’) 
{ 
s=p-》next; 
temp-》next=s; 
free(p); 
printf("\n已经删除该学生的信息."); 
} 
return; 
} 
void sort() //排序模块。将学生记录按学号从小到大排列。用起泡排序算法实现 
{ 
student *ptr,*s=head,*p; 
int count=0,count1; 
while(s)//统计链表结点个数 
{ 
count++; 
s=s-》next; 
} 
for(int i=1;i《count;i++) 
{ 
ptr=head; 
p=NULL; 
count1=count-i; //用来控制每轮起泡排序的终点,即每次把学号最小的结点移到倒数第i个结点 
while(ptr&&ptr-》next&&(count1--)) 
{ 
if(strcmp(ptr-》sno,ptr-》next-》sno)》0) 
{ 
s=ptr-》next; 
ptr-》next=s-》next; 
if(p==NULL) //ptr处于队头时 
head=s; 
else 
p-》next=s; 
s-》next=ptr; 
p=s; 
} 
else 
{ 
ptr=ptr-》next; 
if(p==NULL) //ptr处于队头时 
p=head; 
else 
p=p-》next; 
} 
} 
} 
return; 
} 
void quit() 
{ 
char ch; 
printf("\n真的要退出?(Y/N)"); 
fflush(stdin); 
scanf("%c",&ch); 
if(ch==’Y’||ch==’y’) 
exit(0); 
return; 
} 
int main() 
{ 
int option; 
printf("\nCopyright@2005 KongXinCai All rights reserved."); 
printf("\n欢迎使用学生信息管理系统!\n"); 
//登录模块 
int icheck=0; 
while(icheck《3) 
{ 
if(LogOn()==0) 
icheck++; 
else 
break; 
} 
if(icheck==3) 
{ 
printf("\n连续登录三次不成功,退出!"); 
exit(0); 
} 
//系统界面 
while(1) 
{ 
printf("\n\n请选择需要的服务:"); 
printf("\n1.注册"); 
printf("\n2.查询"); 
printf("\n3.修改"); 
printf("\n4.删除"); 
printf("\n5.排序"); 
printf("\n7.求平均");
printf("\n6.退出\n"); 
scanf("%d",&option); 
switch(option) 
{ 
case 1: 
regist(); 
break; 
case 2: 
search(); 
break; 
case 3: 
modify(); 
break; 
case 4: 
del(); 
break; 
case 5: 
sort(); 
break; 
case 6: 
quit(); 
break; 
} 
} 
return 0; 
}

OK,关于学生信息管理系统c语言和用C语言编程学生信息管理系统!的内容到此结束了,希望对大家有所帮助。

学生信息管理系统c语言(用C语言编程学生信息管理系统!)

本文编辑:admin

更多文章:


mariadb忘记密码(mysql用户密码忘记了怎么办)

mariadb忘记密码(mysql用户密码忘记了怎么办)

大家好,mariadb忘记密码相信很多的网友都不是很明白,包括mysql用户密码忘记了怎么办也是一样,不过没有关系,接下来就来为大家分享关于mariadb忘记密码和mysql用户密码忘记了怎么办的一些知识点,大家可以关注收藏,免得下次来找不

2026年10月15日 07:50

mysql端口号(如何查看自己数据库的端口号)

mysql端口号(如何查看自己数据库的端口号)

“mysql端口号”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看mysql端口号(如何查看自己数据库的端口号)!

2026年10月15日 06:30

printf打印16进制(C语言 十六进制怎么输出)

printf打印16进制(C语言 十六进制怎么输出)

大家好,今天小编来为大家解答以下的问题,关于printf打印16进制,C语言 十六进制怎么输出这个很多人还不知道,现在让我们一起来看看吧!

2026年10月15日 06:00

avantage怎么设置为中文(Avantage安装丢失GIT)

avantage怎么设置为中文(Avantage安装丢失GIT)

大家好,如果您还对avantage怎么设置为中文不太了解,没有关系,今天就由本站为大家分享avantage怎么设置为中文的知识,包括Avantage安装丢失GIT的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月15日 03:00

ospf协议的作用是什么(OSPF路由协议的作用是什么)

ospf协议的作用是什么(OSPF路由协议的作用是什么)

“ospf协议的作用是什么”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看ospf协议的作用是什么(OSPF路由协议的作用是什么)!

2026年10月15日 02:40

方案对比特效js(在一个网页中如何实现两个JS特效)

方案对比特效js(在一个网页中如何实现两个JS特效)

各位老铁们好,相信很多人对方案对比特效js都不是特别的了解,因此呢,今天就来为大家分享下关于方案对比特效js以及在一个网页中如何实现两个JS特效的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月15日 02:10

activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)

activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)

今天给各位分享登陆视频监控网页时提示activex控件未注册,怎么解决的知识,其中也会对登陆视频监控网页时提示activex控件未注册,怎么解决进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 20:30

学生信息管理系统c语言(用C语言编程学生信息管理系统!)

学生信息管理系统c语言(用C语言编程学生信息管理系统!)

今天给各位分享用C语言编程学生信息管理系统!的知识,其中也会对用C语言编程学生信息管理系统!进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 20:20

excel连接sql数据库教程(excel怎么连接sql数据库)

excel连接sql数据库教程(excel怎么连接sql数据库)

本篇文章给大家谈谈excel连接sql数据库教程,以及excel怎么连接sql数据库对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月14日 19:40

null s brawl(null和空字符有区别吗)

null s brawl(null和空字符有区别吗)

今天给各位分享null和空字符有区别吗的知识,其中也会对null和空字符有区别吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 19:00

最近更新

广告推广app(常见的app推广方式)
2026-10-15 09:20:01 浏览:0
热刺vs马赛比赛(热刺赛程比分)
2026-10-15 09:10:01 浏览:0
热门文章

标签列表