




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课课 程程 设设 计计 报报 告告 专业: 年级: 姓名: 成绩: 批改时间: 说说明明 1、本报告供学生课程设计时使用。 2、学生应认真阅读课程设计要求。 3、课程设计报告里面的内容要手工填写,以备存档使用(源程序可 打印) 。 4、课程设计的总评成绩根据课程的性质,按一定比例计入该门课程 成绩。 5、课程设计报告中的各模块填写的内容是评分的主要依据,如果不 够书写,可以自行添加附页。 6、按规定的时间提交报告给教师评定成绩,由任课教师交到工学院 存档。 课程设计目录课程设计目录 课程名称:高级语言程序设计课程名称:高级语言程序设计 序号序号课程设计名称课程设计名称起止页码起止页码 设计任务设计任务 题目 名称 学生证管理系统设计 1 指导 教师 地点工学院成绩班级 学年2011-2012 开始 日期 结束 日期 一、问题分析一、问题分析(围绕设计题目,进行课程设计开始前的准备过程,在此以问题分 析的形式展开,从设计的总体性上对所承担的设计题目的思考,分析,此模块内容请 手工填写) 对这个系统需求分析,学生证管理系统要有储存、录入、读取、输出、添加、删除、 修改、查询、统计的功能。 我们将各种功能模块化,以便进行设计。分为保存信息、输入模块、读取信息、更 新模块(添加学生信息,删除信息,修改模块) 、查询模块(按学号查找,按姓名查找, 按班级查找) 、统计模块。然后根据各模块分别设计程序。 二设计流程图 根据需求分析,可以把这个系统的设计分为添加、修改、查询、浏览、统计、删 除六大模块,其中查询模块可以分为三个子模块,统计模块可以分为三个子模块,子 模块下面还有子函数;系统功能模块图如下所示: 1.主函数模块 2. 添加模块 3. 修改模块 4.浏览模块 开始 (fpr=fopen(StuInfo.txt,r)=NULL 否 读取文件 输入学号 是否存在该学号的记录 是 根据提示输 入新信息 是 (fpw=fopen(StuInfo.txt,w)=NULL 否 否 保存数据 是 主菜单 5.查询模块 6.统计模块 7.删出模块 三程序代码 #include #include #include #define N 100 struct Class char Cname20; char Cno20; ; struct Student char Sname20; char Sex10; /班级 /班名 /班号 /学生 /姓名 /性别 char Sno20;/学号 intAge;/年龄 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, 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, do printf(n 性别(男或女):); scanf(%s,sex); if(strcmp(sex,男)!=0) 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, 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, fprintf(fp,n%st%st%st%dt%st%s,StuInfo0.Sname,StuInfo0.Sex,StuInfo0.Sno,StuInfo 0.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, num=i; if(num=N) printf(n 保存记录数超出结构体数组数的大小,请先修改N 的值n); menu(); printf(n 请按照提示输入学生信息:nn); printf(姓名:); scanf(%s, do printf(n 性别(男或女):); scanf(%s,sex); if(strcmp(sex,男)!=0) 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, 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, /把该记录写到文件末尾 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, 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, do printf(n 性别(男或女):); scanf(%s,sex); if(strcmp(sex,男)!=0) 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) right=1; getchar(); while(right=1); strcpy(StuInfofound.Sno,sno); do printf(n 年龄:); scanf(%d, 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, 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, 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,St uInfoi.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, 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, 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.Sn o,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, 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.Sn o,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, 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.Sn o,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, 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, 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, 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, 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, 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, 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.Sn o,StuInfofound.Age,StuInfofound.CInfo.Cno,StuInfofound.CInfo.Cname); if(foundnum-1) for(found;foundnum-1;found+) strcpy(StuInfofound.Sname,StuInfofound+1.Sname
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 停车起步考试题目及答案
- 田径铅球理论考试题及答案
- 广东省东莞市松山湖莞美学校2024-2025学年上学期七年级数学期末教学质量检测(含答案)
- 2025年公需科目题目及答案
- 2025年公需科目考试试题与答案(保密意识与保密常识教育)
- 2025年公共营养师职业资格考试试题及答案
- 2025年高压电工复审考试练习题模拟题库及解析答案
- 2025年高校学生应征入伍板块题库+答案
- 2025年高级电工证考试题库及答案
- 高三题库及答案安徽
- 医院护理培训课件:《妊娠期急性胃肠炎护理查房》
- 食品欺诈和预防知识专题培训课件
- 锅炉专业培训教材全集
- 国家职业资格-中级维修电工试题2(含答案)
- 旅客运输心理学PPT完整全套教学课件
- 老年合理用药课件
- 消失模白区岗位操作规程
- 2023学年完整公开课版金瓯永固杯
- 初高中语文语法知识衔接课-短语句子
- 再生障碍性贫血诊疗和治疗我国专家共识
- 弹性变形体静力分析基础优质获奖课件
评论
0/150
提交评论