C语言学生管理系统程序源代码.docx
《C语言学生管理系统程序源代码.docx》由会员分享,可在线阅读,更多相关《C语言学生管理系统程序源代码.docx(27页珍藏版)》请在冰点文库上搜索。
![C语言学生管理系统程序源代码.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/f5c0c4ae-7bda-4548-800d-06fb50583cab/f5c0c4ae-7bda-4548-800d-06fb50583cab1.gif)
C语言学生管理系统程序源代码
#include"stdafx.h"
#include
#include"malloc.h"
#include
#include
#include
typedefstructStudent
{
intID;
charname[16];
intage;
chardepartment[32];
floatchinese;
floatenglish;
floatmatch;
floatave;
floatsum;
}stu;
intstudentNum;//全局变量
stu*pStu=NULL;//全局变量
stu*pStu1=NULL;//全局变量
voidmenu();
voidInit();
voidsum();
voidinput();
voidoutput();
voidsort();
voidsort_sum();
voidsort_chinese();
voidsort_english();
voidsort_match();
voidsort_id();
voidincrease();
voidfind();
intfind_id(intchoice);
intfind_name();
voiddeleteStudent();
voidsave();
voidupdate();
int_tmain(intargc,_TCHAR*argv[])
{
intchoice;
Init();
intk=1;
intkey=-1;
while(k)
{
menu();
scanf("%d",&choice);
switch(choice)
{
case1:
input();break;
case2:
output();break;
case3:
sort();break;
case4:
increase();break;
case5:
deleteStudent();break;
case6:
find();break;
case7:
save();break;
case8:
update();break;
}
printf("\n是否继续主页面操作:
继续,退出\n");
scanf("%d",&key);
if(2==key)
{
k=0;
}
}
if(NULL!
=pStu)
{
free(pStu);
}
return0;
}
voidmenu()
{
printf("*****************************************************************************\n");
printf("*************welcometostudents'achievementmanagementsystem**************\n");
printf("1.inputstudents'information\n");
printf("2.outputstudents'information\n");
printf("3.sortstudents'information\n");
printf("4.increasestudents'information\n");
printf("5.deletestudents'information\n");
printf("6.findstudents'information\n");
printf("7.savestudents'information\n");
printf("8.updatestudents'information\n");
printf("************************************************************************\n");
}
voidinput()
{
inti;
intstudentID;
intsaveChoice=0;
FILE*pStudentFile=NULL;
printf("请输入学生的个数\n");
scanf("%d",&studentNum);
if(NULL!
=pStu)
{
free(pStu);
}
pStu=(stu*)malloc(sizeof(stu)*studentNum);
if(NULL==pStu)
{
printf("申请堆内存失败");
assert(0);
return;
}
pStu1=pStu;
printf("pleaseenterstudents'information:
\n");
for(i=0;i{
studentID=i+1;
printf("输入第%d个学生信息:
\n",studentID);
printf("学号:
\n");
scanf("%d",&(pStu+i)->ID);
printf("姓名:
\n");
scanf("%s",(pStu+i)->name);
printf("年龄:
\n");
scanf("%d",&(pStu+i)->age);
printf("所在院系:
\n");
scanf("%s",(pStu+i)->department);
printf("语文成绩:
\n");
scanf("%f",&(pStu+i)->chinese);
printf("英语成绩:
\n");
scanf("%f",&(pStu+i)->english);
printf("数学成绩:
\n");
scanf("%f",&(pStu+i)->match);
}
sum();
printf("\n是否现在存储学生信息:
1存储2不存储\n");
scanf("%d",&saveChoice);
if(1==saveChoice)
{
save();
}
}
voidsum()
{
inti;
for(i=0;i{
(pStu+i)->sum=((pStu+i)->chinese+(pStu+i)->english+(pStu+i)->match);
(pStu+i)->ave=(pStu+i)->sum/3;
}
}
voidoutput()
{
inti;
if(NULL==pStu)
{
printf("还没有输入学生信息,无法显示学生信息\n");
return;
}
printf("输入学生信息如下:
\n");
for(i=0;i{
printf("***第%d个学生信息:
***\n",i+1);
printf("学号:
%d姓名:
%s年龄:
%d所在院系:
%s\t成绩(语数外):
%4.2f%4.2f%4.2f总成绩:
%4.2f平均成绩:
%4.2f\n"
(pStu+i)->ID,(pStu+i)->name,(pStu+i)->age,(pStu+i)->department,(pStu+i)->chinese,
(pStu+i)->english,(pStu+i)->match,(pStu+i)->sum,(pStu+i)->ave
);
}
}
voidsort()
{
intchoice;
intmm=1;
intchoice1;
if(NULL==pStu)
{
printf("还没有输入学生信息,无法排序学生信息\n");
return;
}
while(mm)
{
printf("1.sortsum\n");
printf("2.sortchinese\n");
printf("3.sortenglish\n");
printf("4.sortmath\n");
printf("请选择:
\n");
scanf("%d",&choice);
switch(choice)
{
case1:
sort_sum();break;
case2:
sort_chinese();break;
case3:
sort_english();break;
case4:
sort_match();break;
}
printf("\n是否继续选择其他排序输出:
选择2退出");
scanf("%d",&choice1);
if(2==choice1)
{
mm=0;
}
}
}
voidsort_id()
{
inti=0;
intj=0;
stustuTemp={0};
sum();
for(i=0;i{
for(j=0;j{
if((pStu+j)->ID>(pStu+j+1)->ID)
{
stuTemp=*(pStu+j);
*(pStu+j)=*(pStu+j+1);
*(pStu+j+1)=stuTemp;
}
}
}
}
voidsort_sum()
{
inti=0;
intj=0;
stustuTemp={0};
sum();
stu*pTemp=NULL;
pTemp=(stu*)malloc(sizeof(stu)*studentNum);
memcpy(pTemp,pStu,sizeof(stu)*studentNum);
for(i=0;i{
for(j=0;j{
if((pTemp+j)->sum>(pTemp+j+1)->sum)
{
stuTemp=*(pTemp+j);
*(pTemp+j)=*(pTemp+j+1);
*(pTemp+j+1)=stuTemp;
}
}
}
printf("按总成绩的从小到大排序输出如下:
\n");
for(i=0;i{
printf("学号:
%d姓名:
%s年龄:
%d所在院系:
%s\t成绩(语数外):
%4.2f%4.2f%4.2f总成绩:
%4.2f平均成绩:
%4.2f\n"
(pTemp+i)->ID,(pTemp+i)->name,(pTemp+i)->age,(pTemp+i)->department,(pTemp+i)->chinese,
(pTemp+i)->english,(pTemp+i)->match,(pTemp+i)->sum,(pTemp+i)->ave
);
}
if(NULL!
=pTemp)
{
free(pTemp);
}
}
voidsort_chinese()
{
inti=0;
intj=0;
stustuTemp={0};
sum();
stu*pTemp=NULL;
pTemp=(stu*)malloc(sizeof(stu)*studentNum);
memcpy(pTemp,pStu,sizeof(stu)*studentNum);
for(i=0;i{
for(j=0;j{
if((pTemp+j)->chinese>(pTemp+j+1)->chinese)
{
stuTemp=*(pTemp+j);
*(pTemp+j)=*(pTemp+j+1);
*(pTemp+j+1)=stuTemp;
}
}
}
printf("按语文成绩的从小到大排序输出如下:
\n");
for(i=0;i{
printf("学号:
%d姓名:
%s年龄:
%d所在院系:
%s\t成绩(语数外):
%4.2f%4.2f%4.2f总成绩:
%4.2f平均成绩:
%4.2f\n"
(pTemp+i)->ID,(pTemp+i)->name,(pTemp+i)->age,(pTemp+i)->department,(pTemp+i)->chinese,
(pTemp+i)->english,(pTemp+i)->match,(pTemp+i)->sum,(pTemp+i)->ave
);
}
if(NULL!
=pTemp)
{
free(pTemp);
}
}
voidsort_english()
{
inti=0;
intj=0;
stustuTemp={0};
sum();
stu*pTemp=NULL;
pTemp=(stu*)malloc(sizeof(stu)*studentNum);
if(NULL==pTemp)
{
return;
}
memcpy(pTemp,pStu,sizeof(stu)*studentNum);
for(i=0;i{
for(j=0;j{
if((pTemp+j)->english>(pTemp+j+1)->english)
{
stuTemp=*(pTemp+j);
*(pTemp+j)=*(pTemp+j+1);
*(pTemp+j+1)=stuTemp;
}
}
}
printf("按英语成绩的从小到大排序输出如下:
\n");
for(i=0;i{
printf("学号:
%d姓名:
%s年龄:
%d所在院系:
%s\t成绩(语数外):
%4.2f%4.2f%4.2f总成绩:
%4.2f平均成绩:
%4.2f\n"
(pTemp+i)->ID,(pTemp+i)->name,(pTemp+i)->age,(pTemp+i)->department,(pTemp+i)->chinese,
(pTemp+i)->english,(pTemp+i)->match,(pTemp+i)->sum,(pTemp+i)->ave
);
}
if(NULL!
=pTemp)
{
free(pTemp);
}
}
voidsort_match()
{
inti=0;
intj=0;
stustuTemp={0};
sum();
stu*pTemp=NULL;
pTemp=(stu*)malloc(sizeof(stu)*studentNum);
if(NULL==pTemp)
{
return;
}
memcpy(pTemp,pStu,sizeof(stu)*studentNum);
for(i=0;i{
for(j=0;j{
if((pTemp+j)->match>(pTemp+j+1)->match)
{
stuTemp=*(pTemp+j);
*(pTemp+j)=*(pTemp+j+1);
*(pTemp+j+1)=stuTemp;
}
}
}
printf("按数学成绩的从小到大排序输出如下:
\n");
for(i=0;i{
printf("学号:
%d姓名:
%s年龄:
%d所在院系:
%s\t成绩(语数外):
%4.2f%4.2f%4.2f总成绩:
%4.2f平均成绩:
%4.2f\n"
(pTemp+i)->ID,(pTemp+i)->name,(pTemp+i)->age,(pTemp+i)->department,(pTemp+i)->chinese,
(pTemp+i)->english,(pTemp+i)->match,(pTemp+i)->sum,(pTemp+i)->ave
);
}
if(NULL!
=pTemp)
{
free(pTemp);
}
}
voidincrease()
{
intaddStudentNum=0;
intstudentID;
inti=0;
intstorStudentNum=studentNum;
stu*pAddStudent=NULL;
stu*pNewStudentSum=NULL;
intsaveChoice=0;
printf("输入你要增加的学生的个数:
\n");
scanf("%d",&addStudentNum);
pAddStudent=(stu*)malloc(sizeof(stu)*addStudentNum);
if(NULL==pAddStudent)
{
return;
}
printf("pleaseenterstudents'information:
\n");
for(i=0;i{
studentID=i+1;
printf("输入增加的第%d个学生信息:
\n",studentID);
printf("学号:
\n");
scanf("%d",&(pAddStudent+i)->ID);
printf("姓名:
\n");
scanf("%s",(pAddStudent+i)->name);
printf("年龄:
\n");
scanf("%d",&(pAddStudent+i)->age);
printf("所在院系:
\n");
scanf("%s",(pAddStudent+i)->department);
printf("语文成绩:
\n");
scanf("%f",&(pAddStudent+i)->chinese);
printf("英语成绩:
\n");
scanf("%f",&(pAddStudent+i)->english);
printf("数学成绩:
\n");
scanf("%f",&(pStu+i)->match);
(pAddStudent+i)->sum=((pAddStudent+i)->chinese+(pAddStudent+i)->english+(pAddStudent+i)->match);
(pAddStudent+i)->ave=(pAddStudent+i)->sum/3;
}
studentNum+=addStudentNum;
pNewStudentSum=(stu*)malloc(sizeof(stu)*studentNum);
if(NULL==pNewStudentSum)
{
return;
}
memcpy(pNewStudentSum,pStu,sizeof(stu)*storStudentNum);
memcpy(pNewStudentSum+storStudentNum,pAddStudent,sizeof(stu)*addStudentNum);
if(NULL!
=pAddStudent)
{
free(pAddStudent);
pAddStudent=NULL;
}
if(NULL!
=pStu)
{
free(pStu);
pStu=NULL;
}
pStu=pNewStudentSum;
printf("\n是否存储新增的学生信息:
1存储2不存储\n");
scanf("%d",&saveChoice);
if(1==saveChoice)
{
save();
}
}
voidfind()
{
intmm=1;
intchoice;
intkk=-1;
inttemp=0;
while(mm)
{
printf("********************查询功能*******************\n");
printf("*****1姓名查找\n");
printf("*****2学号查找\n");
printf("\n请选择:
\n");
scanf("%d",&choice);
switch(choice)
{
case1:
find_name();break;
case2:
find_id(temp);break;
}
printf("\n是否退出查找界面:
继续2退出\n");
scanf("%d",&kk);
if(2==kk)
{
mm=0;
}
}
}
intfind_id(intchoice)
{
sort_id();
intid=-1;
inti=0;
intleft=0;
intright=studentNum;
intmiddle=0;
if(0==choice)
{
printf("\n输入你要查找的学生的学号");
}
if(1==choice)
{
printf("\n输入你要删除的学生的学号\n");
}
if(2==choice)