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

游戏安利 2024-12-25 15:29:45

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

挺好的一个题目啊

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


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


但我可不愿意帮人写作业

网上很多类似的,你可以参考下:

#include

#include struct student {

char name[30];

float math;

float chinese;

float english;

float erage;

};

int MenuCho(void);

int EnterAccount(void);

void Enter(struct student fst);

void Amend(struct student src);

void Delete(struct student next);

void Print(struct student out);

main()

{struct student one[100] = {0}, look = one;

int menu, t;

while ((menu = MenuCho()) != 0)

if (menu >= 1 && menu <= 4 && (t = EnterAccount())) {

look = one + t;

switch (menu) {

case 1:

Enter(look);

break;

case 2:

if (strcmp(look->name, ""))

printf("学号:%dn姓名: %sn语文成绩: %.1fn数学成绩:%.1fn英语成绩: %fn平均"成绩:%.1fn",

t, look->name, look->chinese, look->math, look->english, look->erage);

else

printf("对不起,该学号不存在!n");

break;

case 3:

Amend(look);

break;

case 4:

Delete(look);

break;

}}

else if (menu == 5)

Print(one);

else

printf("错误的请求!n");

return 0;

}int MenuCho(void)

{int cho;

printf("请选择:n"

"1 - 新建学生信息n"

"2 - 查找学生信息n"

"3 - 修改学生信息n"

"4 - 删除学生信息n"

"5 - 打印学生信息n"

"0 - 退出n");

scanf("%d", &cho);

return cho;

}int EnterAccount(void)

{int ret;

printf("请输入学号:n");

scanf("%d", &ret);

if (ret >= 1 && ret <= 100)

return ret -1;

return 0;

}void Enter(struct student fst)

{printf("请输入学生姓名、语文成绩、数学成绩、英语成绩和平均成绩n");

scanf("%s%f%f%f%f", fst->name, &fst->chinese, &fst->math, &fst->english, &fst->erage);

}void Amend(struct student src)

{int t;

printf("请选择:n"

"1 - 修改学生姓名n"

"2 - 修改学生语文成绩n"

"3 - 修改学生数学成绩n"

"4 - 修改学生英语成绩n"

"5 - 修改学生平均成绩n");

scanf("%d", &t);

switch (t) {

case 1:

printf("请输入学生的新名字n");

scanf("%s", src->name);

break;

case 2:

printf("请输入学生新的语文成绩n");

scanf("%f", &src->chinese);

break;

case 3:

printf("请输入学生新的数学成绩n");

scanf("%f", &src->math);

break;

case 4:

printf("请输入学生新的英语成绩n");

scanf("%f", &src->english);

break;

case 5:

printf("请输入学生新的平均成绩n");

scanf("%f", &src->erage);

break;

}}

void Delete(struct student next)

{strcpy(next->name, "");

next->math = next->english = next->chinese = next->erage = 0.0;

}void Print(struct student out)

{struct student up;

for (up = out; out < &up[100]; out++)

if (strcmp(out->name, ""))

printf("学号:%dn姓名: %sn语文成绩: %.1fn数学成绩:%.1fn英语成绩: %.1fn平均成绩:%.1fn",

out-up + 1, out->name, out->chinese, out->math, out->english, out->erage);

}

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

不是我说你,象你这种问题,求了一个完整的程序,本来就不好弄,人家费力给你解决,还不给高分,看了就没兴趣答了,本来有个年前用MFC做的数据库管理系统,偏不发,哼~~

C语言

,学生信息管理系统 我有做好的

网上没有的

原创作品

采纳哦!

稍微用了点c++(你给的分太低)

如下图所示:

studf.txt

作日志文件:

C语言 学生管理系统

#include

#include

#include

#include

#define max 20

typedef struct student //学生

{char sno[max]; // 学号

char sname[max]; //姓名

char [max]; //性别

char age[max]; //年龄

char depart[max]; //系

char classs[max]; //班

char grade[max]; //年级

struct student next;

} student;

