1、学生信息管理系统课 程 设 计 任 务 书1设计目的:1 熟悉C语言程序设计的原理与方法;2 掌握C语言开发环境下程序的具体设计;3 掌握利用C语言分析解决具体问题。2设计内容和要求:设计内容:1. 可以通过读取(.txt)文件的方式录入学生信息,学生成绩。综合成绩由程序自动算出。 2. 以保存录入的学生成绩及学生信息。 3. 以通过输入学生姓名或学号查询该学生所有课程成绩信息,并罗列出来。 4. 以输入课程名称,查询所有学生成绩,并统计及格及不及格人数。 5. 有功能可以以DOS或windows窗口方式完成。设计要求: 1使用文件进行存储和管理。2不同的功能使用不同的函数实现(模块化),对每
2、个函数的功能和调用接口要注释清楚。对程序其它部分也进行必要的注释。3对系统进行功能模块分析、画出总流程图和各模块流程图。4用户界面要求使用方便、简洁明了、美观大方、格式统一。5所有程序需在Win-Tc 或Microsoft Visual C+ 6.0 环境调试通过。3设计工作任务及工作量的要求包括课程设计计算说明书(论文)、图纸、实物样品等:1) 课程设计说明书一份;2) 电子文档(说明书、设计程序)一份课 程 设 计 任 务 书4主要参考文献:(1 )赵山林、高媛等.C程序设计.北京:人民邮电出版社,2004.8(2010.1重印) 5设计成果形式及要求:1) 课程说明书打印,并装订;2)
3、必要的程序流程图和程序附录。6工作计划及进度:2010年12月27日2010年12月30日 下达设计任务书,学生熟悉设计内容; 2010年12月31日2011年01月02日 查阅参考资料,确定基本设计方案;2011年01月03日2011年01月07日 C语言进行程序设计;2011年01月08日2011年01月09日 完成设计报告;2011年01月10日 答辩; 系主任审查意见: 签字: 年 月 日目录1 设计内容12 程序设计目的及意义1 2.1设计目的 1 2.2 设计意义23 功能实现3 3.1 系统功能层次图3 3.2 项目设计流程图4 3.3 程序初始化实现4 3.4 模块的实现5 3
4、.4.1 菜单的实现53.4.2 录入功能的实现73.4.3 计算平均分及学生个人通过科目模块的实现83.4.4 按学号、姓名及科目工程查询的实现9 3.4.4.1 查询菜单模块9 3.4.4.2 按姓名查询模块10 3.4.4.3 按学号查询模块11 3.4.4.4 查找C语言成绩汇总模块12 3.4.4.5 查找数学成绩汇总模块13 3.4.4.6 查找英语成绩汇总模块143.4.5 成绩统计功能的实现174 系统的调试17 4.1 运行程序显示菜单16 4.2 成绩录入界面18 4.3 计算19 4.4 查询界面194.4.1按姓名查询204.4.2按学号查询204.4.3查询C语言成绩
5、汇总214.4.4查询英语成绩汇总214.4.5显示全部成绩225 设计结论226 心得体会227 参考文献231.设计内容(1)可以通过读取(.txt)文件的方式录入学生信息,学生成绩。综合成绩由程序自动算出。表1 学生信息格式学号姓名性别宿舍号码电话号码高数英语C程平均分及格门数不及格门数(2)以保存录入的学生成绩及学生信息。(3)以通过输入学生姓名或学号查询该学生所有课程成绩信息,并罗列出来。(4)以输入课程名称,查询所有学生成绩,并统计及格及不及格人数。(5)有功能可以以DOS或windows窗口方式完成。2. 程设计目的及意义 2.1 设计目的 学生信息档案的管理对于学校的管理者来说
6、至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。但其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依靠人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,所以利用计算机实现学生信息档案管理成为必然的趋势。本系统针对学校学生信息的特点以及管理中实际需要而设计,能够有效地实现学生信息管理的信息化,减轻管理人员的工作负担,高效率、规范化地管理大量的学生信息,并避免人为操作的错误和不规范行为。2.2 设计意义 信息管理系统是针对学校人事处的大量业务处理工作而开发的管理软件,是典型的管理信息系统。它是一个教育单位不可缺少的部分,它的
7、内容对于学校的决策者和管理者来说都至关重要,它能够为用户提供充足的信息和快捷的查询手段。能有效的帮助学校和老师掌握学生的情况,为学生提供成绩跟课程方面的查询。在传统模式下利用人工进行学生信息管理,存在着较多的缺点,如:效率底,保密性差,时间一长将产生大量的文件和数据,更不便于查找,更新,维护等。诸如这些情况,令学校管理者对学生的信息管理带来了很大困难,严重影响了教育工作者的工作效率。随着科学技术的不断提高,计算机科学日渐成熟, 使用日趋成熟的计算机技术来代替传统的人工模式,来实现学生信息的现代化管理,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应
8、用的一部分,使用计算机对学生信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、易修改、可靠性高、存储量大、数据处理快捷、保密性好、寿命长、成本低、便于打印等。这些优点能够极大地提高学生信息管理的效率,也是学校的科学化、正规化管理,与世界接轨的重要条件。3.功能实现 3.1 系统功能层次图 图1 系统功能层次图3.2项目设计流程图 图2 项目设计流程图3.3程序初始化实现#include #include #include #include #define N 20void input();void sum();void xingming();void xuehao();v
9、oid search();void print();void tongjic();void tongjimath();void tongjienglish();void choice();typedef struct char name10; int num; char sex10; int door; float tele; float c; float math; float english; float aver; int pass; int fail;stu;3.4模块的实现3.4.1菜单的实现/菜单void menu() /*便于操作员使用*/ /*清屏*/ system(cls);
10、 printf( 学生平时成绩管理n); printf(=n); printf( 1.成绩录入n); printf( 2.计算n); printf( 3.查询n); printf( 4.显示n); printf( 5.统计n); printf( 0.退出n); printf(=n); printf(请选择相应的功能:);/菜单选择void choice() char ch; while(1) menu();/ 显示菜单 ch=getch();/选择菜单 if(ch=0) break; switch(ch)/判断功能项 case 1: input();break; case 2:sum();br
11、eak; case 3:search();break; case 4:print();break; case 5:tongjic(),tongjimath(),tongjienglish();break; printf(n欢迎使用!n);/主函数void main()choice();/调用菜单选择3.4.2录入功能的实现/成绩录入void input() FILE *fp; stu xs; /*定义一个结构体变量来装从文件中读出来的数据*/ if(fp=fopen(student.txt,ab)=NULL) printf(cant open file!n);exit(0); printf(n
12、录入格式:n姓名 学号 性别 宿舍 电话 C语言 高数 英语 当输入姓名为ps结束录入n); while(1) /*中间加油break,可使循环中断*/ scanf(%s,xs.name); if(strcmp(xs.name,ps)=0) break;/*判断姓名是否为ps,用字符串判断*/ scanf(%d%s%d%f%f%f%f,&xs.num,&xs.sex,&xs.door,&xs.tele,&xs.c,&xs.math,&xs.english); xs.aver=0;xs.pass=0;xs.fail=0;/*给平均分,及格和不及格门数变量赋初值*/ fwrite(&xs,size
13、of(stu),1,fp); /将成绩信息写入文件 fclose(fp);3.4.3计算平均分及学生个人通过科目模块的实现/计算平均分void sum() int i=0,n; stu xsN; FILE *fp; if(fp=fopen(student.txt,rb+)=NULL) printf(cant open file!n);exit(0); while(!feof(fp)/*文件读入内存,读取指针未到文件尾时返回值为0,读到尾时返回值为1,加!取反后,结束即为0*/ fread(&xsi,sizeof(stu),1,fp);/*读入结构体变量*/ if(feof(fp) break;
14、/*上面while循环那个会多读一次因为读到尾时那个0还没返回,这里判断如果以读到文件尾,则直接停止,避免重复输入*/ xsi.aver=(xsi.c+xsi.math+xsi.english)/3; xsi.fail=0; xsi.pass=0; if(xsi.c60) xsi.fail+; if(xsi.math60) xsi.fail+; if(xsi.english60) xsi.fail+; xsi.pass=3-xsi.fail; i+; n=i;/*把i的末尾值给n,用于下面循环写入*/ i=0; fclose(fp); if(fp=fopen(student.txt,wb)=N
15、ULL) printf(cant open file!n);exit(0); while(in) fwrite(&xsi,sizeof(stu),1,fp); i+; fclose(fp);3.4.4按学号、姓名及科目查询功能的实现3.4.4.1 查询菜单模块/查询菜单void search() char ch1; system(cls); printf(请输入按何种方式查询:n); printf(1-姓名,2-学号,c-C语言,math-数学,english-英语:); ch1=getchar();/*用字符接收*/ switch(ch1)/*判断*/ case 1:xingming();b
16、reak; case 2:xuehao();break; case c:tongjic();break; case m:tongjimath();break; case e:tongjienglish();break; getch();/*让屏幕停留同时按任意键返回*/3.4.4.2 按姓名查询模块void xingming() FILE *fp; stu xs; char name10; printf(n输入要查学生的姓名: );scanf(%s,name); if(fp=fopen(student.txt,rb)=NULL) printf(cant open file!n);exit(0)
17、; while(!feof(fp) fread(&xs,sizeof(stu),1,fp); if(strcmp(xs.name,name)=0)/*按姓名查询时判断输入的姓名是否存在,会循环从数据中找取*/ printf( 学生的信息如下:n); printf(n%s %6s %6s %6s %6s %6s %6s %6s %6s %6s %6sn,姓名,学号,性别,宿舍,电话,C语言,高数, 英语,平均成绩,及格,不及格); printf(%s %6d %6s %6d %6.0f %6.2f %6.2f %6.2f %6.2f %6d %6dn,xs.name,xs.num,xs.sex,
18、xs.door,xs.tele,xs.c,xs.math,xs.english,xs.aver,xs.pass,xs.fail); break; if(feof(fp) printf(查找失败!); /*学生不存在*/ fclose(fp);3.4.4.3按学号查询模块void xuehao() FILE *fp; stu xs; int num; printf(n输入要查学生的学号: );scanf(%d,&num); if(fp=fopen(student.txt,rb)=NULL) printf(cant open file!n);exit(0); while(!feof(fp) fre
19、ad(&xs,sizeof(stu),1,fp); if(xs.num=num)/*按学号查询时判断输入的学号是否存在,会循环从数据中找取*/ printf( 学生的信息如下:n); printf(n%s %6s %6s %6s %6s %6s %6s %6s %6s %6s %6sn,姓名,学号,性别,宿舍,电话,C语言,高数, 英语,平均成绩,及格,不及格); printf(%s %6d %6s %6d %6.0f %6.2f %6.2f %6.2f %6.2f %6d %6dn,xs.name,xs.num,xs.sex,xs.door,xs.tele,xs.c,xs.math,xs.e
20、nglish,xs.aver,xs.pass,xs.fail); break; if(feof(fp) printf(查找失败!); fclose(fp);3.4.4.4 查找C语言成绩汇总模块/统计Cvoid tongjic() int i=0,j=0,k=0,l=0,m=0,n,r,t,u; FILE *fp; stu sN, *p1N,*p4N;/*用指针数组*/ system(cls); if(fp=fopen(student.txt,rb)=NULL) printf(cantt open file!n);exit(0); while(!feof(fp) fread(&si+,size
21、of(stu),1,fp);/*读入数据*/ if(feof(fp) break; t=i;i=0; for(u=0;ut;u+)/*以下每个指针数组用于指向各分数段的学生信息*/ if(si.c=60) p4m+=&si+;continue; printf(不及格:姓名 学号 C语言n); for(n=0;nname,p1n-num,p1n-c); printf(不及格人数:);printf(t%d,j-1); printf(n及 格:姓名 学号 C语言n); for(r=0;rname,p4r-num,p4r-c); printf(及格人数:);printf(t%d,m); fclose(
22、fp); getch();3.4.4.5 查找数学成绩汇总模块/统计数学void tongjimath() int i=0,j=0,k=0,l=0,m=0,n,r,t,u; FILE *fp; stu sN, *p1N,*p4N;/*用指针数组*/ system(cls); if(fp=fopen(student.txt,rb)=NULL) printf(cantt open file!n);exit(0); while(!feof(fp) fread(&si+,sizeof(stu),1,fp);/*读入数据*/ if(feof(fp) break; t=i;i=0; for(u=0;ut;u+)/*以下每个指针数组用于指向各分数段的学生信息*/ if(si.math=60) p4m+=&si+;continue; printf(不及格:姓名 学号 数学n); for(n=0;nj-
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1