实训报告书学生信息管理系统.docx
《实训报告书学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《实训报告书学生信息管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
实训报告书学生信息管理系统
江苏淮安信息职业技术学院
C语言课程设计报告书
题目:
____________________
系部:
____________________
专业:
____________________
班级:
____________________
姓名:
____________________
学号:
____________________
指导教师:
____________________
二○○八年四月
目录
一、课程设计题目
二、系统功能需求分析
三、数据结构设计
四、系统功能模块
五、各功能模块的算法流程图
1.主函数
2.进入主菜单页面
3.输入记录
4.显示输入记录
5.按学号查找记录
6.排序显示
7.按学号显示记录
8.删除记录
9.修改记录
10.写文件
11.读文件
12.退出
六、课程设计心得及体会
七、源程序清单
《C语言课程设计》报告
一、课程设计题目
学生信息管理系统
二、系统功能需求分析
基本信息:
学号姓名性别数学英语C语言
基本功能要求:
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()
3.输入记录
函数首部:
voidstudent_new()
4.显示输入记录
函数首部:
voidshow()
5.按学号查找记录
函数首部:
voidscore_search()
6.排序显示
用冒泡法或选择法,以及其他排序方法来实现。
函数首部:
voidscore_sort()
7.按学号显示记录
函数首部:
voidid_sort()
8.删除记录
函数首部:
voidstudent_del()
9.修改记录
函数首部:
voidstudent_edit()
10.写文件
voidsave()
11.读文件
voidload()
12.退出
voidleft()
六、课程设计心得及体会
七、源程序清单
#include/*VC++6.0SP6*/
#include
#include
#include
#defineM100
/*全局变量*/
intnum=-1;/*学生数,从STU[0]开始记录学生信息*/
structstudent
{longid;/*学号*/
charname[8];/*姓名*/
charsex[2];/*性别*/
intmath;/*数学*/
intenglish;/*英语*/
intc_program;/*C语言*/
inttotal;/*总分*/
}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");
printf("\t1录入学生成绩记录\n\n");
printf("\t2显示学生成绩记录\n\n");
printf("\t3修改学生成绩记录\n\n");
printf("\t4删除学生成绩记录\n\n");
printf("\t5按学号查询学生记录\n\n");
printf("\t6按学号显示学生记录\n\n");
printf("\t7按总成绩递减输出\n\n");
printf("\t8保存\n\n");
printf("\t0退出\n\n");
printf("***************************************************\n");
printf("请用数字键0-8选择操作:
");
c=getchar();
system("cls");
switch(c)
{case'1':
student_new();break;/*录入学生基本信息*/
case'2':
show();break;/*显示所有记录*/
case'3':
student_edit();break;/*修改记录*/
case'4':
student_del();break;/*删除记录*/
case'5':
score_search();break;/*查询记录*/
case'6':
id_sort();break;/*按学号排序显示*/
case'7':
score_sort();break;/*按成绩递减排序显示*/
case'8':
save();break;/*保存*/
case'0':
left();/*退出*/
}
}
/*录入学生基本信息*/
voidstudent_new()
{intn=0;
printf("\n请输入学生的个数(1-%d):
",M);
scanf("%d",&n);
while(n<=0||n>M)
{printf("\n请重新输入学生个数:
");
scanf("%d",&n);
}
page_head1();
while(n--)
{num++;
input_one(num);
count(num);
}
}
/*删除学生基本信息*/
voidstudent_del()
{longid;
intn;
charc;
while
(1)
{printf("请输入要删除学生的学号:
");
scanf("%ld",&id);
printf("\n");
n=find(id);
if(n!
=-1)
break;
else
system("cls");
}
page_head2();
show_one(n);
printf("\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);
printf("--------------------------------------------------------------\n");
}
/*显示所有记录*/
voidshow()
{inti;
page_head2();
for(i=0;i<=num;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);
printf("\n----------------------------------------------------------------------\n");
}
/*计算一个新学生的总分*/
voidcount(intn)
{STU[n].total=STU[n].math+STU[n].english+STU[n].c_program;}
/*退出*/
voidleft()
{save();
exit(0);
}
/*修改信息*/
voidstudent_edit()
{longid;
intn;
while
(1)
{printf("请输入你要修改学生的学号:
");
scanf("%ld",&id);
printf("\n");
n=find(id);
if(n!
=-1)
break;
else
system("cls");
}
page_head2();
show_one(n);
printf("\n请输入修改的记录信息:
\n");
page_head1();
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);
count(n);
}
/*进入主菜单*/
voidin_menu()
{printf("\n请按任意键进入主菜单");
getch();
}
/*按学号查询成绩*/
voidscore_search()
{longid;
intn;
printf("请输入要查询学生的学号:
");
scanf("%ld",&id);
n=find(id);
if(n!
=-1)
{page_head2();
show_one(n);
}
else
printf("没找到!
\n");
in_menu();
}
/*按学号排序显示*/
voidid_sort()
{inti=0;
intn;
longmin=STU[0].id;
for(i=1;i<=num;i++)
if(STU[i].idpage_head2();
for(i=0;i<=num;)
{n=find(min++);/*学号加1*/
if(n!
=-1)
{show_one(n);
i++;/*记录数加1*/
}
}
in_menu();
}
/*按总成绩冒泡降序显示*/
voidscore_sort()
{structstudentstu1;
inti,j;
for(i=0;i{for(j=0;j{if(STU[j].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);
}
}
}
show();
}
/*打印表头2*/
voidpage_head2()
{printf("**********************************************************************\n");
printf("学号\t\t姓名\t\t性别\t数学\t英语\tC语言\t总成绩\n");
printf("**********************************************************************\n");
}
/*打印表头1*/
voidpage_head1()
{printf("**************************************************************\n");
printf("学号\t\t姓名\t\t性别\t数学\t英语\tC语言\n");
printf("**************************************************************\n");
}
/*读文件*/
voiddisplay()
{FILE*fp;
inti;
if((fp=fopen("d:
\c\stu.txt","rb"))==NULL)
{printf("cannotopenfile\n");
return;
}
for(i=0;i{if(fread(&STU[i],sizeof(structstudent),1,fp)==1)i++;
elsebreak;
}
num=i-1;
fclose(fp);
}
/*写文件*/
voidsave()
{FILE*fp;
inti;
if((fp=fopen("d:
\c\stu.txt","wb"))==NULL)
{printf("cannotopenfile\n");
return;
}
for(i=0;i<=num;i++)
if(fwrite(&STU[i],sizeof(structstudent),1,fp)!
=1)
printf("filewriteerror\n");
fclose(fp);
}