student head;

int LogOn() //登录模块,已实现输入密码不回显,如果中途发现输错某几位,可退格键重输

{char username[max],password[max];

printf("n请输入用户名:");

scanf("%s",username);

printf("n请输入密码(最多15位):");

//开始以不回显且支持退格方式获取输入密码

int i=0;

while((i>=0)&&(password[i++]=getch())!=13)//条件i>=0是用于限制退格的范围

{if(password[i-1]=='b')//对退格键的处理

{printf("%c%c%c",'b','0','b');

i=i-2;

}else

printf("");

}password[--i]='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->);

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->);

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 mod;//查询方式

char no[max],name[max],departm[max],clss[max],grades[max]; //用来接收查询关键字

while(1)

{printf("n请选择查询方式");

printf("n1.按学号查询");

printf("n2.按姓名查询");

printf("n3.按所在系查询");

printf("n4.按所在班级查询");

printf("n5.按所在年级查询");

printf("n6.打印全部学生信息");

printf("n7.返回主菜单n");

scanf("%d",&mod);

student p=head,temp;

switch(mod)

{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[max];

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[max],1[max],age1[max],depart1[max],class1[max],grade1[max];

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",1);

strcpy(p->,1);

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[max];

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

{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("nn请选择需要的服务:");

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;

}

c语言学生管理系统,请把每行代码解释清楚,谢谢了

基本上不用再注释了,用到都是比较基本的句型,有几处修改了一下

#include

struct student

{int num; //学号

char name[20];//姓名

float score; //分数

}yiban[29]; //总人数值为29

int s=0; //s为全局变量,表示总人数

int main()

{int tianjia();

int shanchu();

int chaxun();

int xiugai();

int paixu();

int xuanze;

while(1){

printf("

");

printf("学生信息管理系统

");

printf(" 1.初始化学生信息

");

printf(" 2.删除学生信息

");

printf(" 3.查询学生信息

");

printf(" 4.修改学生信息

");

printf(" 5.退出

");

printf("

");

printf("

");

printf("请输入你的选择

");

scanf("%d",&xuanze);

switch(xuanze)

{case 1:{tianjia();break;}

case 2:{shanchu();break;}

case 3:{chaxun();break;}

case 4:{xiugai();break;}

case 5:{paixu();break;}

}}

return 0;

}int tianjia()

{int i,j;

printf("请输入需要添加的学生个数:

");

scanf("%d",&j);

s+=j; //总人数增加

for(i=0;i

{printf("请输入添加的第%d个数据(输入格式为 学号,姓名,成绩):

",i+1);

scanf("%d,%s,%f",&yiban[i].num,yiban[i].name,&yiban[i].score);}

printf("

");

printf("添加之后的数据为:

");

printf("学号—姓名—性别

");

for(i=0;i

printf("%d—%s—%f

",yiban[i].num,yiban[i].name,yiban[i].score);

return 0;

}int shanchu()

{ int i,a;

printf("请问你想删除第几个学生的信息:

");

scanf("%d",&i);

printf("

");

for(a=i;a

yiban[a]=yiban[a+1];

s--; //删除之后总人数减一

printf("删除之后学生的信息为:

");

for(a=0;a

printf("%2d—%s—%f

",yiban[a].num,yiban[a].name,yiban[a].score);

printf("

");

return 0;

}int chaxun()

{return 0;}

int xiugai()

{return 0;}

int paixu()

{return 0;}

#include

#include

#include

#include

#define N 200

int input(struct Student stu[N]);

void se(struct Student stu[N],int n);

int load(struct Student stu[N]);

void output(struct Student stu[N],int n);

int insert(struct Student stu_se[],int n);

void sort(struct Student stu_se[],int n);

void find(struct Student stu_se[],int n);

int delete_stu(struct Student stu_se[],int n);

typedef struct Student

{char num[20];

char name[20];

char ;

int age;

float score[3];

float tolscore;

float e;

}STU;

int main()

{int total=0,a;

STU stu[N];

printf("☆☆☆☆☆学籍管理系统☆☆☆☆☆nn");

do{

printf("nn");

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:se(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;

}//("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

{scanf("%s",stu[i].num);

scanf("%s",stu[i].name);

scanf(" %c",&stu[i].); //%c前的空格用于接收上一个字符串后的空格、回车、制表符,etc

scanf("%d",&stu[i].age);

sum=0;

for(j=0;j<3;j++)

{scanf("%f",&stu[i].score[j]);

sum+=stu[i].score[j];

}stu[i].tolscore=sum;

stu[i].e=sum/3.0f;

}return (n);

}void se(struct Student stu[],int n)

{FILE fp;

int i;

char filename[20];

printf("请输入文件名:");

scanf("%s",filename);

if(strchr(filename,'.')==NULL)

strcat(filename,".dat");

if((fp=fopen(filename,"wb"))==NULL)

{printf("Cannot open this filen");

("pause");

return;

}fwrite(&n,sizeof(int),1,fp);

for(i=0;i

fwrite(&stu[i],sizeof(struct Student),1,fp);

fclose(fp);

printf("保存成功!");

("pause");

return;

}int load(struct Student stu_se[])

{FILE fp;

int i,n;

char filename[20];

printf("请输入要加载的文件名: ");

//getchar();

scanf("%s",filename);

// gets(filename);

if(strchr(filename,'.')==NULL)

strcat(filename,".dat");

if((fp=fopen(filename,"rb"))==NULL)

{printf("Cannot open this filen");

("pause");

return 0;

}fread(&n,sizeof(int),1,fp);

for(i=0;i

fread(&stu_se[i],sizeof(struct Student),1,fp);

fclose(fp);

("cls");

printf("文件加载成功!数据如下");

output(stu_se,n);

return n;

}void output(struct Student stu_se[],int n)

{int i,j;

// ("cls");

printf("n学号t姓名t性别t年龄t成绩一t成绩二t成绩三t总分t平均分n");

for(i=0;i

{printf("%st",stu_se[i].num);

printf("%st",stu_se[i].name);

printf("%ct",stu_se[i].);

printf("%dt",stu_se[i].age);

for(j=0;j<3;j++)

printf("%gt",stu_se[i].score[j]);

printf("%gt",stu_se[i].tolscore);

printf("%.2f",stu_se[i].e);

putchar(10);

}("pause");

return;

}int insert(struct Student stu_se[],int n)

{int i,j,num=0;

float sum=0;

struct Student s;

char flag;

if(n>200)

{printf("空间已满,无法插入!n");

return 0;

}// load(stu_se,n-1);

do{

printf("n请依次输入学号、姓名、性别、年龄及三门课成绩n");

scanf("%s",s.num);

scanf("%s",s.name);

scanf(" %c",&s.); //%c前的空格用于接收上一个字符串后的空格、回车、制表符,etc

scanf("%d",&s.age);

for(j=0;j<3;j++)

scanf("%f",&s.score[j]);

sum=0;

for(j=0;j<3;j++)

sum+=s.score[j];

s.tolscore=sum;

s.e=sum/3;

num++;

for(i=n+num-1;strcmp(stu_se[i-1].num,s.num)>0&&i>0;i--)

stu_se[i]=stu_se[i-1];

stu_se[i]=s;

printf("插入成功!");

fflush(stdin);

do

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

flag=getch();

}while(flag!='y'&&flag!='n');

}while(flag=='y');

("pause");

//se(stu_se,n);

return num;

}void sort(struct Student stu_se[],int n)

{int a,i,j;

struct Student t;

("cls");

printf("n1-按序号排序n2-按成绩排序n请选择:");

scanf("%d",&a);

while(a!=1&&a!=2)

{printf("输入有误,请重新输入!n");

scanf("%d",&a);

}//load(stu_se,n);

if(a==1)

{for(i=0;i

for(j=0;j

{if(strcmp(stu_se[j].num,stu_se[j+1].num)>0)

{t=stu_se[j];

stu_se[j]=stu_se[j+1];

stu_se[j+1]=t;

}}

}else

{for(i=0;i

for(j=0;j

{if(stu_se[j].e

{t=stu_se[j];

stu_se[j]=stu_se[j+1];

stu_se[j+1]=t;

}}

}// se(stu_se,n);

printf("排序成功!n");

output(stu_se,n);

return;

}void find(struct Student stu_se[],int n)

{char ch;

do{

int i,j,w=1;

char search[20];

//load(stu_se,n);

printf("请输入学生的学号或姓名");

scanf("%s",search);

for(i=0;i

{if(strcmp(stu_se[i].num,search)==0||strcmp(stu_se[i].name,search)==0)

{printf("查找成功,该学生的信息为:n");

printf("%st",stu_se[i].num);

printf("%st",stu_se[i].name);

printf("%ct",stu_se[i].);

printf("%dt",stu_se[i].age);

for(j=0;j<3;j++)

printf("%gt",stu_se[i].score[j]);

printf("%gt",stu_se[i].tolscore);

printf("%.2f",stu_se[i].e);

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_se[],int n)

{int i,w=1;

char search[20];

// load(stu_se,n);

printf("n请输入要删除学生的姓名或学号n");

scanf("%s",search);

for(i=0;i

if(strcmp(stu_se[i].num,search)==0||strcmp(stu_se[i].name,search)==0)

{w=0;

break;

}if(w)

{printf("无此学生!n");

return 0;

}for(;i

stu_se[i]=stu_se[i+1];

printf("删除成功!n");

// se(stu_se,n-1);

return 1;

}之前随便写的 忘了有没有调试 有问题再私信找我 采纳哦~~

//这是我以前的课程设计,

/【学生管理系统】/

//modify

#include

#include

#include

#include

#include

#define N 100

typedef struct student

{int num; //学号,姓名,年龄,性别,出生年月,地址,电话,

char name[18];

char ;

int age;

int y,m;

int ;

char add[30];

char mail[20];

int res;

int stu;

} SDate;

int PassWord();

void Menu();

int Input_Cho(); //函数声明

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 cho);

int Info_Add(SDate stu, int count);

int main()

{SDate stu[N];

int ret=0,res=0,cho=0;

char ch;

loop:

ret=PassWord(); //登录函数 默认密码为admin

if(!ret)

{("cls");

printf("ntt密码错误或错误!n"); //默认密码:admin

("pause");

("cls");

goto loop;

}("cls");

e:

Menu(); //菜单显示函数

printf("你的选择是?n");

scanf("%d",&ret);

switch(ret)

{case 1:

cho=Input_Cho(); //InputCho()数据输入方式选择函数

if(cho==1)

res=Info_Input(stu,res); //键盘输入函数

else if(cho==2)

res=Input_file(stu); //文件读取函数

else

{("cls");

goto e;

}break;

case 2:

if(res==0)

{("cls");

printf("没有数据输入,请重新选择!n");

goto e;

}else

Info_print(stu,res);

break;

case 3:

if(res==0||res==1)

{("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",&cho);

res=Info_Del(stu, res, cho);

break;

case 7:

printf("请输入需要修改的学号:");

scanf("%d",&cho);

Info_Change(stu,res,cho);

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')

{("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("nt n");

printf("tt: %d+%d=?n",a,b);

printf("tt 为:");

scanf("%d",&d);

if(c==d)

return 1;

else

return 0;

}int PassWord() //登录模块

{int i=0;

char passWord[18];

char p[]="admin"; //默认密码设置

char ch;

printf("t 欢迎使用学生信息管理系统n");

printf("n");

printf("tt用户名:Adminn");

printf("n");

printf("tt密码:");

while((ch=getch())!=13)

{putchar('');

passWord[i]=ch;

i++;

}passWord[i]='0';

if(strcmp(p,passWord)==0)

yanzheng();

else

return 0;

}void Menu() //菜单模块

{printf("t 欢迎使用学生信息管理系统n");

printf("nn");

printf(" tt1、学生信息录入tt n");

printf(" tt2、学生信息浏览tt n");

printf(" tt3、学生信息排序tt n");

printf(" tt4、学生信息查找tt n");

printf(" tt5、学生信息添加tt n");

printf(" tt6、学生信息删除tt n");

printf(" tt7、学生信息修改tt n");

printf(" tt8、学生信息保存tt n");

printf("tt9、退出ttt n");

printf("n");

}int Input_Cho() //数据输入方式选择

{int i;

("cls");

printf("t 欢迎使用学生信息管理系统n");

printf("tt1、键盘录入n");

printf("tt2、文件读取n");

printf("tt0、返回n");

printf("t你的选择是?");

scanf("%d",&i);

return i;

}int Info_Input(SDate stu,int count) //信息从键盘输入模块

{SDate p;

p=stu;

("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->);

printf("请输入该学生出生年月:n");

scanf("%d%d",&p->y,&p->m);

printf("请输入该学生住址:n");

scanf("%s",p->add);

printf("请输入该学生联系电话:n");

scanf("%d",&p->);

printf("请输入该学生E-Mail:n");

scanf("%s",p->mail);

count++;

p++;

("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 %sn",&p->num,p->name,&p->,&p->age,&p->y,&p->m,&p->,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-Mailn");

for(p=stu; p

printf("%d %s %c %d %d-%d %d %s %sn",p->num,p->name,p->,p->age,p->y,p->m,p->,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

fprintf(fp,"%d %s %c %d %d %d %d %s %sn",p->num,p->name,p->,p->age,p->y,p->m,p->,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

{for(j=0; j

{if((stu[j].num)>(stu[j+1].num))

{p=stu[j];

stu[j]=stu[j+1];

stu[j+1]=p;

}}

}printf("排序完成!n");

}void Exit() //退出模块

{printf("谢谢使用!n");

exit(1);

}void Info_Seach(SDate stu,int n) //查询模块,目前仅支持学号或姓名的精准查询

{int num,cho;

char name[10];

int flag=-1,i;

("cls");

printf("请输入查询方式:t1、学号查询nt t2、名字查询n");

printf("您的选择是?");

scanf("%d",&cho);

if(cho==1)

{lab1:

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

scanf("%d",&num);

for(i=0; i

{if(num==stu[i].num)

{flag=i;

printf("%d %s %c %d %d-%d %d %s %sn",stu[i].num,stu[i].name,stu[i].,stu[i].age,stu[i].y,stu[i].m,stu[i].,stu[i].add,stu[i].mail);

}}

if(flag==-1)

{printf("未找到!请重新选择n");

printf("1、返回继续查询n2、退出查询,返回主菜单n3、退出程序你的选择是?");

scanf("%d",&cho);

if(cho==1)

{("cls");

goto lab1;

}if(cho==2)

goto end;

else

Exit();

}}

else if(cho==2)

{lab2:

printf("请输入需要查找的姓名:n");

scanf("%s",name);

for(i=0; i

if(strcmp(name,stu[i].name)==0)

{flag=i;

printf("%d %s %c %d %d-%d %d %s %sn",stu[i].num,stu[i].name,stu[i].,stu[i].age,stu[i].y,stu[i].m,stu[i].,stu[i].add,stu[i].mail);

}if(flag==-1)

{printf("您的输入有误!请重新选择n");

printf("tt1、返回继续查询ntt2、退出查询,返回主菜单ntt3、退出程序ttn你的选择是?");

scanf("%d",&cho);

if(cho==1)

{("cls");

goto lab2;

}if(cho==2)

goto end;

else

Exit();

}}

end:

;}

void Info_Change(SDate stu,int n,int Num) //信息修改模块

{int i;

for(i=0; i

if(stu[i].num==Num)

{printf("请输入该学生姓名:n");

scanf("%s",stu[i].name);

printf("请输入该学生年龄:n");

scanf("%d",&stu[i].age);

getchar();

printf("请输入该学生性别:n");

scanf("%c",&stu[i].);

printf("请输入该学生出生年月:n");

scanf("%d%d",&stu[i].y,&stu[i].m);

printf("请输入该学生住址:n");

scanf("%s",stu[i].add);

printf("请输入该学生联系电话:n");

scanf("%d",&stu[i].);

printf("请输入该学生E-Mail:n");

scanf("%s",stu[i].mail);

printf("学号为%d的同学信息修改完成!n",Num);

}}

int Info_Del(SDate stu, int n, int del) //信息删除模块

{int i,j;

for(i=0; i

if(stu[i].num==del)

for(j=i; j

stu[j]=stu[j+1];

n--;

printf("删除成功!n");

return n;

}int Info_Add(SDate stu,int count) //信息添加模块

{SDate p;

("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->);

printf("请输入该学生出生年月:n");

scanf("%d%d",&p->y,&p->m);

printf("请输入该学生住址:n");

scanf("%s",p->add);

printf("请输入该学生联系电话:n");

scanf("%d",&p->);

printf("请输入该学生E-Mail:n");

scanf("%s",p->mail);

count++;

p++;

("cls");

printf("请输入第%d个学生学号(输入0结束):n",count+1);

scanf("%d",&p->num);

}return count;

}

参考如下学生信息管理系统的C源代码吧。

#include

#include

/定义学生结构体/

struct Student

{char ID[20];

char Name[20];

float Mark1;

float Mark2;

float Mark3;

float Average;

};

/声明学生数组及学生数量/

struct Student students[1000];

int num=0;

/求平均值/

float Avg(struct Student stu)

{return (stu.Mark1+stu.Mark2+stu.Mark3)/3;

}/通过学号返回数组下标/

int Student_SearchByIndex(char id[])

{int i;

for (i=0;i

{if (strcmp(students[i].ID,id)==0)

{return i;

}}

return -1;

}/通过姓名返回数组下标/

int Student_SearchByName(char name[])

{int i;

for (i=0;i

{if (strcmp(students[i].Name,name)==0)

{return i;

}}

return -1;

}/显示单条学生记录/

void Student_DisplaySingle(int index)

{printf("%10s%10s%8s%8s%8s%10s

","学号","姓名","成绩","成绩","成绩","平均成绩");

printf("-------------------------------------------------------------

");

printf("%10s%10s%8.2f%8.2f%8.2f%10.2f

",students[index].ID,students[index].Name,

students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);

}/插入学生信息/

void Student_Insert()

{while(1)

{printf("请输入学号:");

scanf("%s",&students[num].ID);

getchar();

printf("请输入姓名:");

scanf("%s",&students[num].Name);

getchar();

printf("请输入成绩:");

scanf("%f",&students[num].Mark1);

getchar();

printf("请输入成绩:");

scanf("%f",&students[num].Mark2);

getchar();

printf("请输入成绩:");

scanf("%f",&students[num].Mark3);

getchar();

students[num].Average=Avg(students[num]);

num++;

printf("是否继续?(y/n)");

if (getchar()=='n')

{break;

}}

}/修改学生信息/

void Student_Modify()

{//float mark1,mark2,mark3;

while(1)

{char id[20];

int index;

printf("请输入要修改的学生的学号:");

scanf("%s",&id);

getchar();

index=Student_SearchByIndex(id);

if (index==-1)

{printf("学生不存在!

");

}else

{printf("你要修改的学生信息为:

");

Student_DisplaySingle(index);

printf("-- 请输入新值--

");

printf("请输入学号:");

scanf("%s",&students[index].ID);

getchar();

printf("请输入姓名:");

scanf("%s",&students[index].Name);

getchar();

printf("请输入成绩:");

scanf("%f",&students[index].Mark1);

getchar();

printf("请输入成绩:");

scanf("%f",&students[index].Mark2);

getchar();

printf("请输入成绩:");

scanf("%f",&students[index].Mark3);

getchar();

students[index].Average=Avg(students[index]);

}printf("是否继续?(y/n)");

if (getchar()=='n')

{break;

}}

}/删除学生信息/

void Student_Delete()

{int i;

while(1)

{char id[20];

int index;

printf("请输入要删除的学生的学号:");

scanf("%s",&id);

getchar();

index=Student_SearchByIndex(id);

if (index==-1)

{printf("学生不存在!

");

}else

{printf("你要删除的学生信息为:

");

Student_DisplaySingle(index);

printf("是否真的要删除?(y/n)");

if (getchar()=='y')

{for (i=index;i

{students[i]=students[i+1];//把后边的对象都向前移动

}num--;

}getchar();

}printf("是否继续?(y/n)");

if (getchar()=='n')

{break;

}}

}/按姓名查询/

void Student_Select()

{while(1)

{char name[20];

int index;

printf("请输入要查询的学生的姓名:");

scanf("%s",&name);

getchar();

index=Student_SearchByName(name);

if (index==-1)

{printf("学生不存在!

");

}else

{printf("你要查询的学生信息为:

");

Student_DisplaySingle(index);

}printf("是否继续?(y/n)");

if (getchar()=='n')

{break;

}}

}/按平均值排序/

void Student_SortByAverage()

{int i,j;

struct Student tmp;

for (i=0;i

{for (j=1;j

{if (students[j-1].Average

{tmp=students[j-1];

students[j-1]=students[j];

students[j]=tmp;

}}

}}

/显示学生信息/

void Student_Display()

{int i;

printf("%10s%10s%8s%8s%8s%10s

","学号","姓名","成绩","成绩","成绩","平均成绩");

printf("-------------------------------------------------------------

");

for (i=0;i

{printf("%10s%10s%8.2f%8.2f%8.2f%10.2f

",students[i].ID,students[i].Name,

students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);

}}

/将学生信息从文件读出/

void IO_ReadInfo()

{FILE fp;

int i;

if ((fp=fopen("Database.txt","rb"))==NULL)

{printf("不能打开文件!

");

return;

}if (fread(&num,sizeof(int),1,fp)!=1)

{num=-1;

}else

{for(i=0;i

{fread(&students[i],sizeof(struct Student),1,fp);

}}

fclose(fp);

}/将学生信息写入文件/

void IO_WriteInfo()

{FILE fp;

int i;

if ((fp=fopen("Database.txt","wb"))==NULL)

{printf("不能打开文件!

");

return;

}if (fwrite(&num,sizeof(int),1,fp)!=1)

{printf("写入文件错误!

");

}for (i=0;i

{if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1)

{printf("写入文件错误!

");

}}

fclose(fp);

}/主程序/

void main()

{int cho;

IO_ReadInfo();

while(1)

{/主菜单/

printf("

------ 学生成绩管理系统------

");

printf("1. 增加学生记录

");

printf("2. 修改学生记录

");

printf("3. 删除学生记录

");

printf("4. 按姓名查询学生记录

");

printf("5. 按平均成绩排序

");

printf("6. 退出

");

printf("请选择(1-6):");

scanf("%d",&cho);

getchar();

switch(cho)

{case 1:

Student_Insert();

break;

case 2:

Student_Modify();

break;

case 3:

Student_Delete();

break;

case 4:

Student_Select();

break;

case 5:

Student_SortByAverage();

Student_Display();

break;

case 6:

exit(0);

break;

}IO_WriteInfo();

}}

版权声明:本文内容由互联。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发 836084111@qq.com 邮箱删除。