c语言学生证管理系统课程设计报告

上传人:dus****log 文档编号:125733513 上传时间:2022-07-27 格式:DOC 页数:35 大小:596KB
返回 下载 相关 举报
c语言学生证管理系统课程设计报告_第1页
第1页 / 共35页
c语言学生证管理系统课程设计报告_第2页
第2页 / 共35页
c语言学生证管理系统课程设计报告_第3页
第3页 / 共35页
点击查看更多>>
资源描述
红河学院工学院课程设计报告专业: 年级: 姓名:成绩:批改时间:红河学院 工学院编制说 明1、本报告供学生课程设计时使用。2、学生应认真阅读课程设计要求。3、课程设计报告里面的内容要手工填写,以备存档使用(源程序可打印)。4、课程设计的总评成绩根据课程的性质,按一定比例计入该门课程成绩。5、课程设计报告中的各模块填写的内容是评分的主要依据,如果不够书写,可以自行添加附页。6、按规定的时间提交报告给教师评定成绩,由任课教师交到工学院存档。课程设计目录课程名称:高级语言程序设计序号课程设计名称起止页码设计任务题目名称学生证管理系统设计班级1指导教师地点工学院成绩保存输入添加的联系资料是否保存开始返回菜单函数结束添加模块NY学年2011-2012开始日期结束日期一、问题分析(围绕设计题目,进行课程设计开始前的准备过程,在此以问题分析的形式展开,从设计的总体性上对所承担的设计题目的思考,分析,此模块内容请手工填写) 对这个系统需求分析,学生证管理系统要有储存、录入、读取、输出、添加、删除、修改、查询、统计的功能。 我们将各种功能模块化,以便进行设计。分为保存信息、输入模块、读取信息、更新模块(添加学生信息,删除信息,修改模块)、查询模块(按学号查找,按姓名查找,按班级查找)、统计模块。然后根据各模块分别设计程序。 二设计流程图根据需求分析,可以把这个系统的设计分为添加、修改、查询、浏览、统计、删除六大模块,其中查询模块可以分为三个子模块,统计模块可以分为三个子模块,子模块下面还有子函数;系统功能模块图如下所示:1. 主函数模块2. 添加模块3. 修改模块 4.浏览模块5.查询模块6.统计模块7.删出模块三程序代码#include#include#include#define N 100struct Class /班级 char Cname20;/班名 char Cno20;/班号;struct Student/学生 char Sname20;/姓名 char Sex10;/性别 char Sno20;/学号 int Age;/年龄 struct Class CInfo;/嵌套结构体,表示班级信息StuInfoN;void menu(); /主菜单 void add(); /添加模块void modify(); /修改模块void Delete(); /删除模块void browse(); /浏览模块void quiry(); /查询模块void stastic(); /统计模块void bySname(); /按姓名查询,子模块void bySno(); /按学号查询,子模块void byCno(); /按班号查询,子模块void StuMsg(); /返回全体学生统计信息,子模块void Female(); /女生统计信息,子模块void Male(); /男生统计信息,子模块int FemaleNum(); /返回女生人数,子函数float FemaleMG(); /返回女生平均年龄,子函数int MaleNum(); /返回男生人数,子函数float MaleMG(); /返回男生平均年龄,子函数int StuNum(); /返回全体学生人数,子函数float MG(); /返回全体学生的平均年龄,子函数void main() menu(); getchar();void menu() /菜单int chose; int right; do system(cls); /清屏 printf(ntttt学生证管理系统n); printf(); printf( 菜单:t1-添加t2-修改t3-浏览全部t4-查询t5-统计t6-删除t7-退出n); printf(); printf(请输入数字选择:); scanf(%d,&chose); if(chose7) printf(输入错误,请重新输入!n);right=1;getchar(); else right=0;while(right=1);switch(chose)case 1:add(); break;case 2:modify(); break;case 3:browse(); break;case 4:quiry(); break;case 5:stastic(); break;case 6:Delete(); break;case 7:exit(0); void add() /添加学生信息,一次添加一条记录 int num; int i; int age; char sno20; char sex20; char cno20; int right; FILE*fp; if(fp=fopen(StuInfo.txt,r+)=NULL) /以读写方式打开 if(fp=fopen(StuInfo.txt,w)=NULL) /文件不存在则创建文件 printf(n文件不存在且创建失败,返回!n); menu(); printf(n请按照提示输入学生信息:nn); printf(姓名:); scanf(%s,&StuInfo0.Sname); do printf(n性别(男或女):); scanf(%s,sex); if(strcmp(sex,男)!=0)&(strcmp(sex,女)!=0) printf(输入错误,请输入男或女!n);right=1;getchar(); else right=0; while(right=1); strcpy(StuInfo0.Sex,sex); do printf(n学号(11位):); scanf(%s,sno); if(strlen(sno)!=11) printf(输入错误,学号长度应为11位数!n);right=1;getchar(); else right=0; while(right=1); strcpy(StuInfo0.Sno,sno); do printf(n年龄:); scanf(%d,&age); if(age100) printf(年龄应在0-100之间,请重新输入年龄!n);right=1;getchar(); else right=0; while(right=1); StuInfo0.Age=age; do printf(n班号(6位):); scanf(%s,cno); if(strlen(cno)!=6) printf(输入错误,班号长度应为6位数!n);right=1;getchar(); else right=0; while(right=1); strcpy(StuInfo0.CInfo.Cno,cno); printf(n班名:); scanf(%s,&StuInfo0.CInfo.Cname); fprintf(fp,n%st%st%st%dt%st%s,StuInfo0.Sname,StuInfo0.Sex,StuInfo0.Sno,StuInfo0.Age,StuInfo0.CInfo.Cno,StuInfo0.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,&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); num=i; if(num=N) printf(n保存记录数超出结构体数组数的大小,请先修改N的值n); menu(); printf(n请按照提示输入学生信息:nn); printf(姓名:); scanf(%s,&StuInfonum.Sname); do printf(n性别(男或女):); scanf(%s,sex); if(strcmp(sex,男)!=0)&(strcmp(sex,女)!=0) printf(输入错误,请输入男或女!n);right=1;getchar(); else right=0; while(right=1); strcpy(StuInfonum.Sex,sex); do printf(n学号(11位):); scanf(%s,sno); if(strlen(sno)!=11) printf(输入错误,学号长度应为11位数!n);right=1;getchar(); else right=0; for(i=0;inum;i+) if(strcmp(sno,StuInfoi.Sno)=0) printf(该学号已经存在,请重新输入!n); right=1; getchar(); while(right=1); strcpy(StuInfonum.Sno,sno); do printf(n年龄:); scanf(%d,&age); if(age100) printf(年龄应在0-100之间,请重新输入年龄!n);right=1;getchar(); else right=0; while(right=1); StuInfonum.Age=age; do printf(n班号(6位):); scanf(%s,cno); if(strlen(cno)!=6) printf(输入错误,班号长度应为6位数!n);right=1;getchar(); else right=0; while(right=1); strcpy(StuInfonum.CInfo.Cno,cno); printf(n班名:); scanf(%s,&StuInfonum.CInfo.Cname); /把该记录写到文件末尾 fprintf(fp,n%st%st%st%dt%st%s,StuInfonum.Sname,StuInfonum.Sex,StuInfonum.Sno,StuInfonum.Age,StuInfonum.CInfo.Cno,StuInfonum.CInfo.Cname); fclose(fp); printf(n保存成功!n); printf(n请按enter键返回主菜单!n); getchar(); getchar(); menu();void modify()/修改学生信息 int num; int i; int right; int age; char sex20; char cno20; char sno20; int found=-1; char StuNO20; 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,&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); num=i; fclose(fpr); printf(n请输入学号选择要修改的记录:); scanf(%s,StuNO); for(i=0;inum;i+) if(strcmp(StuNO,StuInfoi.Sno)=0) found=i; printf(n你要修改的学生信息为:nn); printf(姓名 性别 学号 年龄 班号 班名n); printf(%st%st%st%dt%st%sn,StuInfoi.Sname,StuInfoi.Sex,StuInfoi.Sno,StuInfoi.Age,StuInfoi.CInfo.Cno,StuInfoi.CInfo.Cname); printf(n请按照提示输入学生的新信息:n); printf(姓名:); scanf(%s,&StuInfofound.Sname); do printf(n性别(男或女):); scanf(%s,sex); if(strcmp(sex,男)!=0)&(strcmp(sex,女)!=0) printf(输入错误,请输入男或女!n);right=1;getchar(); else right=0; while(right=1); strcpy(StuInfofound.Sex,sex); do printf(n学号(11位):); scanf(%s,sno); if(strlen(sno)!=11) printf(输入错误,学号长度应为11位数!n);right=1;getchar(); else right=0; for(i=0;inum;i+) if(i!=found)&(strcmp(sno,StuInfoi.Sno)=0) printf(该学号已经存在,请重新输入!n); right=1; getchar(); while(right=1); strcpy(StuInfofound.Sno,sno); do printf(n年龄:); scanf(%d,&age); if(age100) printf(年龄应在0-100之间,请重新输入年龄!n);right=1;getchar(); else right=0; while(right=1); StuInfofound.Age=age; do printf(n班号(6位):); scanf(%s,cno); if(strlen(cno)!=6) printf(输入错误,班号长度应为6位数!n);right=1;getchar(); else right=0; while(right=1); strcpy(StuInfofound.CInfo.Cno,cno); printf(n班名:); scanf(%s,&StuInfofound.CInfo.Cname); if(fpw=fopen(StuInfo.txt,w)=NULL) printf(文件打不开,保存失败!n); menu(); for(i=0;inum;i+) /保存文件 fprintf(fpw,n%st%st%st%dt%st%s,StuInfoi.Sname,StuInfoi.Sex,StuInfoi.Sno,StuInfoi.Age,StuInfoi.CInfo.Cno,StuInfoi.CInfo.Cname); fclose(fpw); printf(n修改成功!n); printf(n请按enter键返回主菜单!n); getchar(); getchar(); menu(); if(found0) printf(n没有找到该学号的记录:n); printf(n请按enter键返回主菜单!n); getchar(); getchar(); menu(); void browse()/显示所有学生信息 int num; int i; 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,&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); fclose(fp); num=i; printf(n已添加%d个学生信息nn,num); printf(姓名 性别 学号 年龄 班号 班名n); for(i=0;inum;i+) /输出 printf(%s %s %s %d %s %sn,StuInfoi.Sname,StuInfoi.Sex,StuInfoi.Sno,StuInfoi.Age,StuInfoi.CInfo.Cno,StuInfoi.CInfo.Cname); printf(n请按enter键返回主菜单!n); getchar(); getchar(); menu();void quiry() int chose; int right; do system(cls); printf(nt1-按学号查询t2-按姓名查询t3-某班学生信息t4-返回n); printf(n请输入数字选择:); scanf(%d,&chose); if(chose4) right=1; getchar(); else right=0;while(right=1);switch(chose) case 1:bySno();break;case 2:bySname();break;case 3:byCno();break;case 4:menu(); void bySno() int found=-1; int num; int i; char no20; 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,&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); num=i; fclose(fp); printf(n请输入学生学号:); scanf(%s,no); for(i=0;inum;i+) if(strcmp(no,StuInfoi.Sno)=0) found=i; printf(n该学生的信息为:nn); printf(姓名 性别 学号 年龄 班号 班名n); printf(%st%st%st%dt%st%sn,StuInfofound.Sname,StuInfofound.Sex,StuInfofound.Sno,StuInfofound.Age,StuInfofound.CInfo.Cno,StuInfofound.CInfo.Cname); if(found0) printf(n没有找到该班号的记录!n); printf(n请按enter键返回上级菜单!n); getchar(); getchar(); quiry();void bySname() int found=-1; int num; int i; char name20; 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,&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); num=i; fclose(fp); printf(n请输入学生姓名:); scanf(%s,name); printf(n叫该姓名的学生信息为:nn); printf(姓名 性别 学号 年龄 班号 班名n); for(i=0;inum;i+) if(strcmp(name,StuInfoi.Sname)=0) found=i; printf(%st%st%st%dt%st%sn,StuInfofound.Sname,StuInfofound.Sex,StuInfofound.Sno,StuInfofound.Age,StuInfofound.CInfo.Cno,StuInfofound.CInfo.Cname); if(found0) printf(n没有找到该班号的记录!n); printf(n请按enter键返回上级菜单!n); getchar(); getchar(); quiry(); void byCno() int found=-1; int num; int i; char ClaNO20; 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,&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); num=i; fclose(fp); printf(n请输入班号:); scanf(%s,ClaNO); printf(n该班级的学生信息为:nn); printf(姓名 性别 学号 年龄 班号 班名n); for(i=0;inum;i+) if(strcmp(ClaNO,StuInfoi.CInfo.Cno)=0) found=i; printf(%st%st%st%dt%st%sn,StuInfofound.Sname,StuInfofound.Sex,StuInfofound.Sno,StuInfofound.Age,StuInfofound.CInfo.Cno,StuInfofound.CInfo.Cname); if(found0) printf(n没有找到该班号的记录!n); printf(n请按enter键返回上级菜单!n); getchar(); getchar(); quiry();void stastic() int chose; int right; do system(cls); printf(nt1-全体男生t2-全体女生t3-全体学生t4-返回n); printf(n请输入数字选择:); scanf(%d,&chose); if(chose4) right=1; getchar(); else right=0;while(right=1);switch(chose) case 1:Male();printf(n请按enter键返回上级菜单!n); getchar(); getchar(); stastic();break;case 2:Female();printf(n请按enter键返回上级菜单!n); getchar(); getchar(); stastic();break;case 3:StuMsg();printf(n请按enter键返回上级菜单!n); getchar(); getchar(); stastic();break;case 4:menu(); void Male()/男生基本统计信息 int num; float mg; num=MaleNum(); mg=MaleMG(); printf(n男生总人数为:%dn平均年龄为:%fn,num,mg);int MaleNum() /男生人数 int num; int count=0; int i; 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,&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); fclose(fp); num=i; for(i=0;inum;i+) if(strcmp(男,StuInfoi.Sex)=0) count+; return count;float MaleMG() /男生平均年龄 int num; int count=0; int found; float mAge=0; int i; 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,&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); fclose(fp); num=i; for(i=0;i0) mAge/=count; return mAge;int FemaleNum() /女生人数 int num; int count=0; int i; 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,&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); fclose(fp); num=i; for(i=0;inum;i+) if(strcmp(女,StuInfoi.Sex)=0) count+; return count;void Female() /女生基本统计信息 int num; float mg; num=FemaleNum(); mg=FemaleMG(); printf(n女生总人数为:%dn平均年龄为:%fn,num,mg);float FemaleMG() /女生平均年龄 int num; int count=0; int found; float mAge=0; int i; 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,&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); fclose(fp); num=i; for(i=0;i0) mAge/=count; return mAge;void StuMsg() /全体学生基本统计信息 int num; float mg; num=StuNum(); mg=MG(); printf(n学生总人数为:%dn学生平均年龄为:%fn,num,mg); Male(); Female();int StuNum() /全体学生人数 int num; num=MaleNum()+FemaleNum(); return num;float MG() /全体学生平均年龄 float mAge; mAge=(MaleNum()*MaleMG()+FemaleNum()*FemaleMG()/(MaleNum()+FemaleNum(); return mAge;void Delete() int num; int i; int found=-1; char StuNO20; 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,&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); num=i; fclose(fpr); printf(n请输入学号选择你要删除的记录:); scanf(%s,StuNO); for(i=0;inum;i+) if(strcmp(StuNO,StuInfoi.Sno)=0) found=i; printf(n你删除的学生信息为:nn); printf(姓名 性别 学号 年龄 班号 班名n); printf(%st%st%st%dt%st%sn,StuInfofound.Sname,StuInfofound.Sex,StuInfofound.Sno,StuInfofound.Age,StuInfofound.CInfo.Cno,StuInfofound.CInfo.Cname); if(foundnum-1) for(found;foundnum-1;found+) strcpy(StuInfofound.Sname,StuInfofound+1.Sname); strcpy(StuInfofound.Sex,StuInfofound+1.Sex); strcpy(StuInfofound.Sno,StuInfofound+1.Sno); StuInfofound.Age=StuInfofound+1.Age; strcpy(StuInfofound.CInfo.Cno,StuInfofound+1.CInfo.Cno); strcpy(StuInfofound.CInfo.Cname,StuInfofound+1.CInfo.Cname); if(fpw=fopen(StuInfo.txt,w)=NULL) printf(文件打不开!n); menu(); for(i=0;inum-1;i+) /保存文件 fprintf(fpw,n%st%st%st%dt%st%s,StuInfoi.Sname,StuInfoi.Sex,StuInfoi.Sno,StuInfoi.Age,StuInfoi.CInfo.Cno,StuInfoi.CInfo.Cname); fclose(fpw); printf(n修改成功!n); printf(n请按enter键返回主菜单!n); getchar(); getchar(); menu(); if(found0) printf(n没有找到该学号的记录:n); printf(n请按enter键返回主菜单!n); getchar(); getchar(); menu(); 四运行结果主界面五、课程设计过程问题讨论(此模块内容请手工填写) 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,C语言设计已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单C语言的开发技术是十分重要的。回顾起此次C语言课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!