




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计报告
学院:地球科学学院
专业:资源环境与城乡规划管理
题目:学生证管理系统
班号:014072-XX
姓名:李仙伟
学号:XXXXXXXX
指导教师:XXXXXXXX
2010年11月26日
报告目录
一、课程设计目的...............................................3
二、实习内容及要求.............................................3
三、需求分析...................................................3
四、总体分析...................................................3
五、详细设计...................................................4
5.0头文件及结构体................................................................4
5.1主函数..........................................................................5
5.2菜单模块........................................................................5
5.3添加模块.......................................................................6
5.4修改模块........................................................................10
5.5浏览模块......................................................................14
5.6查询模块.......................................................................15
5.6.1按学号查询...............................................................15
5.6.2按名字查询................................................................16
5.6.3按班级查询...............................................................17
5.7统计模块......................................................................18
5.7.1男生信息...................................................................19
5.7.2女生信息...................................................................21
5.7.3全体学生信息.............................................................23
5.8删除模块.....................................................................23
六、上机操作...................................................26
6.1系统说明.....................................................................26
6.2系统测试.....................................................................26
七、总结.......................................................32
八、源代码.....................................................32
一、课程设计目的
通过实践,学会编制结构清晰、风格良好、数据结构适当的C语言程序,加深对C语言
基础知识的理解和掌握,进一步巩固C语言编程实践能力,锻炼思维逻辑和解决综合性实际
问题的能力。
二、实习内容及要求
1、用C语言编写一个学生证管理系统,该系统具有以下功能:
(1)录入某位学生的学生证信息;
(2)给定学号,显示某位学生的学生证信息;
(3)给定某个班级的班号,显示该班所有学生的学生证信息;
(4)给定某位学生的学号,修改该学生的学生证信息;
(5)给定某位学生的学号,删除该学生的学生证信息;
(6)提供一些统计各类信息的功能;
(7)提供浏览所有学生的学生证信息的功能。
2、输入要求
应用程序运行后,在屏幕上显示一个菜单;用户可以根据要求,选定相应的操作项目;
进入某个操作后,根据应用程序的提示,从键盘输入相应的信息。
3、输出要求
(1)应用程序运行后,要在屏幕上显示一个菜单;
(2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式
及结束方式等。
三、需求分析
根据题目要求,学生信息要从文本文件中存取,所以本程序应该提供读写文件,显示、
统计、查询、修改记录,保存文件等操作,此外,还应该提供键盘式选择菜单实现功能。
四、总体设计
根据需求分析,可以把这个系统的设计分为添加、修改、查询、浏览、统计、删除六大
模块,其中查询模块可以分为三个子模块,统计模块可以分为三个子模块,子模块下面还有子
函数;系统功能模块图如下所示:
五、详细设计
5.0头文件及结构体
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#defineN100
structClass〃班级
(
charCname[20];〃班名
charCno|20];〃班号
);
structStudent〃学生
{
charSname[20];〃姓名
charSex[10];〃性别
charSno[20];〃学号
intAge;//年龄
structClassCInfo;〃嵌套结构体,表示班级信息
}StuInfo[N];〃结构体数组,用作读取和存放临时数据
5.1主函数
voidmain()
menu();〃菜单
getchar();
5.2菜单
voidmenu()
(
intchose;
intright;
do
{
printf("\n\t\t\t\t学生证管理系统\n");
printf(".........................................");
printf("菜单:\tl-添加\t2-修改\t3-浏览全部\t4-查询\t5-统计\t6-删除\t7-退出\n");
printf(".........................................");
printf("请输入数字选择:");
scanf("%d",&chose);
if(chose<lllchose>8)
(
right=l;
printf("输入错误,请重新输入!\n");
getchar();
elseright=O;
}while(right==l);
switch(chose)
casel:add();break;〃添加模块
case2:modify。;break;〃修改模块
case3:browse();break;〃浏览模块
case4:quiry();break;〃查询模块
case5:stastic();break;〃统计模块
case6:Delete();break;〃删除模块
case7:exit(0);〃退出
)
5.3添加模块
首先要判断文件
Stulnfo.txt是否存在,如
果存在就以读写(r+)的方
式打开,如果不存在,就以
写(w)的方式创建文件
Stulnfo.txto输入格式要
求:性别为男或女,学号为
11位且不能重复,年龄在
0700之间,班级号为6位,
程序提供了完善的验证机
制,输入错误时将提示重新
输入直到正确为止。此外,
如果以读写的方式打开,还
要判断记录数num<N是否
成立,因为结构体数组的大
小为N,当num=N时-,表示
已满,不能再存储数据,需
要修改N的值。
voidadd()
intnum;〃表示记录数
inti;
intage;〃临时变量,用于验证输入的性别是否满足条件
charsno[20];〃临时变量,用于验证输入的学号是否满足条件
charsex[20|;〃临时变量,用于验证输入的性别是否满足条件
charcno[20J;〃临时变量,用于验证输入的班号是否满足条件
intright;
FILE*fp;
if((fp=fopen("StuInfo.txt,,,',r+',))==NULL)〃以读写方式打开
(
if((fp=fopen("StuInfo.txt","w"))==NULL)〃文件不存在就创建文件
{
printf(1\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=l;
getchar();
)
elseright=O;
}while(right==l);
strcpy(Stulnfo[0].Sex,sex);
do
(
printf("\n学号(11位)
scanf(M%sM,sno);
if(strlen(sno)!=l1)
{
printf("输入错误,学号长度应为11位数!\n");
right=l;
getchar();
elseright=O;
}while(right==l);
strcpy(StuInfo[0].Sno,sno);
do
(
printf(n\n年龄:");
scanf("%d",&age);
if(age<=Ollage>100)
(
printf("年龄应在0-100之间,请重新输入年龄!\n");
right=l;
getchar();
)
elseright=O;
)while(right==l);
Stu!nfo|0|.Age=age;
do
(
printf("\n班号(6位):”);
scanf(M%sn,cno);
if(strlen(cno)!=6)
(
printff输入错误,班号长度应为6位数!\n");
right=l;
getchar();
)
elseright=O;
}while(right==l);
strcpy(StuInfo[OJ.CInfo.Cno,cno);
printf(\n班名:");
scanf(n%su,&StuInfo[0].CInfo.Cname);
fprintf(fp,',\n%s\t%s\t%s\t%d\t%s\t%s,,,Stulnfo[0].Sname,StuInfo|0|.Sex,StuInfo[0].Sno,StuInfo[0].Age,Stu
Info[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,&StuI
nfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname);
num=i;〃记录数
if(num=N)
(
printf(”\n保存记录数超出结构体数组数的大小,请先修改N的值!\n");
printf("\n请按enter键返回主菜单!\n");
getchar();
getchar();
menu();
)
printf(An请按照提示输入学生信息:\n\n");
printf("姓名:]
scanf("%sn,&StuInfo[num].Sname);
do
(
printf("\n性别(男或女):");
scanf(M%su,sex);
if((strcmp(sex,"男")!=0)&&(strcmp(sex,"女")!=0))
(
printf("输入错误,请输入男或女!\n");
right=l;
getchar();
}
elseright=O;
}while(right==l);
strcpy(Stulnfo|num].Sex,sex);
do
(
printf("\n学号(11位):”);
scanf("%s”,sno);
if(strlen(sno)!=11)
(
printf("输入错误,学号长度应为11位数!\n");
right=l;
getchar();
}
elseright=O;
for(i=0;i<num;i++)
(
if(strcmp(sno,StuInfo[i].Sno)==0)
{
printf("该学号已经存在,请重新输入!\n“);
right=1;
getchar();
}while(right==l);
strcpy(StuInfo[num].Sno,sno);
do
(
printf("\n年龄:");
scanf(M%d",&age);
if(age<=Ollage>100)
(
printf("年龄应在0-100之间,请重新输入年龄!\n");
right=l;
getchar();
)
elseright=O;
}while(right==l);
StuInfo[num].Age=age;
do
(
printf("\n班号(6位)
scaneno);
if(strlen(cno)!=6)
(
printf("输入错误,班号长度应为6位数!\n");
right=l;
getchar();
)
elseright=O;
}while(right==l);
strcpy(StuInfo[numl.CInfb.Cno,cno);
printfCn班名:");
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,Stu[nfb[num].Sno,StuInfb[nu
m].Age,StuInfo[num].CInfo.Cno,StuInfo[num].CInfo.Cname);
fclose(fp);
printfCn保存成功!\n");
printf('\n请按enter键返回主菜单!\n");
getchar();
getchar();
menu();
5.4修改模块
先判断文件Stulnfo.txt以读
(r)的方式能否打开,不能就返回,
可以就读入记录;然后输入学号查找
记录,没找到就返回,找到就按照提(fpr=fopen("StuInfo.txt","r"))=NULL
示修改该记录,与输入模块一样,输
入的格式要求:性别为男或女,学号____+否
为11位且不能与除当前修改的记录读取文件
的学号外的记录的学号重复,年龄在
0-100之间,班级号为6位,程序提_____X_____
供了完善的验证机制,输入错误时将输入学号
提示重新输入直到正确为止。输入完
成后,再以写(w)的方式创建文件,▼
不能创建就返回,可以就将结构体数是否存在该学号的记录
组中的所有记录保存到文件中,这与
添加稍有差别,最后返回主菜单。是
根据原示输
入新信息是
voidmodifyO
▼
{
',
intnum;(fpw=fopen(StuInfo.txt","w"))=NULL
inti;
否
intright;______X______
intage;保存数据
charsex[20];
charcno[20];?是
»主金单<
charsno[20];
intfound=-l;
charStuNO[20];
FILE*fpr,*fpw;
if((fpr=fopen(',StuInfo.txtM;,r,,))==NULL)
printfC文件打不开!\nn);
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,&StuI
nfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname);
num=i;
fclose(fpr);
printf(An请输入学号选择要修改的记录:”);
scanf(H%sn,StuNO);
for(i=0;i<num;i++)
(
if(strcmp(StuNO,StuInfo[i].Sno)=0)
(
found=i;
printfC*\n你要修改的学生信息为:\n\nn);
printfC姓名性别学号年龄班号班名\n");
printf(n%s\t%s\t%s\t%d\t%s\t%s\nn,StuInfb[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=l;
getchar();
)
elseright=O;
}while(right==l);
strcpy(Stu1nfo|foundJ.Sex,sex);
do
(
printf("\n学号(11位):");
scanf(n%sn,sno);
if(strlen(sno)!=11)
(
printf("输入错误,学号长度应为11位数!\n");
right=l;
getchar();
}
elseright=O;
for(i=0;i<num;i++)
(
if((i!=found)&&(strcmp(sno,StuInfo[i].Sno)==0))
{
printf("该学号已经存在,请重新输入!\n");
right=1;
getchar();
}while(right==l);
strcpy(StuInfo[found].Sno,sno);
do
{
printf("\n年龄:");
scanf("%d",&age);
if(age<=Ollage>100)
(
printf("年龄应在0-100之间,请重新输入年龄!\n");
right=l;
getchar();
)
elseright=O;
}while(right==l);
Stulnfo[found].Age=age;
do
(
printf("\n班号(6位):”);
scanf(n%sn,eno);
if(strlen(cno)!=6)
(
printf("输入错误,班号长度应为6位数!\n");
right=l;
getchar();
)
elseright=O;
}while(right==l);
strcpy(StuInfo[found].CInfo.Cno,cno);
printfC'n班名:");
scanf("%s”,&StuInfo[found].CInfo.Cname);
if((fpw=fopen(,,StuInfo.txtM,',w',))==NULL)
(
printf("文件打不开,保存失败!\n'f);
menu();
)
for(i=0;i<num;i++)〃保存文件
(
fprintf(fpw,n\n%s\t%s\t%s\t%d\t%s\t%s'\StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,S
tuInfb[i].CInfo.Cno,StuInfo[i].CInfo.Cname);
)
fclose(fpw);
printf(n\n修改成功!\nu);
printf("\n请按enter键返回主菜单!\n");
getchar();
getchar();
menu();
)
)
if(found<0)
{
printf("\n没有找到该学号的记录:\n");
printf(M\n请按enter键返回主菜单!\n");
getchar();
getchar();
menu();
5.5浏览模块
voidbrowse()
{
intnum;
inti;
FILE*fp;
if((fp=fopen(',StuInfo.txt'",',r"))==NULL)
(
printf("文件打不开!\nu);
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,&St
uInfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname);
)
fclose(fp);
num=i;
printf('\n已添加%d个学生信息\n\n”,num);
printf("姓名性别学号年龄班号班名\屋);
for(i=0;i<num;i++)
{
printf(n%s\t%s\t%s\t%d\t%s%s\n",StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i
].CInfo.Cno,StuInfb[i].CInfo.Cname);
printf(An请按enter键返回主菜单!\n");
getchar();
getchar();
menu();
)
5.6查询模块
voidquiry()
(
intchose;
intright;
do
(
printf(”\nl-按学号查询\t2-按姓名
查询\t3.某班学生信息\t4返回\n”);
printf(”\n请输入数字选择
scanf(,'%d,,,&chose);
if(chose<lllchose>4)
((S¥>
right=l;
getchar();
)
elseright=O;
}while(right==l);
switch(chose)
(
casel:bySno();break;
case2:bySname();break;
case3:byCno();break;
case4:menu();
)
)
5.6.1根据学号查找某学生的学生证信息:
voidbySno()
(
intfound=-l;
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,&StuInfofi].Age,
&StuInfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname);
)
num=i;
fclose(fp);
printf(,,\n请输入学生学号
scanf("%s”,no);
for(i=0;i<num;i++)
if(strcmp(no»StuInfo[i].Sno)==0)
found=i;
printf(n\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,StuI
nfo[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);
)
)
if(found<0)
printf(n\n没有找到该班号的记录!\n");
printf(u\n请按enter键返回上级菜单!\n");
getchar();
getchar();
quiry();
)
5.6.2根据姓名查找某学生的学生证信息:
voidbySname()
(
intfound=-1;
intnum;
inti;
charname[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(n%su,name);
for(i=0;i<num;i++)
(
if(strcmp(name,Stulnfo[i].Sname)==0)
(
found=i;
printf(”\n该学生的信息为:\n\nn);
printf(H姓名性别学号年龄班号班名\n“);
printf(H%s\t%s\t%s\t%d\t%s\t%s\n,\StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sno,Stu
Info[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);
}(开始)
if(found<0)
printf("\n没有找到该班号的记录到");
printf("\n请按enter键返回上级菜单!\n");
getchar();
getchar();
quiry();
)
5.6.3根据班号查询某个班级所有学生的
学生证信息:
voidbyCno()
(
intfound="l;
intnum;
inti;
charClaNO[20];
FILE*fp;
if((fp=fopen(,,StuInfo.txt,,,,,r,,))==NULL)
(
printf(“文件打不开!\nn);
menu();
)
for(i=0;!feof(fp);i++)
fscanf(fp,*,%s%s%s%d%s%s,1,&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(n%sn,ClaNO);
printf(”\n该班级的学生信息为:\n\nn);
printf("姓名性别学号年龄班号班名\n");
fbr(i=O;i<num;i++)
(
if(strcmp(ClaNO,StuInfo[i].CInfo.Cno)==0)
(
found二i;
printf(',%s\t%s\t%s\t%d\t%s\t%s\n',,StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sno,StuI
nfo[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);
if(found<0)//found小于0,说明不存在班号的学生记录
printf(H\n没有找到该班号的记录!\n");
printf(,r\n请按enter键返回上级菜单!\n");
getchar();
getchar();
quiry();
)
5.7统计模块
该模块实现了基本的统计功能,包括
分别统计男女生的人数、平均年龄,以及
全体学生的人数和基本年龄;
voidstastic()
{
intchose;
intright;
do
|
printf("\n1-全体男生\t2-全体女生
\t3-全体学生\t4-返回\n");
(主菜单)
prinlf("\n请输入数字选择:");
scanf("%d",&chose);
if(chose<lllchose>4)
right=l;
getchar();
)
elseright=O;
}while(right==l);
switch(chose)
{
case1:
Male();〃男生的统计信息
printf("\n请按enter键返回上级菜单!\n");
getchar();getchar();
stastic();
break;
case2:
FemaleO;〃女生的统计信息
printf(H\n请按enter键返回上级菜单!\n");
getchar();getchar();
stastic();
break;
case3:
StuMsgO;〃全体学生的统计信息
printf(H\n请按enter键返回上级菜单!\n");
getchar();getchar();
stastic();
break;
case4:menu();
)
)
5.7.1统计男生信息子模块
voidMale()
(
intnum;〃人数是
floatmg;〃平均年龄
num=MaleNum();
mg=MaleMG();
printf(An男生总人数为:%d\n平均年
龄为:%f\n",num,mg);
}strcmp(“为”,Stulnfb[i].Sex)
Count-H
返回男生人数子函数
intMaleNum()returncount
intnum;
intcount=0;
inti;
FILE*fp;
if((fp=fopen(',StuInfo.txt',/,r"))==NULL)
(
printf("文件打不开!\nn);
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,&Stu
Info[i].CInfo.Cno,&StuInfo[i].CInfo.Cname);
)
fclose(fp);
num=i;
for(i=0;i<num;i++)
(
if(strcmp(MM,Stulnfo[i].Sex)==0)
count++;
)
)
returncount;
)
返回男生平均年龄
floatMaleMG()
{
intnum;
intcount=0;
intfound;
floatmAge=0;
inti;
FILE*fp;for(i=0;!feofl[fp)p++)
if<(fp=fopen(nStuInfo.txtn;'r"))==NULL)sircmp(w!ljH5tulnfo[i].Sex)=0
fount=l
(Count-H
u
printf("文件打不开!\n);mAge*=StuInfb[found].Age;
menu();mAge./=count;
)
for(i=0;!feof(fp);i++)returnmAge
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;
for(i=0;i<num;i-H-)
(
if(strcmp("男n,StuInfo[i].Sex)==0)
(
found=i;
count++;
mAge+=StuInfo[i].Age;
)
}
if(count>0)
(
mAge/=count;
)
returnmAge;
)
5.7.2统计女生信息子模块
voidFemale()
{
intnum;
floatmg;
num=FemaleNum();
mg=FemaleMG();
printf('\n女生总人数为:%d\n平均年龄为:%f\nn,num,mg);
)
返回女生人数子函数
intFemaleNum()
(
intnum;
intcount=0;
inti;
FILE*fp;
if((fp=fopen(HStuInfo.txt,,,,,r,,))==NULL)
($【rcmp("女",StuInfb[i].Sex)
printf("文件打不开!\nn);Count-H-
menu();
for(i=0;!feof(fp);i++)returncount
fscanf(fp,',%s%s%s%d%s%s,1,&Stulnfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].Age,&
StuInfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname);
fclose(fp);
num=i;
for(i=0;i<num;i++)
if(strcmp(,,A*,,,StuInfo[i].Sex)==0)
(
count++;
)
)
returncount;
1
返回女生平均年龄
floatFemaleMG()
(读取文件
intnum;
intcount=0;for(i=0;!feo忻):iH)
intfound;surmpC女"Slulnfbm.SCK>=0
fbunt=l
floatmAge=0;Count”
inti;mAge-Stulnfo[found].Age:
mAgc/=count;
FlLE*fp;
if((fp=fopen("Stulnfo.txtn,MrH))==NULL)
returnmAgc
(
printf("文件打不开!\n");
menu();
)
for(i=0;!feof(fp);i++)
(
fscanf(fp,M%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;
for(i=0;i<num;i-H-)
(
if(strcmp("^,\StuInfo[i].Sex)==0)
(
found=i;
count++;
mAge+=Stu!nfo[i].Age;
if(count>0)
(
mAge/=count;
)
returnmAge;
)
5.7.3全体学生统计信息子模块
voidStuMsgO
(
intnum;
floatmg;
num=StuNum();
mg=MG();
printf('\n学生总人数为:%d\n学生平均年龄为:%f\n,',num,mg);
Male();
Female();
)
返回全体学生的人数子函数
intStuNumO
(
intnum;
num=MaleNum()+FemaleNum();
returnnum;
)
返回全体学生的平均年龄子函数
floatMG()
{
floatmAge;
mAge=(MaleNum()*MaleMG()+FemaleNum()*FemaleMG())/(MaleNum()+FemaleNum());
returnmAge;
)
5.8删除模块
voidDelete()
(
intnum;
inti;
(开始)
intfound=-l;
charStuNO[20];
FILE*fpr*fpw;
if((fpr=fopen(,,StuInfo.txt,,,,,r,'))==NULL)
(
printf("文件打不开!\nn);
menu();
)
for(i=O;!feof(fpr)u++)
(
fscanf(fpr,u%s%s%s%d%s%sn,
&StuInfo[i].Sname,&StuInfo[i].Sex,
&Stu!nfo[i].Sno,&StuInfo|i].Age,
&StuInfo[i].CInfo.Cno,
&StuInfo|i].CInfo.Cname);
)
num=i;
fclose(fpr);
printf(An请输入学号选择你要删除的记录:");
scanf("%s”,StuNO);
for(i=0;i<num;i++)
(
if(strcmp(StuNO,StuInfo[i].Sno)==0)
(是
found=i;
printf("\n你删除的学生信息为:\n\n");
printf("姓名性别学号年龄班号班名\n");
printf(n%s\t%s\t%s\t%d\t%s\t%s\n",StuInfo[found].Sname,StuInfo[foundJ.Sex,StuInfo[found].Sno,Stu
Info[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);
if(found<num-l)
(
for(found;found<num-l;found+4-)
strcpy(StuInfo[found].Sname,StuInfb[found+l].Sname);
strcpy(StuInfo[found].Sex,StuInfo[found+l].Sex);
strcpy(StuInfo[found].Sno,StuInfo[found+l].Sno);
StuInfo[found].Age=StuInfo[found+1].Age;
strcpy(StuInfo[found].CInfo.Cno,StuInfo[found+l].CInfo.Cno);
strcpy(Stu!nfo|found|.CInfo.Cname,Stulnfo[found+l|.CInfo.Cname);
)
)
if((fpw=fopen("Stulnfo.txt",Hw"))==NULL)
printf("文件打不开!\n");
menu();
)
for(i=0;i<num-l;i++)〃保存文件
(
fprintf(fpw,"\n%s\t%s\t%s\t%d\t%s\t%sH,StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[il.Sno,StuInf
o[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname);
)
fclose(fpw);
printf("\n修改成功!\n");
printf(H\n请按enter键返回主菜单!\n");
getchar();
getchar();
menu();}
)
if(found<0)
(
printf(”\n没有找到该学号的记录:\n");
printf(H\n请按enter键返回主菜单!\n");
getchar();
getchar();
menu();
六、上机操作
6.1系统说明
本系统存储信息的文本文件名为Stulnfo.txt;该文件在程序主目录下,添加模块先采用
读写的方式(r+)打开文件,如果不存在就以写的方式(w+)创建该文件,因此,假如该文
件已存在,则也可以直接打开该文件进行浏览、编辑;
D©星国
DebugStudent,cStudent,dspStudentStudent,opt
I电Stulnfo-记事本,1□Ix|
剧si文件⑹编辑(0格式(Q)帮助3
2007100392622014072地理二班
2001477582123014072地理二班
2001544875423014071地理一班
2558444758621014071地理一班
女
2007100445821014072地理三班
6.2系统测试
6.2.1浏览数据
°C:\DocumentsandSettings\Administrator\桌面\学生证管理系统、Debug\Student.exe”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 分布式计算框架下的异步任务调度-洞察阐释
- 数据驱动的二手车市场信任度提升-洞察阐释
- 2025秋季幼儿园情绪管理与教育计划
- 2025年幼儿园社会情感发展计划
- 生物医学的伦理革命与未来挑战-洞察阐释
- 幼儿园科学启蒙教学计划
- C证培训课程心得体会
- 石油钻探作业应急预案及安全措施
- 歌剧演出市场分析-洞察阐释
- 通信线路维护的安全技术措施
- 【MOOC】运动损伤与急救-西安电子科技大学 中国大学慕课MOOC答案
- 2025年度应急预案演练计划
- 1、2024广西专业技术人员继续教育公需科目参考答案(98分)
- 新课标I、Ⅱ卷 (2024-2020) 近五年高考英语真题满分作文
- 【MOOC】结构力学(一)-西南交通大学 中国大学慕课MOOC答案
- 改革开放简史(北方工业大学)知到智慧树章节答案
- 急诊科临床诊疗指南-技术操作规范更新版
- 知识付费领域内容创业模式研究报告
- 2024年江西省高考物理试卷真题(含答案解析)
- 基于单片机的汽车智能照明系统-毕业设计(论文)
- 【民族非物质文化遗产的保护与传承探究的国内外文献综述3000字】
评论
0/150
提交评论