本文主要详细介绍了用C语言实现的简单的学生管理系统。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。
本文分享用C语言实现学生管理系统的具体代码,供大家参考。具体内容如下
首先,在做管理系统之前,我们需要知道这个学生管理系统需要哪些功能,比如:简单的增、删、改、查,也就是录入成绩、查询成绩、删除成绩、修改成绩、插入成绩。这些功能基本都包含了。当然,我们也可以添加排序和统计学生人数。
当我们知道需要什么功能的时候,就可以写系统的界面了。
效果图如下:
printf(' \ t \ t \ t-STUDENT-\ t \ t \ t \ n ');
Printf('\t\t\t0。exit \ t \ t \ t \ n ');
Printf('\t\t\t1。输入结果\ t \ t \ n ');
Printf('\t\t\t2。查询结果\ t \ t \ n ');
Printf('\t\t\t3。删除成绩\ t \ t \ n’);
Printf('\t\t\t4。修改结果\ t \ t \ n’);
Printf('\t\t\t5。插入成就\ t \ t \ n’);
Printf('\t\t\t6。sort \ t \ t \ n ');
Printf('\t\t\t7。统计学生人数\ t \ t \ n’);
printf(' \ t \ t \ t-\ t \ t \ t \ n ');
printf(' \ t \ t \ t select(0-7)\ t \ t ');
然后我们可以添加开关功能来选择功能。
定义整数变量选择
int选择;
scanf('%d ',choice);
开关(选择)
{
案例0:出口(0);打破;
案例一:in();save();系统(“暂停”);系统(“cls”);打破;//回车
案例二:show();系统(“暂停”);系统(“cls”);打破;//查询
案例三:del();save();系统(“暂停”);系统(“cls”);打破;//删除
情况四:modify();系统(“暂停”);系统(“cls”);打破;//修改
案例五:insert();save();系统(“暂停”);系统(“cls”);打破;//插入
案例6:order();系统(“暂停”);系统(“cls”);打破;//排序
情况7:合计();系统(“暂停”);系统(“cls”);打破;//统计数据
默认值:printf(' \ n输入错误,请输入0-7 \ n \ n ');系统(“暂停”);系统(“cls”);打破;
}
定义一个菜单函数将以上两者结合起来。我们添加了一个while循环来保持这个菜单在循环中出现,而不是使用一次就消失。
Void Menu()//菜单
{ while(1)
{
printf(' \ t \ t \ t-STUDENT-\ t \ t \ t \ n ');
Printf('\t\t\t0。exit \ t \ t \ t \ n ');
Printf('\t\t\t1。输入结果\ t \ t \ n ');
Printf('\t\t\t2。查询结果\ t \ t \ n ');
Printf('\t\t\t3。删除成绩\ t \ t \ n’);
Printf('\t\t\t4。修改结果\ t \ t \ n’);
Printf('\t\t\t5。插入成就\ t \ t \ n’);
Printf('\t\t\t6。sort \ t \ t \ n ');
Printf('\t\t\t7。统计学生人数\ t \ t \ n’);
printf(' \ t \ t \ t-\ t \ t \ t \ n ');
printf(' \ t \ t \ t select(0-7)\ t \ t ');
int chioce
scanf('%d ',chio ce);
开关(选择)
{
案例0:出口(0);打破;
案例一:in();save();系统(“暂停”);系统(“cls”);打破;//回车
案例二:show();系统(“暂停”);系统(“cls”);打破;//查询
案例三:del();save();系统(“暂停”);系统(“cls”);打破;//删除
情况四:modify();系统(“暂停”);系统(“cls”);打破;//修改
案例五:insert();save();系统(“暂停”);系统(“cls”);打破;//插入
案例6:order();系统(“暂停”);系统(“cls”);打破;//排序
情况7:合计();系统(“暂停”);系统(“cls”);打破;//统计数据
默认值:printf(' \ n输入错误,请输入0-7 \ n \ n ');系统(“暂停”);系统(“cls”);打破;
}
}
}
写完菜单后,我们将分析“学生”的数据
在这个系统中,学生的信息应该包括那些东西,例如:学号、姓名、选修课成绩、实验课成绩、必修课成绩、总分、平均分。然后根据这些写一个结构(我写的是数组类型结构)
结构学生
{
字符编号[20];//学生ID
char name[20];//名称
浮动电子;//选修课
浮动费用;//实验班
浮动requ//必修课
浮动总和;//总分'
浮动大街;//平均成绩
}学生[N];
然后我们开始编写函数来实现这个系统的功能。
首先是成绩的录入。
Void in()//输入信息
{
void save();
int i,n;
Printf('输入录取人数\ n ');
scanf('%d ',n);
for(I=1;I=n;我)
{printf('请输入%d学号:\n ',I);
scanf('%s ',student[i])。num);
Printf('请输入%d学生姓名:\n ',I);
scanf('%s ',student[i])。姓名);
Printf('请输入%d学生选修课的成绩:\n ',I);
scanf('%f ',student[i])。elec);
Printf('请输入学生%d: \n ',I)的实验结果;
scanf('%f ',student[i])。expe);
Printf('请输入%d学生的必修课程成绩:\n ',I);
scanf('%f ',student[i])。requ);
学生[我]。sum=学生[i]。当选学生。expe学生[i]。热曲;
学生[我]。ave=student[i]。sum/3;
数数;
}
Printf('成功输入\ n ');
}
二是结果的查询。
Void show() //查询
{
int I;
char xh[20];
Printf('请输入要查询的学号:\ n ');
getchar();
gets(xh);
for(I=0;在;我)
{
If (strcmp (student [i])。num,xh)==0)//比较两个字符串。如果它们相同,则在下面声明if;否则,继续循环。
printf(' \ n学生ID: %-5s姓名:%-5s选修课成绩:%-5.1f实验课成绩:%-5.1f必修课成绩:%-5.1f总分:%-5.1f平均分:%-5.1f\n ',
学生[我]。num,学生[我]。姓名,学生[我]。elec,student[i]。expe,学生[i]。热区,学生[我]。sum,学生[我]。ave);
}
}
第三是删除等级。
Void del()//删除
{
void save();
int j,a=0,k=count
char xh[25];
Printf('要删除的学号是:\ n ');
scanf('%s ',xh);
flush(标准输入);//缓冲区
for(j=0;jcountj)
{
if (strcmp(student[j].num,xh)==0)
{
for(j=a;jcountj)
学生[j]=学生[j 1];
count-;
if (countk)
Printf('成功删除\ n ');
}
a;
}
if (j==count-1)
Printf('没有您要删除的学生信息\ n ');
}
第四,等级的修改。
第一步。先找学生修改。
2.选择修改后的项目。
3.更改总分和平均分。
4.显示修改后的学生数据。
Void modify()//修改
{ void save();
int i,j,h;
浮动分数;
char xh[20];
Printf ('01。输入修改学生的学号:\ n ');
scanf('%s ',xh);
for(I=1;在;我)
if (strcmp(student[i])。num,xh)==0)
j=I;
Printf('请选择要修改的内容\ n ');
Printf('1。修改学生的选修课成绩\ n’);
Printf('2。修改学生的实验班成绩\ n’);
Printf('3。修改学生的必修课成绩\ n’);
scanf('%d ',h);
开关(h)
{
1: printf('请输入该生选修课的成绩\ n ');scanf('%f ',分数);学生[j]。elec=分数;打破;
2: printf('请输入学生的实验班成绩\ n ');scanf('%f ',分数);学生[j]。expe=分数;打破;
3: printf('请输入该生的必修课成绩\ n ');scanf('%f ',分数);学生[j]。requ=分数;打破;
默认值:printf(' \ n输入错误,请输入1-3 \ n \ n ');打破;
}
学生[j]。sum=学生[j]。当选学生[j]。expe学生[j]。热曲;
Printf('修改为:\ n ');
printf(' \ n学生ID: %-5s姓名:%-5s选修课成绩:%-5.1f实验课成绩:%-5.1f必修课成绩:%-5.1f总分:%-5.1f平均分:%-5.1f\n ',
学生[j]。num,学生[j]。姓名,学生[j]。elec,学生[j]。expe,student[j]。requ,学生[j]。sum,学生[j]。ave);
printf(' \ n ');
Printf('修改成功\ n ');
}
第五,成果的插入
Void insert ()//insert
{ void save();
int m,flag,i=count,j,k;
Printf('请输入要添加的学生人数:\ n ');
scanf('%d ',m);
如果(m 0)
{
k=计数1;
for(I=k;I=计数m;我)
{
flag=1;
而(旗!=0)
{
flag=0;
Printf('请输入%d学生的学号:\n ',I);
getchar();
获取(student[i])。num);
for(j=0;j I;j)
{
if (strcmp(student[i])。num,学生[j]。num)==0)
{
Printf('该学号已经存在,请重新输入!\ n’);
flag=1;
打破;
}
}
}
Printf('请输入%d学生姓名:\n ',I);
获取(student[i])。姓名);
printf('请输入第%d位学生选修课成绩:\n ',I);
scanf('%f ',student[i]).elec);
printf('请输入第%d位学生实验成绩:\n ',I);
scanf('%f ',student[i]).expe);
printf('请输入第%d位学生必修课成绩:\n ',I);
scanf('%f ',student[i]).requ);
学生[我]。总和=学生[我].当选学生expe学生[我].热曲;
学生[我]。ave=学生[i].sum/3;
}
count=m;
printf('添加完成!\ n’);
系统("暂停");
}
}
第六项,排序
无效订单()//排序
{
int i,j,m;
for(j=1;j=计数-1;j)
{ m=j;
for(I=j ^ 1;我=计数;我)
{
如果(学生[我]。暑期学生[m]的缩写.总和)
{
学生[0]=学生[I];
学生[我]=学生[m];
学生[m]=学生[0];
}
}
}
for(j=1;j=计数;j)
{
printf('\n学号:%-5s姓名:%-5s选修课成绩:%-5.1f实验课成绩:%-5.1f必修课成绩:%-5.1f总分:%-5.1f平均分:%-5.1f\n ',
学生[j]的缩写.num,学生[j]的缩写.姓名,学生[j]的缩写.当选,学生[j]的缩写.expe,student[j].热区,学生[j]的缩写.总和,学生[j]的缩写.ave);
}
}
第七项,统计学生人数
void total ()//统计
{
printf('学生人数%d\n ',计数);
}
完整的代码
# includestdio.h
#includestring.h
#includestdlib.h
#定义N 100
结构学生
{
字符编号[20];//学号
char name[20];//姓名
浮动电子;//选修课
浮动费用;//实验课
浮动requ//必修课
浮动总和;//总成绩'
浮动大街;//平均成绩
}学生[N];
void Menu();//菜单
()中的void//录入
void show();//查找
空的订单();//排序
void del();//删除
void modify();//修改
void total();//统计
void insert();//插入
int count=0;//人数
void save();//保存
int main()
{
menu();
返回0;
}
void Menu()//菜单
{ while(1)
{
printf(' \ t \ t \ t-STUDENT-\ t \ t \ t \ n ');
printf('\t\t\t0 .退出\ t \ t \ t \ n ');
printf('\t\t\t1 .录入成绩\ t \ t \ t \ n ');
printf('\t\t\t2 .查询成绩\ t \ t \ t \ n ');
printf('\t\t\t3 .删除成绩\ t \ t \ t \ n ');
printf('\t\t\t4 .修改成绩\ t \ t \ t \ n ');
printf('\t\t\t5 .插入成绩\ t \ t \ t \ n ');
printf('\t\t\t6 .排序\ t \ t \ t \ n ');
printf('\t\t\t7 .统计学生人数\ t \ t \ t \ n ');
printf(' \ t \ t \ t-\ t \ t \ t \ n ');
printf('\t\t\t选择(0-7)\ t \ t \ t ');
国际会议
scanf('%d ',chio ce);
开关(选择)
{
案例0:出口(0);打破;
案例一:in();save();系统("暂停");系统(“cls”);打破;//录入
案例二:show();系统("暂停");系统(“cls”);打破;//查询
案例三:del();save();系统("暂停");系统(“cls”);打破;//删除
情况四:modify();系统("暂停");系统(“cls”);打破;//修改
案例五:insert();save();系统("暂停");系统(“cls”);打破;//插入
案例6:order();系统("暂停");系统(“cls”);打破;//排序
情况7:合计();系统("暂停");系统(“cls”);打破;//统计
默认值:printf('\n输入错误,请输入0-7 \ n \ n’);系统("暂停");系统(“cls”);打破;
}
}
}
void save() //保存
{
文件* fp
字符文件名[100];
int I;
printf('请输入要保存的文件名:\ n’);
scanf('%s ',文件名);
if ((fp=fopen(文件名,' w ')==NULL)
{
printf('打开文件失败!\ n’);
退出(0);
}
for(I=1;我=计数;我)
{
if (fwrite(student[i],sizeof(struct student),1,fp)!=1)
printf('保存失败!\ n’);
}
printf('保存成功!\ n’);
fclose(FP);
}
在()//中无效录入信息
{
void save();
int i,n;
printf('输入录取学生的数量\ n’);
scanf('%d ',n);
for(I=1;I=n;我)
{ printf('请输入第%d位学生学号:\n ',I);
scanf('%s ',student[i]).num);
printf('请输入第%d位学生姓名:\n ',I);
scanf('%s ',student[i]).姓名);
printf('请输入第%d位学生选修课成绩:\n ',I);
scanf('%f ',student[i]).elec);
printf('请输入第%d位学生实验成绩:\n ',I);
scanf('%f ',student[i]).expe);
printf('请输入第%d位学生必修课成绩:\n ',I);
scanf('%f ',student[i]).requ);
学生[我]。总和=学生[我].当选学生expe学生[我].热曲;
学生[我]。ave=学生[i].sum/3;
数数;
}
printf('录入成功\ n’);
}
void modify()//修改
{ void save();
int i,j,h;
浮动分数;
char xh[20];
printf ('01 .输入修改的学生的学号:\ n’);
scanf('%s ',xh);
for(I=1;在;我)
if (strcmp(student[i]).num,xh)==0)
j=I;
printf('请选择修改内容\ n’);
printf('1 .修改该学生的选修课成绩\ n’);
printf('2 .修改该学生的实验课成绩\ n’);
printf('3 .修改该学生的必修课成绩\ n’);
scanf('%d ',h);
开关(h)
{
案例1:printf('请输入该学生的选修课成绩\ n’);扫描f('%f ',分数);学生[j]的缩写.elec=分数;打破;
案例2:printf('请输入该学生的实验课成绩\ n’);扫描f('%f ',分数);学生[j]的缩写.费用=分数;打破;
案例3:printf('请输入该学生的必修课成绩\ n’);扫描f('%f ',分数);学生[j]的缩写.requ=分数;打破;
默认值:printf('\n输入错误,请输入1-3 \ n \ n’);打破;
}
学生[j]的缩写.总和=学生[j]的缩写.当选学生[j]的缩写.expe学生[j]的缩写.热曲;
printf('修改后为:\ n’);
printf('\n学号:%-5s姓名:%-5s选修课成绩:%-5.1f实验课成绩:%-5.1f必修课成绩:%-5.1f总分:%-5.1f平均分:%-5.1f\n ',
学生[j]的缩写.num,学生[j]的缩写.姓名,学生[j]的缩写.当选,学生[j]的缩写.expe,student[j].热区,学生[j]的缩写.总和,学生[j]的缩写.ave);
printf(' \ n ');
printf('修改成功\ n’);
}
void show() //查询
{
int I;
char xh[20];
printf('请输入要查询的学生学号:\ n’);
getchar();
gets(xh);
for(I=0;在;我)
{
if(strcmp(student[i]).num,xh)==0)
printf('\n学号:%-5s姓名:%-5s选修课成绩:%-5.1f实验课成绩:%-5.1f必修课成绩:%-5.1f总分:%-5.1f平均分:%-5.1f\n ',
学生[我]。num,学生[我]。姓名,学生[我]。elec,student[i].expe,学生[我].热区,学生[我]。总和,学生[我]。ave);
}
}
无效订单()//排序
{
int i,j,m;
for(j=1;j=计数-1;j)
{ m=j;
for(I=j ^ 1;我=计数;我)
{
如果(学生[我]。暑期学生[m]的缩写.总和)
{
学生[0]=学生[I];
学生[我]=学生[m];
学生[m]=学生[0];
}
}
}
for(j=1;j=计数;j)
{
printf('\n学号:%-5s姓名:%-5s选修课成绩:%-5.1f实验课成绩:%-5.1f必修课成绩:%-5.1f总分:%-5.1f平均分:%-5.1f\n ',
学生[j]的缩写.num,学生[j]的缩写.姓名,学生[j]的缩写.当选,学生[j]的缩写.expe,student[j].热区,学生[j]的缩写.总和,学生[j]的缩写.ave);
}
}
void del()//删除
{
void save();
int j,a=0,k=计数
char xh[25];
printf('所要删除的学生学号为:\ n’);
scanf('%s ',xh);
齐平(标准输入);
for(j=0;jcountj)
{
if (strcmp(student[j].num,xh)==0)
{
for(j=a;jcountj)
学生[j]=学生[J1];
count-;
if (countk)
printf('删除成功\ n’);
}
a;
}
if (j==count-1)
printf('没有你所要删除的学生的信息\ n’);
}
void insert ()//插入
{ void save();
int m,flag,i=count,j,k;
printf('请输入待添加的学生人数:\ n’);
scanf('%d ',m);
如果(立方米)
{
k=计数1;
for(I=k;我=计数m;我)
{
flag=1;
而(旗!=0)
{
flag=0;
printf('请输入第%d位学生的学号:\n ',I);
getchar();
获取(学生[我]).num);
for(j=0;j I;j)
{
if (strcmp(student[i]).num,学生[j]的缩写.num)==0)
{
printf('该学号已存在,请重新输入!\ n’);
flag=1;
打破;
}
}
}
printf('请输入第%d位学生姓名:\n ',I);
获取(学生[我]).姓名);
printf('请输入第%d位学生选修课成绩:\n ',I);
scanf('%f ',student[i]).elec);
printf('请输入第%d位学生实验成绩:\n ',I);
scanf('%f ',student[i]).expe);
printf('请输入第%d位学生必修课成绩:\n ',I);
scanf('%f ',student[i]).requ);
学生[我]。总和=学生[我].当选学生expe学生[我].热曲;
学生[我]。ave=学生[i].sum/3;
}
count=m;
printf('添加完成!\ n’);
系统("暂停");
}
}
void total ()//统计
{
Printf('学生人数%d\n ',count);
}
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。