实训报告书学生信息管理系统Word格式.docx
《实训报告书学生信息管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《实训报告书学生信息管理系统Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
基本功能要求:
1.输入记录:
从键盘录入学生的基本信息;
2.显示输入记录:
输出学生的基本信息包括总成绩;
3.按学号查找记录:
输入一个学号,查找该学生的个人相关信息;
4.排序显示:
按总成绩进行降序排列;
5.按学号显示;
按学号升序排列;
6.退出。
扩展功能要求:
7.删除记录;
8.修改记录;
9.写文件;
10.读文件。
intNUM;
/*全局变量,记录学生数*/
#defineM100
structstudent
{longid;
/*学号*/
charname[10];
/*姓名*/
charsex[4];
intmath;
intenglish;
intc_program;
inttotal;
}STU[M];
1.主函数
2.进入主菜单页面
函数首部voidpage_title()
函数首部:
voidstudent_new()
voidshow()
voidscore_search()
用冒泡法或选择法,以及其他排序方法来实现。
voidscore_sort()
voidid_sort()
voidstudent_del()
函数首部:
voidstudent_edit()
voidsave()
voidload()
voidleft()
六、课程设计心得及体会
七、源程序清单
#include<
stdio.h>
/*VC++6.0SP6*/
string.h>
process.h>
conio.h>
/*全局变量*/
intnum=-1;
/*学生数,从STU[0]开始记录学生信息*/
{longid;
/*学号*/
charname[8];
/*姓名*/
charsex[2];
/*性别*/
intmath;
/*数学*/
intenglish;
/*英语*/
/*C语言*/
/*总分*/
}STU[M];
/*函数声明*/
voidpage_title();
voidstudent_new();
voidstudent_del();
voidstudent_edit();
voidscore_search();
voidscore_sort();
voidid_sort();
voidshow();
voidsave();
voiddisplay();
voidleft();
voidpage_head1();
/*打印表头1*/
voidpage_head2();
/*打印表头2*/
intfind(long);
/*按学号查找学生*/
voidshow_one(int);
/*显示一条记录*/
voidinput_one(int);
/*输入一个新学生的信息*/
voidcount(int);
/*计算一个新学生的总分*/
voidin_menu();
/*进入主菜单*/
/*主函数*/
voidmain()
{display();
while
(1)
{page_title();
}
/*主菜单*/
voidpage_title()
{charc;
system("
cls"
);
/*清屏*/
printf("
\n\n>
>
学生成绩管理系统<
<
\n\n"
\t1录入学生成绩记录\n\n"
\t2显示学生成绩记录\n\n"
\t3修改学生成绩记录\n\n"
\t4删除学生成绩记录\n\n"
\t5按学号查询学生记录\n\n"
\t6按学号显示学生记录\n\n"
\t7按总成绩递减输出\n\n"
\t8保存\n\n"
\t0退出\n\n"
***************************************************\n"
请用数字键0-8选择操作:
"
c=getchar();
switch(c)
{case'
1'
:
student_new();
break;
/*录入学生基本信息*/
case'
2'
show();
/*显示所有记录*/
case'
3'
student_edit();
/*修改记录*/
4'
student_del();
/*删除记录*/
5'
score_search();
/*查询记录*/
6'
id_sort();
/*按学号排序显示*/
7'
score_sort();
/*按成绩递减排序显示*/
8'
save();
/*保存*/
0'
left();
/*退出*/
}
/*录入学生基本信息*/
voidstudent_new()
{intn=0;
\n请输入学生的个数(1-%d):
M);
scanf("
%d"
&
n);
while(n<
=0||n>
M)
{printf("
\n请重新输入学生个数:
page_head1();
while(n--)
{num++;
input_one(num);
count(num);
/*删除学生基本信息*/
voidstudent_del()
intn;
charc;
请输入要删除学生的学号:
%ld"
id);
\n"
n=find(id);
if(n!
=-1)
break;
else
system("
page_head2();
show_one(n);
\n请确认删除吗?
(Y/N)?
c=getch();
if(c=='
Y'
||c=='
y'
)
{STU[n].id=STU[num].id;
STU[n].math=STU[num].math;
STU[n].english=STU[num].english;
STU[n].c_program=STU[num].c_program;
STU[n].total=STU[num].total;
strcpy(STU[n].name,STU[num].name);
strcpy(STU[n].sex,STU[num].sex);
num--;
/*按学号查找学生*/
intfind(longid)
{intn;
for(n=0;
n<
=num;
n++)
if(STU[n].id==id)returnn;
return-1;
/*输入一个新学生的信息*/
voidinput_one(intn)
{scanf("
%ld%s%s%d%d%d"
STU[n].id,STU[n].name,STU[n].sex,&
STU[n].math,&
STU[n].english,&
STU[n].c_program);
--------------------------------------------------------------\n"
/*显示所有记录*/
voidshow()
{inti;
for(i=0;
i<
i++)
show_one(i);
in_menu();
/*显示一条记录*/
voidshow_one(intn)
{printf("
%ld\t%s\t\t%s\t%3d\t%3d\t%3d\t%3d"
STU[n].id,STU[n].name,STU[n].sex,STU[n].math,STU[n].english,STU[n].c_program,STU[n].total);
\n----------------------------------------------------------------------\n"
/*计算一个新学生的总分*/
voidcount(intn)
{STU[n].total=STU[n].math+STU[n].english+STU[n].c_program;
/*退出*/
voidleft()
{save();
exit(0);
/*修改信息*/
voidstudent_edit()
请输入你要修改学生的学号:
=-1)
\n请输入修改的记录信息:
count(n);
/*进入主菜单*/
voidin_menu()
{printf("
\n请按任意键进入主菜单"
getch();
/*按学号查询成绩*/
voidscore_search()
请输入要查询学生的学号:
{page_head2();
没找到!
/*按学号排序显示*/
voidid_sort()
{inti=0;
longmin=STU[0].id;
for(i=1;
if(STU[i].id<
min)min=STU[i].id;
)
{n=find(min++);
/*学号加1*/
{show_one(n);
i++;
/*记录数加1*/
}
/*按总成绩冒泡降序显示*/
voidscore_sort()
{structstudentstu1;
inti,j;
num;
i++)/*趟数*/
{for(j=0;
j<
num-i;
j++)/*次数/趟*/
{if(STU[j].total<
STU[j+1].total)/*降序*/
{stu1.id=STU[j].id;
STU[j].id=STU[j+1].id;
STU[j+1].id=stu1.id;
stu1.math=STU[j].math;
STU[j].math=STU[j+1].math;
STU[j+1].math=stu1.math;
stu1.english=STU[j].english;
STU[j].english=STU[j+1].english;
STU[j+1].english=stu1.english;
stu1.c_program=STU[j].c_program;
STU[j].c_program=STU[j+1].c_program;
STU[j+1].c_program=stu1.c_program;
stu1.total=STU[j].total;
STU[j].total=STU[j+1].total;
STU[j+1].total=stu1.total;
strcpy(stu1.name,STU[j].name);
strcpy(STU[j].name,STU[j+1].name);
strcpy(STU[j+1].name,stu1.name);
strcpy(stu1.sex,STU[j].sex);
strcpy(STU[j].sex,STU[j+1].sex);
strcpy(STU[j+1].sex,stu1.sex);
}
}
/*打印表头2*/
voidpage_head2()
**********************************************************************\n"
学号\t\t姓名\t\t性别\t数学\t英语\tC语言\t总成绩\n"
/*打印表头1*/
voidpage_head1()
**************************************************************\n"
学号\t\t姓名\t\t性别\t数学\t英语\tC语言\n"
/*读文件*/
voiddisplay()
{FILE*fp;
inti;
if((fp=fopen("
d:
\c\stu.txt"
"
rb"
))==NULL)
cannotopenfile\n"
return;
M;
{if(fread(&
STU[i],sizeof(structstudent),1,fp)==1)i++;
elsebreak;
num=i-1;
fclose(fp);
/*写文件*/
voidsave()
wb"
if(fwrite(&
STU[i],sizeof(structstudent),1,fp)!
=1)
filewriteerror\n"