C语言学生管理系统.docx

上传人:b****5 文档编号:28203957 上传时间:2023-07-09 格式:DOCX 页数:21 大小:17.85KB
下载 相关 举报
C语言学生管理系统.docx_第1页
第1页 / 共21页
C语言学生管理系统.docx_第2页
第2页 / 共21页
C语言学生管理系统.docx_第3页
第3页 / 共21页
C语言学生管理系统.docx_第4页
第4页 / 共21页
C语言学生管理系统.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C语言学生管理系统.docx

《C语言学生管理系统.docx》由会员分享,可在线阅读,更多相关《C语言学生管理系统.docx(21页珍藏版)》请在冰豆网上搜索。

C语言学生管理系统.docx

C语言学生管理系统

#include

#include

#include

#include

#include

#defineCOURSE_NUM3//预定义定义3个科目

/*学生信息管理系统*/

/*一个学生的属性有:

姓名、学号、(性别、年龄、地址略)、成绩(科目1、2、3...+总分+平均分)、排名*/

/*统计:

成绩(各科总分、平均分、及格率)略、在录人数*/

/*主菜单1.添加一个学生(姓名、学号、性别、年龄、地址)

2.添加学生成绩(通过搜索学号显示确认某个学生信息,并添加相应成绩)

3.查找-修改/删除学生信息(副菜单:

通过搜索学号或姓名显示某个学生信息,并做出修改/删除)

4.显示全部学生信息

5.保存学生记录

6.清除所有学生记录

7.退出系统*/

/*定义一个结构体*/

structStudent

{

charName[40];

charID[40];

/*charSex;

intAge;

charAdd[20];*/

floatCourse[COURSE_NUM];

floatSum;

floatAve;

intNo;

intflag;//用于标记是否已录入成绩

structStudent*next;

}*head,*temp;

//定义结构体别名

typedefstructStudentStudent;

/*初始化头节点*/

voidInitHead()

{

head=NULL;

}

/*创建新链节*/

voidCreate_Node()

{

Student*p1=NULL,*p2=NULL;

p1=(Student*)malloc(sizeof(Student));//申请内存

p2=head;

if(head==NULL)

{

head=p1;

}else{

while(p2->next!

=NULL)

{

p2=p2->next;

}

p2->next=p1;

}

p1->next=NULL;

temp=p1;

}

/*测试链表*/

voidTest_LinkList()

{

Create_Node();

Create_Node();

Create_Node();

Create_Node();

Create_Node();

printf("END");

}

/*显示菜单*/

voidMenu();

/*1.添加一个学生*/

boolRepeat_ID(char*ID);//检查学号是否重复

voidNew_Student();//新添加一个学生

/*2.添加学生成绩*/

voidCourse_NO();//进行排名

voidAdd_Course();//添加某一个学生成绩

/*3.查找-修改/删除学生信息*/

intSearch_ByName();//通过名字搜索

intSearch_ByID();//通过学号搜索

voidSearch_Info();

voidCourse_Change();//更改成绩

voidDelete_Student();//删除某个学生

/*4.显示全部学生信息*/

voidShow_All();

/*5.保存学生记录*/

voidSave();//保存至文件

voidLoad();//从文件载入

voidNNT();//统计人数

/*6.清除所有学生记录*/

voidDelete_All();

/*系统帮助*/

voidhelp();

/*主函数*/

intmain()

{

InitHead();//初始化链表头

Load();

//Test_LinkList();

while

(1)

{

Menu();//显示菜单

charch=getchar();//接收字符命令

system("cls");//清空屏幕

switch(ch)

{

case'1':

New_Student();break;

case'2':

Add_Course();break;

case'3':

Search_Info();break;

case'4':

Show_All();break;

case'5':

Save();break;

case'6':

Delete_All();break;

case'7':

exit(0);break;

case'0':

help();break;

default:

break;

}

}

return0;

}

/*显示菜单*/

voidMenu()

