C语言学生管理系统.docx
- 文档编号:28203957
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:21
- 大小:17.85KB
C语言学生管理系统.docx
《C语言学生管理系统.docx》由会员分享,可在线阅读,更多相关《C语言学生管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
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(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)