




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
信息学院课程设计报告 课程名称_C语言程序设计_ _题目名称 学生学籍管理系统 学生学院_ 信息学院_ _ _专业班级_ 计科12 学 号 学生姓名 指导教师_ _ _ 2013 年12月26 日目录一、 设计目的与要求31.1 题目与设计要求31.2 本程序设计的知识点4二、 功能设计42.1 总体设计42.2 详细设计54.1 测试结果及分析12五、 总结14六、参考文献14一、 设计目的与要求1.1 题目与设计要求题目:学生学籍管理系统目的:1、了解和熟悉Visual C+软件编程开发环境2、熟练掌握结构化程序设计的步骤和模块化设计方法3、熟练掌握C语言数据类型,熟记字符型数据和整形数据的定义和使用4、熟练掌握用while语句、dowhile语句和for语句实现循环结构程序设计的方法5、掌握一维数组、二维数组的定义、赋值和输入输出的方法6、掌握与数组有关的算法(特别是排序算法,熟练掌握冒泡排序法)7、熟悉函数的定义、声明方法及全局变量和局部变量的概念与用法,掌握函数的调用方法8、掌握结构体类型变量的定义和使用及结构体类型数组的概念和应用设计要求:学生学籍信息管理系统设计1、需求分析学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。2、总体设计 整个系统可以设计为数据录入模块、数据查询模块、数据删除模块和数据排序模块。3、详细设计 设计学生基本信息和学生成绩基本信息结构体数组。Struct int stuNo; /学号 char name20; /姓名 char sex2; /性别 int domNum; /宿舍号 int tel; /电话号码 StuInfo; /学生基本信息结构体Struct int stuNo; /学号 char courseNo; /课程编号 char courseName; /课程名称 int creditHour; /学分Int triGrade; /平时成绩Int experiGrade; /实验成绩Int examGrade; /卷面成绩Float totalGrade; /综合成绩Float finalCreHour; /实得学分StuGraInfo; /学生成绩基本信息结构体(1)数据录入模块:学生基本信息文件可以在磁盘建立,采用写文件方式录入学生成绩基本信息。综合成绩和实得学分通过计算得到。(2)查询模块:通过菜单选择查询功能,再选择学生基本情况查询和成绩查询,若选择前者,再通过菜单选择学号、姓名或宿舍号码,按照基本查找算法查找A.TXT,然后把查找结果输出若选择后者,则先在A.TXT中查找学号对应的姓名,再在B.TXT中查找该学生的课程情况,并统计科目和实得总学分,输出结果。(3)删除模块:通过菜单选择删除学生的功能,输入要删除学生的学号,则分别在A.TXT和B.TXT中查找该生信息,删除之;或者输入学生的姓名,先在A.TXT中得到该生的学号,删除该生信息,再在B.TXT中删除该学号对应的信息。注意:C语言中没有直接删除信息的函数,需要自己实现,可以采取读出数据,判断数据(如果不删除,则进入缓冲区,否则删除),写入数据(把缓冲区中的数据写入文件)的步骤进行。(4)排序模块:通过菜单选择排序依据,采用排序算法(冒泡、插入、选择等)对数据进行排序并输出结果。 1.2 本程序设计的知识点 陈述开发过程中用到的知识点,如结构体、数组、指针等。二、 功能设计2.1 总体设计其中包含数据录入模块、查询模块、删除模块、排序模块四大功能功能模块显示主菜单查询功能数据录入删除功能排序功能退出功能 按综合成绩排序 按实得学分排序学生基本情况查询成绩查询按 学 号按宿舍号码按 学 号学籍信息管理系统2.2 详细设计2.3分块设计开始数据查询x=1?Y=1?输入学号输入宿舍号输入学号结束显示一系列功能选项根据x的值调用各功能模块函数结束开始开始输入学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩结束数据输入开始数据删除结束输入学号三、 程序实现利用了组合体的方式定义结构体数组,提供学生基本信息,定义如下:typedef struct int Id; /学号char name10;/姓名char sex6; /性别 int room; /宿舍号int tel; /电话号码 StudentInfo; /定义学生信息的结构体类型同时定义了另一结构体数组,提供学生成绩基本信息,定义如下:typedef struct int Id;char courseNo10; /课程编号char courseName20;/课程名float a; / 课程学分float b; / 平时成绩float c; / 实验成绩float d; / 卷面成绩float e; / 综合成绩float f; / 实际学分 MarkInfo; /定义课程信息的结构体类型使用以上结构体数组,使程序变得思路清晰,设计过程也变得相对简单。同时,定义并使用了如下函数,声明和定义void ReadFile(); /读取文件void DisplayMainMenu(); /显示主菜单void DataInput(); /数据录入void DataQuery(); /数据查询void DataDelete(); /数据删除void DataSort(); /数据排序void QueryById(int ); /按学号查询void QueryByRoom(int ); /按宿舍查询void QueryMark(int ); /按成绩查询void sort1(); /按综合成绩排序void sort2(); /按实得学分排序void markput(); /成绩输出StudentInfo si30; / 学生信息结构数组MarkInfo mi150; / 学生成绩结构数组int sp=0; / 学生信息结构数组中学生数int mp=0; / 学生成绩结构数组中成绩数*读 取 数 据 、 计 算 *在这段功能模块中,利用指针变量来读取结构体数组文件中的相应信息,是程序的编写、阅读和运行变得简洁明了。此外,在这段程序中,还对文件中的数据按照题目的具体要求对综合成绩和学分做了自动计算。void ReadFile( ) FILE *fp;if(fp = fopen(A.txt,r)=NULL)printf(cant open the filen);while (!feof(fp)fscanf(fp,%d%s%s%d%d, &sisp.Id,,&sisp.sex,&sisp.room,&sisp.tel);sp+;fclose (fp);fp = fopen(B.txt,r);while (!feof(fp)fscanf (fp,%d%s%s%d%d%d%d,&mimp.Id,mimp.courseNo,mimp.courseName,&mimp.a,&mimp.b,&mimp.c, &mimp.d);if (mimp.c = -1) mimp.e = 0.3*mimp.b+0.7*mimp.d;else mimp.e = 0.15*mimp.b+0.15*mimp.c+0.7*mimp.d;if ( mimp.e = 90. ) mimp.f = mimp.a;else if ( mi mp.e = 80. ) mimp.f = mimp.a *0.8;else if ( mimp.e = 70. )mimp.f = mimp.a *0.75;else if ( mimp.e = 60. ) mimp.f = mimp.a *0.6;else mimp.f = 0;mp+;fclose(fp);* 显 示 主 菜 单 *这部分是对本程序的主要功能做出的展示,体现了本程序的五大功能,简洁明白,一目了然。Void DisplayMainMenu()printf (“n 1) 数据录入 n 2) 数据查询 n 3) 数据删除 n 4) 数据排序 n 5) 程序结束 n “);* 数 据 录 入 模 块 *录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据,即对关于学生成绩基本信息的结构体数组进行输入,也就是文件B.TXT中的内容。void DataInput()FILE *fp;int i;printf (学生的学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩n);while(1)scanf (%d%s%s%d%d%d%d,&mimp.Id,mimp.courseNo,mimp.courseName,&mimp.a,&mimp.b,&mimp.c, &mimp.d);if(mimp.Id=-1)break;if (mimp.c = -1) mimp.e = 0.3*mimp.b+0.7*mimp.d;else mimp.e = 0.15*mimp.b+0.15*mimp.c+0.7*mimp.d;if ( mimp.e = 90. ) mimp.f = mimp.a;else if ( mi mp.e = 80. ) mimp.f = mimp.a *0.8;else if ( mimp.e = 70. )mimp.f = mimp.a *0.75;else if ( mimp.e = 60. ) mimp.f = mimp.a *0.6;else mimp.f = 0;mp+;fp = fopen(B.txt,r+);for(i=0;imp;i+)fprintf(fp,%d%s%s%d%d%d%d,&mii.Id,mii.courseNo,mii.courseName,&mii.a,&mimp.b,&mii.c, &mii.d);fclose(fp);* 查 询 模 块*此段程序是为实现信息查询功能而设计的。总体来讲,分为两大功能模块,一是学生基本信息查询,二是对学生成绩的查询。在第一种查询,即对学生基本信息的查询中,又提供了两种查询方式,一种是按学号对学生基本信息进行查询,一种是按宿舍号码对学生基本信息进行查询。 Void DataQuery()int x,y,z;printf( “n 1) 学生基本情况查询n 2) 成绩查询n”);-选择查询内容scanf(“%d”,&x);if (x = 1) / 查询学生信息printf (“1) 按学号查询 2) 按宿舍查询n”);-选择查询方式scanf(“%d”,&y);if (y = 1 ) printf ( “ 输入学号n”);-按学生学号查询scanf (“%d”,&z);QueryById(z);if (y = 2) if ( x =2) / 查询成绩信息-查询学生成绩(输入学号)printf ( “ 输入学号n”); scanf (“%d”,&y);QueryMark(y);* 删 除 模 块 *此模块提供了按学号实现删除学生信息的功能,当在文件A.TXT中删除一个学生时,自动地在文件B.TXT中删除此人所有信息。void DataDelete()FILE *fp;int x;int i=0;int k,d;printf( 输入学号n);scanf( %d,&x);while( sii.Id != x) i+;if (isp-1) for ( k=i; ksp-1; k+)sik = sik+1; if ( isp) sp-;d = 0; for (k=0;kmp;k+)if ( mik.Id = x ) d+;else mik-d = mik;mp = mp - d;fp = fopen(D:B.txt,r+);for(i=0;i=1;i-)for (j=0;jmij+1.e) t=mij;mij = mij+1;mij+1 = t;markput();四、 测试分析4.1 测试结果及分析显示主菜单 数据录入功能。 对成绩进行录入(2)查询功能,按学号进行查询(3)排序功能按综合成绩排序(4)删除功能退出程序五、 总结这次学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出租膨化设备合同范本
- 线上生活体验课程合同
- 采购合同范本壁布
- 审计招投标合同范本
- 单位清洁服务合同范本
- 钻机维修合同范本
- 亨廷顿病舞蹈样动作护理查房
- 买卖房协议合同范本
- 拍摄微电影合同范本
- 小型船舶建造合同范本
- 复发性流产护理
- 2025年西藏自治区事业单位招聘考试教师招聘体育学科专业知识试卷(模拟试题)
- 先天性甲状腺功能减退症诊治指南解读课件
- 2025至2030中国裸眼3D行业产业运行态势及投资规划深度研究报告
- 检修安全监护管理制度
- 产科工作管理制度
- 初中历史教师业务考试试题及答案
- 导尿管相关尿路感染预防与控制试题(附答案)
- 中医烧伤课件
- 2025-2030中国水下混凝土行业市场发展趋势与前景展望战略研究报告
- GB/T 30134-2025冷库管理规范
评论
0/150
提交评论