学生证管理系统(C语言课程设计)_第1页
学生证管理系统(C语言课程设计)_第2页
学生证管理系统(C语言课程设计)_第3页
学生证管理系统(C语言课程设计)_第4页
学生证管理系统(C语言课程设计)_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论