{

printf("------------------学生信息管理系统-----------------------");printf("\n\n");

NNT();

printf("\t");printf("1.添加一个学生");printf("\n");

printf("\t");printf("2.添加学生成绩");printf("\n");

printf("\t");printf("3.查找-修改/删除学生信息");printf("\n");

printf("\t");printf("4.显示全部学生信息");printf("\n");

printf("\t");printf("5.保存学生记录");printf("\n");

printf("\t");printf("6.清除学生记录");printf("\n");

printf("\t");printf("7.退出系统");printf("\n");

printf("\t");printf("0.系统帮助");printf("\n");

printf("\t");printf("请选择功能:

");

}

/*1.添加一个学生*/

boolRepeat_ID(char*ID)

{

temp=head;

if(head==NULL)

{

returnfalse;

}

while(temp!

=NULL)

{

if(strcmp(temp->ID,ID)==0)

{

returntrue;

}

temp=temp->next;

}

returnfalse;

}

voidNew_Student()

{

getchar();

printf("------------------添加一个学生-----------------------");printf("\n\n");

charName[40];

charID[40];

Student*stu;

printf("请输入姓名:

");

gets(Name);

printf("请输入学号:

");

gets(ID);

while(Repeat_ID(ID))

{

printf("学号已存在!

\n");

printf("请重新输入学号:

");

gets(ID);

}

Create_Node();

stu=head;

while(stu->next!

=NULL)

{

stu=stu->next;

}

strcpy(stu->Name,Name);

strcpy(stu->ID,ID);

stu->flag=0;

}

/*添加学生成绩*/

voidAdd_Course()

{

getchar();

if(head==NULL)

{

printf("无数据!

\n");

Sleep(1000);

return;

}

printf("------------------添加学生成绩-----------------------");printf("\n\n");

charID[40];

printf("请输入学号:

");

gets(ID);

temp=head;

while(temp!

=NULL)

{

if(strcmp(temp->ID,ID)==0)

{

break;

}

temp=temp->next;

}

if(temp==NULL)

{

printf("无此学号!

\n");

return;

}

if(temp->flag==1)

{

printf("该生成绩已存在!

\n");

return;

}

printf("姓名:

%s\n",temp->Name);

temp->Sum=0;

for(inti=0;i

{

printf("请输入成绩%d:

",i+1);

scanf("%f",&temp->Course[i]);

temp->Sum+=temp->Course[i];

}

temp->Ave=temp->Sum/COURSE_NUM;

printf("总分:

%.2f\n",temp->Sum);

printf("平均分:

%.2f\n",temp->Ave);

temp->flag=1;

Course_NO();

getchar();

}

voidCourse_NO()

{

if(head->next==NULL)

{

head->No=1;

return;

}

floatsum[100];

intnum=0;

temp=head;

while(temp!

=NULL)

{

sum[num++]=temp->Sum;

temp=temp->next;

}

for(inti=0;i

{

for(intj=i;j

{

if(sum[i]

{

floatt=sum[i];

sum[i]=sum[j];

sum[j]=t;

}

}

}

temp=head;

while(temp!

=NULL)

{

for(inti=0;i

{

if(sum[i]==temp->Sum)

{

temp->No=i+1;

break;

}

}

temp=temp->next;

}

}

/*3.查找-修改/删除学生信息*/

voidSearch_Info()

{

getchar();

if(head==NULL)

{

printf("无数据!

\n");

Sleep(1000);

return;

}

printf("------------------查找-修改/删除学生信息-----------------------");printf("\n\n");

while

(1)

{

printf("a.搜索姓名\n");

printf("b.搜索学号\n");

printf("c.退出\n");

printf("请选择:

");

charch=getchar();

intcheck;

switch(ch)

{

case'A':

case'a':

check=Search_ByName();break;

case'B':

case'b':

check=Search_ByID();break;

case'C':

case'c':

return;

default:

continue;

}

if(check==1&&temp->flag==1)

{

printf("1.修改成绩\n");

printf("2.直接删除\n");

printf("0.退出\n");

printf("请选择:

");

ch=getchar();

switch(ch)

{

case'1':

Course_Change();break;

case'2':

Delete_Student();break;

case'0':

return;

default:

continue;

}

getchar();

}

}

getchar();

}

intSearch_ByName()

{

getchar();

charName[40];

printf("请输入姓名:

");

gets(Name);

temp=head;

while(temp!

=NULL)

{

if(strcmp(temp->Name,Name)==0)

{

printf("姓名\t学号\t");

for(inti=1;i<=COURSE_NUM;i++)

printf("成绩%d\t",i);

printf("总分\t平均分\t排名\n");

printf("%s\t%s\t",temp->Name,temp->ID);

if(temp->flag==0)

{

for(inti=1;i<=COURSE_NUM;i++)

printf("无\t");

printf("无\t无\t无\n");

}else{

for(inti=0;i

printf("%.2f\t",temp->Course[i]);

printf("%.2f\t%.2f\t%d\n",temp->Sum,temp->Ave,temp->No);

}

break;

}

temp=temp->next;

}

if(temp==NULL)

{

printf("查无此人!

\n");

return0;

}

return1;

}

intSearch_ByID()

{

getchar();

charID[40];

printf("请输入学号:

");

gets(ID);

temp=head;

while(temp!

=NULL)

{

if(strcmp(temp->ID,ID)==0)

{

printf("姓名\t学号\t");

for(inti=1;i<=COURSE_NUM;i++)

printf("成绩%d\t",i);

printf("总分\t平均分\t排名\n");

printf("%s\t%s\t",temp->Name,temp->ID);

if(temp->flag==0)

{

for(inti=1;i<=COURSE_NUM;i++)

printf("无\t");

printf("无\t无\t无\n");

}else{

for(inti=0;i

printf("%.2f\t",temp->Course[i]);

printf("%.2f\t%.2f\t%d\n",temp->Sum,temp->Ave,temp->No);

}

break;

}

temp=temp->next;

}

if(temp==NULL)

{

printf("查无此人!

\n");

return0;

}

return1;

}

voidCourse_Change()

{

temp->Sum=0;

for(inti=0;i

{

printf("请输入成绩%d:

",i+1);

scanf("%f",&temp->Course[i]);

temp->Sum+=temp->Course[i];

}

temp->Ave=temp->Sum/COURSE_NUM;

printf("总分:

%.2f\n",temp->Sum);

printf("平均分:

%.2f\n",temp->Ave);

temp->flag=1;

Course_NO();

}

voidDelete_Student()

{

Student*p,*pr;

p=head;

if(temp==head)

{

head=head->next;

temp=NULL;

Course_NO();

return;

}

while(p!

=NULL)

{

if(temp==p)

{

pr->next=p->next;

temp=NULL;

Course_NO();

}

pr=p;

p=p->next;

}

}

/*4.显示全部学生信息*/

voidShow_All()

{

if(head==NULL)

{

printf("无数据!

\n");

Sleep(1000);

return;

}

printf("------------------显示全部学生信息-----------------------");printf("\n\n");

printf("姓名\t学号\t");

for(inti=1;i<=COURSE_NUM;i++)

printf("成绩%d\t",i);

printf("总分\t平均分\t排名\n");

temp=head;

while(temp!

=NULL)

{

printf("%s\t%s\t",temp->Name,temp->ID);

if(temp->flag==0)

{

for(inti=1;i<=COURSE_NUM;i++)

printf("无\t");

printf("无\t无\t无\n");

}else{

for(inti=0;i

printf("%.2f\t",temp->Course[i]);

printf("%.2f\t%.2f\t%d\n",temp->Sum,temp->Ave,temp->No);

}

temp=temp->next;

}

getchar();

}

/*5.保存学生记录*/

voidSave()

{

FILE*fp=fopen("学生记录.my","w");//以只写的形式打开文件

temp=head;

while(temp!

=NULL)

{

fprintf(fp,"%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t%d\n",

temp->Name,temp->ID,temp->Course[0],temp->Course[1],

temp->Course[3],temp->Sum,temp->Ave,temp->No,temp->flag);

temp=temp->next;

}

fclose(fp);//关闭文件

printf("已保存!

\n");

Sleep(2000);

}

voidLoad()

{

FILE*fp=fopen("学生记录.my","r");//以只读的形式打开文件

If(fp==NULL)return;

while(!

feof(fp))

{

Create_Node();//产生新节点

fscanf(fp,"%s\t%s\t%f\t%f\t%f\t%f\t%f\t%d\t%d\n",

temp->Name,temp->ID,&temp->Course[0],&temp->Course[1],

&temp->Course[2],&temp->Sum,&temp->Ave,&temp->No,&temp->flag);

}

fclose(fp);//关闭文件

}

voidNNT()

{

if(head==NULL)

{

printf("在录人数为0\n\n");

return;

}

intnnt=0;

temp=head;

while(temp!

=NULL)

{

nnt++;

temp=temp->next;

}

printf("在录人数为%d\n\n",nnt);

return;

}

voidDelete_All()

{

temp=head;

while(temp!

=NULL)

{

head=head->next;

temp=NULL;

temp=head;

}

printf("已清除在线记录!

");

Sleep(2000);

}

voidhelp()

{

printf("请自由编辑!

~任意键继续~");

getch();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1