C语言学生证管理系统课程设计报告.docx
- 文档编号:27591635
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:49
- 大小:434.85KB
C语言学生证管理系统课程设计报告.docx
《C语言学生证管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言学生证管理系统课程设计报告.docx(49页珍藏版)》请在冰豆网上搜索。
C语言学生证管理系统课程设计报告
课
程
设
计
报
告
专业:
年级:
姓名:
成绩:
批改时间:
说明
1、本报告供学生课程设计时使用。
2、学生应认真阅读课程设计要求。
3、课程设计报告里面的内容要手工填写,以备存档使用(源程序可打印)。
4、课程设计的总评成绩根据课程的性质,按一定比例计入该门课程成绩。
5、课程设计报告中的各模块填写的内容是评分的主要依据,如果不够书写,可以自行添加附页。
6、按规定的时间提交报告给教师评定成绩,由任课教师交到工学院存档。
课程设计目录
课程名称:
高级语言程序设计
序号
课程设计名称
起止页码
设计任务
题目
名称
学生证管理系统设计
班级
1
指导
教师
地点
工学院
成绩
添加模块
N
Y
学年
2011-2012
开始
日期
结束
日期
一、问题分析(围绕设计题目,进行课程设计开始前的准备过程,在此以问题分析的形式展开,从设计的总体性上对所承担的设计题目的思考,分析,此模块内容请手工填写)
对这个系统需求分析,学生证管理系统要有储存、录入、读取、输出、添加、删除、修改、查询、统计的功能。
我们将各种功能模块化,以便进行设计。
分为保存信息、输入模块、读取信息、更新模块(添加学生信息,删除信息,修改模块)、查询模块(按学号查找,按姓名查找,按班级查找)、统计模块。
然后根据各模块分别设计程序。
二.设计流程图
根据需求分析,可以把这个系统的设计分为添加、修改、查询、浏览、统计、删除六大模块,其中查询模块可以分为三个子模块,统计模块可以分为三个子模块,子模块下面还有子函数;系统功能模块图如下所示:
1.主函数模块
2.添加模块
3.修改模块4.浏览模块
5.查询模块
6.统计模块
7.删出模块
三.程序代码
#include
#include
#include
#defineN100
structClass//班级
{
charCname[20];//班名
charCno[20];//班号
};
structStudent//学生
{
charSname[20];//姓名
charSex[10];//性别
charSno[20];//学号
intAge;//年龄
structClassCInfo;//嵌套结构体,表示班级信息
}StuInfo[N];
voidmenu();//主菜单
voidadd();//添加模块
voidmodify();//修改模块
voidDelete();//删除模块
voidbrowse();//浏览模块
voidquiry();//查询模块
voidstastic();//统计模块
voidbySname();//按姓名查询,子模块
voidbySno();//按学号查询,子模块
voidbyCno();//按班号查询,子模块
voidStuMsg();//返回全体学生统计信息,子模块
voidFemale();//女生统计信息,子模块
voidMale();//男生统计信息,子模块
intFemaleNum();//返回女生人数,子函数
floatFemaleMG();//返回女生平均年龄,子函数
intMaleNum();//返回男生人数,子函数
floatMaleMG();//返回男生平均年龄,子函数
intStuNum();//返回全体学生人数,子函数
floatMG();//返回全体学生的平均年龄,子函数
voidmain()
{
menu();
getchar();
}
voidmenu()//菜单
{
intchose;
intright;
do
{
system("cls");//清屏
printf("\n\t\t\t\t学生证管理系统\n");
printf("········································");
printf("菜单:
\t1-添加\t2-修改\t3-浏览全部\t4-查询\t5-统计\t6-删除\t7-退出\n");
printf("········································");
printf("请输入数字选择:
");
scanf("%d",&chose);
if(chose<1||chose>7)
{
printf("输入错误,请重新输入!
\n");
right=1;
getchar();
}
elseright=0;
}while(right==1);
switch(chose)
{
case1:
add();break;
case2:
modify();break;
case3:
browse();break;
case4:
quiry();break;
case5:
stastic();break;
case6:
Delete();break;
case7:
exit(0);
}
}
voidadd()//添加学生信息,一次添加一条记录
{
intnum;
inti;
intage;
charsno[20];
charsex[20];
charcno[20];
intright;
FILE*fp;
if((fp=fopen("StuInfo.txt","r+"))==NULL)//以读写方式打开
{
if((fp=fopen("StuInfo.txt","w"))==NULL)//文件不存在则创建文件
{
printf("\n文件不存在且创建失败,返回!
\n");
menu();
}
printf("\n请按照提示输入学生信息:
\n\n");
printf("姓名:
");
scanf("%s",&StuInfo[0].Sname);
do
{
printf("\n性别(男或女):
");
scanf("%s",sex);
if((strcmp(sex,"男")!
=0)&&(strcmp(sex,"女")!
=0))
{
printf("输入错误,请输入男或女!
\n");
right=1;
getchar();
}
elseright=0;
}while(right==1);
strcpy(StuInfo[0].Sex,sex);
do
{
printf("\n学号(11位):
");
scanf("%s",sno);
if(strlen(sno)!
=11)
{
printf("输入错误,学号长度应为11位数!
\n");
right=1;
getchar();
}
elseright=0;
}while(right==1);
strcpy(StuInfo[0].Sno,sno);
do
{
printf("\n年龄:
");
scanf("%d",&age);
if(age<=0||age>100)
{
printf("年龄应在0-100之间,请重新输入年龄!
\n");
right=1;
getchar();
}
elseright=0;
}while(right==1);
StuInfo[0].Age=age;
do
{
printf("\n班号(6位):
");
scanf("%s",cno);
if(strlen(cno)!
=6)
{
printf("输入错误,班号长度应为6位数!
\n");
right=1;
getchar();
}
elseright=0;
}while(right==1);
strcpy(StuInfo[0].CInfo.Cno,cno);
printf("\n班名:
");
scanf("%s",&StuInfo[0].CInfo.Cname);
fprintf(fp,"\n%s\t%s\t%s\t%d\t%s\t%s",StuInfo[0].Sname,StuInfo[0].Sex,StuInfo[0].Sno,StuInfo[0].Age,StuInfo[0].CInfo.Cno,StuInfo[0].CInfo.Cname);
fclose(fp);
printf("\n保存成功!
\n");
printf("\n请按enter键返回主菜单!
\n");
getchar();
getchar();
menu();
}
for(i=0;!
feof(fp);i++)//读取文件
{
fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].Age,&StuInfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname);
}
num=i;
if(num==N)
{
printf("\n保存记录数超出结构体数组数的大小,请先修改N的值\n");
menu();
}
printf("\n请按照提示输入学生信息:
\n\n");
printf("姓名:
");
scanf("%s",&StuInfo[num].Sname);
do
{
printf("\n性别(男或女):
");
scanf("%s",sex);
if((strcmp(sex,"男")!
=0)&&(strcmp(sex,"女")!
=0))
{
printf("输入错误,请输入男或女!
\n");
right=1;
getchar();
}
elseright=0;
}while(right==1);
strcpy(StuInfo[num].Sex,sex);
do
{
printf("\n学号(11位):
");
scanf("%s",sno);
if(strlen(sno)!
=11)
{
printf("输入错误,学号长度应为11位数!
\n");
right=1;
getchar();
}
elseright=0;
for(i=0;i { if(strcmp(sno,StuInfo[i].Sno)==0) { printf("该学号已经存在,请重新输入! \n"); right=1; getchar(); } } }while(right==1); strcpy(StuInfo[num].Sno,sno); do { printf("\n年龄: "); scanf("%d",&age); if(age<=0||age>100) { printf("年龄应在0-100之间,请重新输入年龄! \n"); right=1; getchar(); } elseright=0; }while(right==1); StuInfo[num].Age=age; do { printf("\n班号(6位): "); scanf("%s",cno); if(strlen(cno)! =6) { printf("输入错误,班号长度应为6位数! \n"); right=1; getchar(); } elseright=0; }while(right==1); strcpy(StuInfo[num].CInfo.Cno,cno); printf("\n班名: "); scanf("%s",&StuInfo[num].CInfo.Cname); //把该记录写到文件末尾 fprintf(fp,"\n%s\t%s\t%s\t%d\t%s\t%s",StuInfo[num].Sname,StuInfo[num].Sex,StuInfo[num].Sno,StuInfo[num].Age,StuInfo[num].CInfo.Cno,StuInfo[num].CInfo.Cname); fclose(fp); printf("\n保存成功! \n"); printf("\n请按enter键返回主菜单! \n"); getchar(); getchar(); menu(); } voidmodify()//修改学生信息 { intnum; inti; intright; intage; charsex[20]; charcno[20]; charsno[20]; intfound=-1; charStuNO[20]; FILE*fpr,*fpw; if((fpr=fopen("StuInfo.txt","r"))==NULL) { printf("文件打不开! \n"); menu(); } for(i=0;! feof(fpr);i++)//读取文件 { fscanf(fpr,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].Age,&StuInfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname); } num=i; fclose(fpr); printf("\n请输入学号选择要修改的记录: "); scanf("%s",StuNO); for(i=0;i { if(strcmp(StuNO,StuInfo[i].Sno)==0) { found=i; printf("\n你要修改的学生信息为: \n\n"); printf("姓名性别学号年龄班号班名\n"); printf("%s\t%s\t%s\t%d\t%s\t%s\n",StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname); printf("\n请按照提示输入学生的新信息: \n"); printf("姓名: "); scanf("%s",&StuInfo[found].Sname); do { printf("\n性别(男或女): "); scanf("%s",sex); if((strcmp(sex,"男")! =0)&&(strcmp(sex,"女")! =0)) { printf("输入错误,请输入男或女! \n"); right=1; getchar(); } elseright=0; }while(right==1); strcpy(StuInfo[found].Sex,sex); do { printf("\n学号(11位): "); scanf("%s",sno); if(strlen(sno)! =11) { printf("输入错误,学号长度应为11位数! \n"); right=1; getchar(); } elseright=0; for(i=0;i { if((i! =found)&&(strcmp(sno,StuInfo[i].Sno)==0)) { printf("该学号已经存在,请重新输入! \n"); right=1; getchar(); } } }while(right==1); strcpy(StuInfo[found].Sno,sno); do { printf("\n年龄: "); scanf("%d",&age); if(age<=0||age>100) { printf("年龄应在0-100之间,请重新输入年龄! \n"); right=1; getchar(); } elseright=0; }while(right==1); StuInfo[found].Age=age; do { printf("\n班号(6位): "); scanf("%s",cno); if(strlen(cno)! =6) { printf("输入错误,班号长度应为6位数! \n"); right=1; getchar(); } elseright=0; }while(right==1); strcpy(StuInfo[found].CInfo.Cno,cno); printf("\n班名: "); scanf("%s",&StuInfo[found].CInfo.Cname); if((fpw=fopen("StuInfo.txt","w"))==NULL) { printf("文件打不开,保存失败! \n"); menu(); } for(i=0;i { fprintf(fpw,"\n%s\t%s\t%s\t%d\t%s\t%s",StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname); } fclose(fpw); printf("\n修改成功! \n"); printf("\n请按enter键返回主菜单! \n"); getchar(); getchar(); menu(); } } if(found<0) { printf("\n没有找到该学号的记录: \n"); printf("\n请按enter键返回主菜单! \n"); getchar(); getchar(); menu(); } } voidbrowse()//显示所有学生信息 { intnum; inti; FILE*fp; if((fp=fopen("StuInfo.txt","r"))==NULL) { printf("文件打不开! \n"); menu(); } for(i=0;! feof(fp);i++)//读取文件 { fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].Age,&StuInfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname); } fclose(fp); num=i; printf("\n已添加%d个学生信息\n\n",num); printf("姓名性别学号年龄班号班名\n"); for(i=0;i { printf("%s%s%s%d%s%s\n",StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname); } printf("\n请按enter键返回主菜单! \n"); getchar(); getchar(); menu(); } voidquiry() { intchose; intright; do { system("cls"); printf("\n\t1-按学号查询\t2-按姓名查询\t3-某班学生信息\t4-返回\n"); printf("\n请输入数字选择: "); scanf("%d",&chose); if(chose<1||chose>4) { right=1; getchar(); } elseright=0; }while(right==1); switch(chose) { case1: bySno();break; case2: bySname();break; case3: byCno();break; case4: menu(); } } voidbySno() { intfound=-1; intnum; inti; charno[20]; FILE*fp; if((fp=fopen("StuInfo.txt","r"))==NULL) { printf("文件打不开! \n"); menu(); } for(i=0;! feof(fp);i++)//读取文件 { fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].Age,&StuInfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname); } num=i; fclose(fp); printf("\n请输入学生学号: "); scanf("%s",no); for(i=0;i { if(strcmp(no,StuInfo[i].Sno)==0) { found=i; printf("\n该学生的信息为: \n\n"); printf("姓名性别学号年龄班号班名\n"); printf("%s\t%s\t%s\t%d\t%s\t%s\n",StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sno,StuInfo[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname); } } if(found<0)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生证 管理 系统 课程设计 报告