C语言学生信息管理系统.docx
《C语言学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言学生信息管理系统.docx(27页珍藏版)》请在冰豆网上搜索。
C语言学生信息管理系统
1.课程设计目的和要求(一级标题)。
3
2.课程的主要内容。
3
3.实践要求:
3
4.课程设计题目描述和要求。
4
5.程序代码。
4
(1).文件头部,对函数要调用到的系统函数的声名。
4
(2).定义无空函数。
5
(3).主函数。
6
(4).显示菜单函数。
6
(5).输入函数,并把输入的信息读入文件。
8
(6).显示函数,对学生信息的显示。
9
(7).增加函数(增加学生的信息)。
10
(8).删除函数。
12
(9).删除函数(按学号查找删除)。
12
(10).删除函数(按姓名查找到后删除)。
14
(12).统计(将学生的信息全部显示出来,并判断哪个学生不极格和不极格的总人数,并将它显示出来)。
17
(13).对学生信息的查找。
19
(14)查找函数(用学号进行查找)。
19
(15).查找(用姓名查找)。
20
(16).排序函数。
21
(17).排序函数(按学号排序)。
22
(18).排序函数(按总分排序)。
23
(20).保存函数。
25
(21).退出函数。
25
6.总结26
7.参考书目:
26
1.课程设计目的和要求(一级标题)
本课程设计是针对刚学完C语言的计算机类专业学生的课程设计教学。
C语言是学生的第一门计算机高级语言课程,课程结束后,学生已经对C语言程序设计有了较全面的了解,但接触的基本上是为了阐述相关概念或知识点而列举的示例,都是较小的程序,程序功能单一,因此缺乏整体观点和编写一个具体实用的综合程序的思想。
本课程设计的目的是要培养学生初步具有系统分析思想,并能利用开发工具开发一个简单实用的综合程序。
为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力,提高学生适应实际,实践编程的能力。
要求学生以TC或VC为开发工具,完成一个小型应用软件的设计和开发。
进一步提高学生进行程序设计的能力。
2.课程的主要内容
(1)选题
(2)进行系统分析
(3)程序设计实现
(4)系统测试
(5)编写、上交课程设计报告
3.实践要求:
(1)系统设计要实用。
(2)对系统进行功能模块分析、控制模块分析正确,要画出主要功能模块的流程图。
(3)编程简练,可用,界面友好,功能全面。
(4)课程设计报告、流程图要清楚。
4.课程设计题目描述和要求
本课程设计选题为“学生成绩管理系统”。
系统主要功能是管理学生成绩信息,要求能实现学生成绩添加、删除、修改、查找,总分、平均分计算、按成绩排序等功能。
……
经过分析,确定本系统结构图如下图所示:
图1系统结构图
5.程序代码。
(1).文件头部,对函数要调用到的系统函数的声名.
#include/*将需要不得的函数包含在内*/
#include
#include
#include
#defineN20/*定义宏N为学生结构体的总数*/
structstudent/*这义学生结构体*/
{
longnum;
charname[20];
charsex[4];
intscore[3];
intsum;
intave;
};
structstudentstu[N];
intt=1,pl=0;/*定义两个全变量,学生总数变量和增加的学生变量*/
(2).定义无空函数.
voids();/*以下为定义无参函数*/
voidinput();/*输入*/
voidshow();/*显示*/
voidincrease();/*增项*/
voiddelet();/*删除*/
voidamend();/*修改*/
voidpreside();/*统计*/
voidfint();/*查找*/
voidarrange();/*排序*/
voidresume();/*恢复*/
voidsave();/*保存*/
voidoutput();/*退出*/
voiddeleta();/*学号查找后删除*/
voiddeletb();/*姓名查找后删除*/
voidfinta();/*学号查找*/
voidfintb();/*姓名查找*/
voidarranga();/*学号排序*/
voidarrangb();/*总分排序*/
(3).主函数.
voidmain()/*主函数*/
{
intpasword;/*这义密码*/
system("cls");
printf("\n\n\n\n\n\n\n\n\n\t\t\t请输入密码,密码为:
123456.\n");
scanf("%d",&pasword);/*输入密码*/
if(pasword==123456)
s();
else
{
printf("密码有误,请重新输入.\n");
getch();
main();
}
}
(4).显示菜单函数.
voids()
{intselect,w;chark;/*定义变量*/
system("cls");
printf("C语言课程设计.\n");/*以下显示主菜单*/
printf("1.录入.\n2.显示.\n3.增项.\n4.删项.\n5.修改.\n6.统计.\n7.查找.\n8.排序.\n9.恢复.\n10.保存.\n11.退出.\n");
printf("\n选怿项目执行相应功能.");/*以下是显示编;定人的姓名。
*/
printf("\n\n\t\t\t\t\txxxxxx
scanf("%d",&select);
switch(select)
{case1:
input();break;/*以下是选怿执行菜单上的哪个函数。
*/
case2:
show();break;
case3:
increase();break;
case4:
delet();break;
case5:
amend();break;
case6:
preside();break;
case7:
fint();break;
case8:
arrange();break;
case9:
resume();break;
case10:
save();break;
case11:
output();break;
default:
w=1;
}
if(w==1)
{printf("输入有误,按任意键重新选怿.\n");
k=getchar();
getch();
s();
}
}
(5).输入函数,并把输入的信息读入文件.
voidinput()//该函数为输入函数,并把输入的信息读入文件,以便再恢复。
{FILE*fp;
intx,count=0,i;charw,r[20],o;structstudent*p;/*定义变量和指向结构体的指针变量。
*/
system("cls");
p=stu;
printf("\t\t\t学生信息的录入.\n");
do{pl++;
printf("请输入第%d个学生的信息.\n\n",t);/*逐个步骤的实现学生信息的输入。
*/
printf("学号:
\n");scanf("%ld",&p->num);printf("\n");
printf("姓名:
\n");scanf("%s",p->name);printf("\n");
printf("性别:
\n");gets(r);gets(p->sex);printf("\n");
printf("三门成绩:
1.高数.2.C语言.3.英语.\n");
for(i=0;i<3;i++)
scanf("%d",&p->score[i]);
p->sum=p->score[0]+p->score[1]+p->score[2];
p->ave=p->sum/3;
printf("\n\n是否要继续输入学生信息,如果是请按y;不是请按n.\n");
o=getchar();/*接收回车键。
*/
w=getchar();
if(w=='y'||w=='Y')/*选怿是否输入更多的学生*/
{
t++;
x=1;
p++;
}
else
x=0;
}while(x==1);
if(w=='n'||w=='N')
{
if((fp=fopen("stulist","wb"))==NULL)
{
printf("cannotopenthefile\n");
return;
}
for(i=0;i*/
if(fwrite(&stu[i],sizeof(structstudent),1,fp)!
=1)
printf("filewriteerror.\n");
fclose(fp);
printf("按任意键返回.\n");
getch();
s();
}
}
(6).显示函数,对学生信息的显示。
voidshow()//显示函数,对学生信息的显示。
{intj,i;
system("cls");
printf("\t\t\t学生成绩显示.\n\n");/*以下实现显示。
*/
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","学号","姓名","性别","高数","C语言","英语","平均分","总分");
for(i=0;i{printf("%-8ld%-8s%-8s",stu[i].num,stu[i].name,stu[i].sex);
for(j=0;j<3;j++)
printf("%-8d",stu[i].score[j]);
printf("%-8d",stu[i].ave);
printf("%-8d",stu[i].sum);
printf("\n\n");
}
printf("\n按任意键返回.\n");
getch();
s();
}
(7).增加函数(增加学生的信息).
voidincrease()//增加学生的信息。
{inti,x;chara,w;structstudent*p;
system("cls");
printf("\t\t\t你增加的信息会加到其它学生的后面.\n");
p=stu+t;
do/*以下是逐个学生信息的增加。
*/
{
printf("请输入第%d个学生的信息.\n\n",t+1);
printf("学号:
\n");
scanf("%ld",&p->num);
printf("\n");
printf("姓名:
\n");
scanf("%s",p->name);
printf("\n");
printf("性别:
\n");
scanf("%s",p->sex);
printf("\n");
printf("三门成绩:
1.高数.2.C语言.3.英语.\n");
for(i=0;i<3;i++)
scanf("%d",&p->score[i]);
for(i=0;i<3;i++)
p->sum=p->score[0]+p->score[1]+p->score[2];
p->ave=p->sum/3;
a=getchar();
printf("\n是否要继续输入学生信息,如果是请按y;不是请按n.\n\n");
w=getchar();p++;t++;/*判断是否继续对学生信息的增加。
*/
if(w=='y'||w=='Y')
{
x=1;
}
if(w=='n'||w=='N')
{
x=0;break;
}
}while(x==1);
if(x==0)
{
printf("\n");
printf("按任意键返回.\n");
getch();
s();
}
}
(8).删除函数。
voiddelet()//删除函数。
{inti;
system("cls");
printf("\t\t\t请选怿用哪种方式删除学生信息.\n");
printf("1.学号.\n2.姓名.\n");
scanf("%d",&i);/*选怿用哪种方式对学生信处进行删除。
*/
switch(i)
{
case1:
deleta();break;
case2:
deletb();break;
default:
printf("输入有误,请按任意键返回.\n");
}
getch();
s();
}
(9).删除函数(按学号查找删除)。
voiddeleta()//删除函数(按学号查找删除)。
{longnum_a;intz,j;charc,x,m,b,o;structstudent*p;/*定义变量,接收字符。
*/
system("cls");
do
{printf("请输入要删除的学号.\n");
scanf("%ld",&num_a);/*输入学号。
*/
for(p=stu;p*/
if(p->num==num_a)
break;
else
{
printf("不存在该学生,请按任意键返回.\n");
getch();
s();
}
printf("你要删除的学生为:
\n");/*显示要删除的信息。
*/
printf("%-8ld%-8s%-8s",p->num,p->name,p->sex);
for(j=0;j<3;j++)
printf("%-8d",p->score[j]);
printf("%-8d",p->ave);
printf("%-8df",p->sum);
printf("你确定要删除吗?
如是请输入y;不是请输入n.\n");
x=getchar();/*接收回车键。
*/
c=getchar();
if(c=='y'||c=='Y')/*判断是否要删除该学生的信息。
*/
{for(;p*p=*(p+1);t--;
}
if(c=='n'||'N')z=0;
printf("是否要继续删除:
是请按1.不是请按2.\n");
m=getchar();b=getchar();o=getchar();
}while(b=='y'||b=='Y');/*是否继续删除学生信息*/
printf("系统已为你删除信息,请按任意键返回.\n");
getch();
s();
}
(10).删除函数(按姓名查找到后删除)。
voiddeletb()//删除函数(按姓名查找到后删除)。
*/
{charname_b[20],c,m,b,r,d;intj,z;structstudent*p;
system("cls");
do
{printf("请输入要删除的姓名.\n");
gets(name_b);r=getchar();/*输入姓名。
*/
for(p=stu;pif(strcmp(p->name,name_b)==0)/*判断是否存在该学生。
*/
break;
else
{printf("不存在该学生,请按任意键返回.\n");
getch();
s();
}
printf("你要删除的学生为:
\n");/*显示要删除的学生。
*/
printf("%-8ld%-8s%-8s",p->num,p->name,p->sex);
for(j=0;j<3;j++)
printf("%-8d",p->score[j]);
printf("%-8d",p->ave);
printf("%-8d",p->sum);
printf("你确定要删除吗?
如是请输入y;不是请输入n.\n");
c=getchar();
if(c=='y'||c=='Y')/*判断是否确定要删除。
*/
{for(;p*p=*(p+1);
t--;
}
if(c=='n'||'N')z=0;
printf("是否要继续删除:
是请按y.不是请按n.\n");
d=getchar();m=getchar();b=getchar();
}while(b=='y'||b=='Y');
printf("请按任意键返回.\n");
getch();
s();
}
(11).修改(详细对学生信息的修改)。
voidamend()//修改(详细对学生信息的修改)。
{longj;inti,z,r=t;charc,d,e,f,q,u,l,v,m,k;structstudent*p;
system("cls");
printf("请输入要修改学生的学号:
\n\n");
scanf("%ld",&j);/*输入要修改学生的学号。
*/
for(p=stu;pif(p->num==j)/*判断是否存在该学生。
*/
break;
elser--;
if(r==0)
{printf("你输入的学生不存在,请按任意键返回.\n");
getch();
s();
}
printf("\n你要修改的学生为:
\n");
printf("%-8ld%-8s%-8s",p->num,p->name,p->sex);/*将要修改的学生信息的显示。
*/
for(j=0;j<3;j++)
printf("%-8d",p->score[j]);
printf("%-8d",p->ave);
printf("%-8d",p->sum);
printf("\n\n是否要修改学号:
是请按y;不是请按n.\n\n");
l=getchar();
c=getchar();
if(c=='y'||c=='Y')/*以下是判断对学生的哪一个信息的修改,并选怿是否进行修改。
*/
{
printf("请输入正确的学号:
\n\n");
scanf("%ld",&p->num);
}
if(c=='n'||c=='N')
z=1;
printf("是否要修改姓名:
是请按y;不是请按n.\n\n");
q=getchar();
d=getchar();
m=getchar();
if(d=='y'||d=='Y')
{printf("请输入正确的姓名:
\n");
scanf("%s",p->name);u=getchar();
}
if(d=='n'||c=='N')
z++;
printf("\n是否要修改性别:
是请按y;不是请按n.\n\n");
e=getchar();k=getchar();
if(e=='y'||e=='Y')
{
printf("请输入正确的性别:
\n");
scanf("%s",p->sex);
}
if(e=='N'||e=='n')
z++;
printf("\n是否要修改三门成绩:
是请按y;不是请按n.\n\n");
f=getchar();
if(f=='y'||f=='Y')
{printf("请输入正确的三门成绩:
");
for(i=0;i<3;i++)
scanf("%d",&p->score[i]);
p->sum=p->score[0]+p->score[1]+p->score[2];p->ave=p->sum/3;
}
v=getchar();
if(f=='n'||f=='N'){printf("请按任意键返回.\n");getch();s();
}
}
(12).统计(将学生的信息全部显示出来,并判断哪个学生不极格和不极格的总人数,并将它显示出来)。
voidpreside()//统计(将学生的信息全部显示出来,并判断哪个学生不极格和不极格的总人数,并将它显示出来)。
{inti,j,o=0,b=10,r=60;structstudent*p;
system("cls");
printf("\t\t\t学生信息统计.\n\n");
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","学号","姓名","性别","高数","C语言","英语","平均分","总分");
for(p=stu;p*/
{printf("%-8ld%-8s%-8s",p->num,p->name,p->sex);
for(j=0;j<3;j++)
printf("%-8d",p->score[j]);
printf("%-8d",p->ave);
printf("%-8d",p->sum);
printf("\n\n");
}
printf("\n\n\n");
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","学号","姓名","性别","高数","C语言","英语","平均分","总分");
for(p=stu;p{for(i=0;i<3;i++)
if(p->score[i]*/
{b=b-1;o=o+1;
printf("%-8ld%-8s%-8s",p->num,p->name,p->sex);/*以下是显示不极格的学生。
*/
for(j=0;j<3;j++)
printf("%-8d",p->score[j]);
printf("%-8d",p->ave);
printf("%-8d",p->sum);
printf("\n\n");break;}
}
if(b==10)printf("\n\n班上所有的人都通过考试.\n\n");
else
if(b<10)printf("\n以上为不极格的同学,全班不极格的人数为:
%d人.\n\n",o);/*显示不极格学生的总人数。
*/
printf("\n");
printf("统计完成,请按任意键返回.\n");
getch();