学生信息管理系统c语言程序的设计报告完美.docx
《学生信息管理系统c语言程序的设计报告完美.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统c语言程序的设计报告完美.docx(27页珍藏版)》请在冰豆网上搜索。
学生信息管理系统c语言程序的设计报告完美
HUNANUNIVERSITY
程序设计训练
报告
学生
学生学号
专业班级
指导老师
院长(系主任)
2013年5月25日
一系统功能简介......................................3
二本人完成的主要工作.................................3
三实训分析.................................4
四实训设计...............................5
五实训源程序代码和调试过程.....................7
六实训总结.................................11
附录1................................12
附录2.................................12-22
一系统功能简介
.学生信息管理系统
1,进入主界面:
要求输入密码,输入三次错误系统锁定。
2,输入记录:
将学生的基本信息包括学号,,性别,地区,分数等数据作为一个记录写入文件。
3,显示记录:
显示学生的各项信息。
4,增加记录:
增加多个学生的基本信息,位于之前的学生后面。
5,删除记录:
删除学生信息。
6,修改记录:
可以修改学生的任何一项基本信息。
7,查找记录:
可以根据学生的学号查找并显示出学生的信息。
8,统计记录:
统计全班通过情况和不及格情况。
9,退出系统
经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。
二本人完成的主要工作
学生信息管理系统由我和龚晨同学共同完成。
主程序的编写由我们两个共同完成。
我负责的是:
1、修改记录:
可以修改学生的任何一项基本信息。
2、查找记录:
可以根据学生的学号查找并显示出学生的信息。
3、统计记录:
统计全班通过情况和不及格情况。
4、退出系统
三实训分析
1、用结构化程序设计思想进行C环境下程序设计。
2、设计一个管理系统,上机编程、调试并通过该管理系统中的各功能模块。
3、设计完成后,每人必须提交程序清单及关于程序设计、维护和使用方面的图文材料即程序设计说明书各一份。
4、基于结构化程序设计思想和所使用的C语言开发环境与开发工具,并运用“软件工程”和“数据结构”中的有关概念和方法,针对具体设计题目和要求,分析功能要求,划分功能模块,用链表结构设计功能模块函数,以菜单方式调用相应功能模块来实现信息和数据处理
四实训设计
1、系统功能模块结构图
本图书管理系统理由输入记录,显示记录,增加记录,删除记录,修改记录,统计数据,查找记录,七个大模块组成,其总体结构图如下:
2.核心数据结构设计:
1.头文件说明
如:
#include
#include
#include
#include
2,函数的编写
定义结构类型;
定义全局变量;
定义、编写记录(数据)输入函数;
定义、编写记录(数据)显示函数;
定义、编写记录(数据)增加函数;
定义、编写记录(数据)删除函数;
定义、编写记录(数据)修改函数;
定义、编写记录(数据)统计函数;
定义、编写记录(数据)查找函数;
函数名称
函数功能
enter()
进入函数
input();
输入函数
display()
显示函数
add()
增加函数
delet()
删除函数
amend()
修改函数
preside();
统计函数
fint();
查找函数
output();
退出函数
3.核心算法描述(程序流程图)
主函数结构流程
N
Y
五实训源程序代码和调试过程(包括截图)
1.1进入界面
图一输入密码进行身份验证,输入三次则系统锁定。
1.2选择菜单
图二主菜单接界面,选择数字执行相应功能。
1.3输入信息
图三依次输入学生的各项基本信息。
1.4显示信息
图四可以显示录入及增加的各项信息。
1.5增加信息
图五根据需要添加新的学生信息。
1.6删除记录
图六删除信息。
1.7修改记录
图七可修改任何学生的任何一项纪录。
1.8统计信息
图八对所有的信息进行统计显示不及格人数。
1.9查找信息
图九根据学号查找出需要的学生信息。
六实训结论
通过C语言实训,让我加深了对C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。
不过,通过几天的实训,逐渐积攒了一些经验,有些错误可以较快看出来。
这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。
如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。
C语言是一个有序的学习,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,要从整体上把握。
不过通过实训我也知道了自己的不足,存在的很多问题。
希望能在以后的学习中,不断提高自己的能力,让问题越来越少。
附录1
参考文献
[1]振安等.C程序设计课程设计.:
机械工业,2004.9
[2]谭浩强等.c语言程序设计.(第二版).清华大学,2002,.8
[3]引等著《C程序设计设计基础课程设计》大学2007
[5]哲等《C程序设计课程设计》机械工业2010.7
附录2
源程序代码
#include
#include
#include
#include
#defineN20
structstudent/*定义学生结构体*/
{
longnum;
charname[20];
charsex[2];
charaddress[20];
intscore[3];
intsum;
intave;
};
structstudentstu[N];
intt=1,pl=0;
voidenter();
voidinput();
voiddisplay();
voidadd();
voiddelet();
voidamend();
voidpreside();
voidfint();
voidoutput();
voidmain()
{
intpassword;
inti;
printf("\n\n\n\n\t\t\t欢迎进入学生信息管理系统\n");/*初始界面输入验证密码*/
for(i=1;i<=3;i++)
{
printf("\n\n\t\t\t请输入密码:
");
scanf("%d",&password);
if(password==000000)
{
enter();
break;
}
printf("error!
pleaseinputagain!
");
}
printf("密码输入三次有误!
系统锁定!
");
}
voidenter()/*进入主菜单函数*/
{
intchoice,w;
chark;
system("cls");
printf("\t\t\t学生信息管理系统\n\n");
printf("\t\t1.录入.\t2.显示.\t3.增项.\t4.删项.\n\t\t5.修改.\t6.统计.\t7.查找.\t8.退出.\n");
printf("\n输入序号执行相应功能:
");
scanf("%d",&choice);
switch(choice)
{
case1:
input();break;
case2:
display();break;
case3:
add();break;
case4:
delet();break;
case5:
amend();break;
case6:
preside();break;
case7:
fint();break;
case8:
output();break;
default:
w=1;
}
if(w==1)
{
printf("输入有误,按任意键重新选怿.\n");
k=getchar();
getch();
enter();
}
}
voidinput()/*学生信息录入的函数*/
{
intx,count=0,i;
charw,r[20],o;
structstudent*p;
p=stu;
system("cls");
printf("\t\t\t学生信息的录入.\n");
do
{
pl++;
printf("请输入第%d个学生的信息.\n\n",t);
printf("学号:
\n");
scanf("%ld",&p->num);
printf(":
\n");
scanf("%s",&p->name);
printf("\n");
printf("性别:
\n");
gets(r);
gets(&p->sex);
printf("\n");
printf("地区:
\n");
scanf("%s",&p->address);
printf("\n");
printf("三门成绩:
1.语文.2.数学.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')
printf("按任意键返回.\n");
getch();
enter();
}
voiddisplay()/*显示学生信息*/
{
inti,j;
system("cls");
printf("\t\t\t学生信息显示.\n\n");
for(j=0;j{
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n","学号","","性别","地区","语文","数学","英语","平均分","总分");
printf("%ld\t%s\t%s\t%s\t",stu[j].num,stu[j].name,stu[j].sex,stu[j].address);
for(i=0;i<3;i++)
printf("%d\t",stu[j].score[i]);
printf("%d\t",stu[j].ave);
printf("%d\t",stu[j].sum);
printf("\n\n");
}
printf("\n按任意键返回.\n");
getch();
enter();
}
voidadd()/*学生信息的增加*/
{
inti,x;
chara,w;
structstudent*p;
p=stu+t;
system("cls");
printf("\n\t\t\t增加学生信息.\n");
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("地区:
\n");
scanf("%s",p->address);
printf("\n");
printf("三门成绩:
1.语文.2.数学.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();
enter();
}
}
voiddelet()/*学生信息的删除*/
{
longb;
intz,j;
intr=t;
charc,x;
structstudent*p;
system("cls");
printf("\n\t\t\t删除学生信息\n");
printf("请输入要删除学生的学号:
\n\n");
scanf("%ld",&b);
for(p=stu;pif(p->num==b)
break;
else
r--;
if(r==0)
{
printf("你要删除的学生不存在,请按任意键返回.\n");
getch();
enter();
}
printf("\n你要删除的学生为:
\n");
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","学号","","性别","地区","语文","数学","英语","平均分","总分");
printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->sex,p->address);
for(j=0;j<3;j++)
printf("%-8d",p->score[j]);
printf("%-8d",p->ave);
printf("%-8d",p->sum);
printf("\n你确定要删除吗?
如是请输入y;不是请输入n.\n");
x=getchar();
c=getchar();
if(c=='y'||c=='Y')
{
for(p=stu;p*p=*(p+1);
t--;
printf("系统已为你删除信息,请按任意键返回.\n");
getch();
enter();
}
if(c=='n'||c=='N')
{
printf("删除信息取消!
按任意键返回.\n");
getch();
enter();
}
}
voidamend()/*学生信息的修改*/
{
longj;
inti,z,r=t;
charc,d,e,f,q,u,l,v,m,k,h1,h2,h3,h4;
structstudent*p;
system("cls");
printf("\n\t\t\t修改学生信息\n");
printf("请输入要修改学生的学号:
\n\n");
scanf("%ld",&j);
for(p=stu;pif(p->num==j)
break;
else
r--;
if(r==0)
{
printf("你输入的学生不存在,请按任意键返回.\n");
getch();
enter();
}
printf("\n你要修改的学生为:
\n");
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","学号","","性别","地区","语文","数学","英语","平均分","总分");
printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->sex,p->address);
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");
h3=getchar();
h4=getchar();
if(h3=='y'||h3=='Y')
{
printf("请输入正确的地区:
\n");
scanf("%s",p->address);
}
if(h3=='N'||h3=='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();
enter();
}
}
voidpreside()/*学生信息的统计*/
{
inti,j,o=0,b=10,r=60;
structstudent*p;
system("cls");
printf("\n\t\t\t学生信息统计.\n");
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","学号","","性别","地区","语文","数学","英语","平均分","总分");
for(p=stu;p{
printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->sex,p->address);
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