版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、华东交大 C+课程设计统计学生成绩前 言计算机技术作为信息化的核心技术受到全社会的普遍重视。如今,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。深入掌握计算机专业知识、具有良好系统设计与分析能力的计算机高级专业人才在社会上深受欢迎。而系统设计与分析能力的培养需要通过实践训练才能获得。通过计算机对一些系统的管理已经成为一种系统、便捷的方式。本课程设计就是用 C+设计管理学生成绩的问题,实现对学生成绩问题的管理操作。C+语言是一种优秀的面向对象程序设计语言,它在C 语言的基础上发展而来,但它比C 语言更容易为人们学习和掌握。C+以其独特的语言机制在计算机科
2、学的各个领域中得到了广泛的应用。面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃, C+完美地体现了面向对象的各种特性。1目 录一( 论文摘要 .3二 ( 课程设计任务分析 .42.1课程设计任务书 .42.2设计运行环境 .62.3课程设计任务要求 .62.4小组成员任务分配表 .7三 ( 课程任务具体设计 .83.1设计思想 .83.2系统总框图 .83.3各模块设计分析 .93.4程序所定义函数及说明 .153.5程序源代码 .19四( 程序运行及调试过程 .354.1程序运行结果 .354.2存在问题与不足及对策 .41五( 论文总结 .42六( 参考文献 .42致谢
3、.422一 . 论文摘要随着科学技术的发展,计算机领域不断取得新的研究成果。计算机在代替和延伸脑力劳动方面发挥越来越重要的作用,不仅在工业方面而且在日常生活中也越来越离不开计算机。尤其是在学校里,要处理大量的学生数据。随着科学技术的不断提高 , 计算机科学日渐成熟 , 其强大的功能已为人们深刻认识, 它已进入人类社会的各个领域并发挥着越来越重要的作用. 作为计算机应用的一部分, 使用计算机对学生成绩信息进行管理 , 有着手工管理所无法比拟的优点。本章的重点是进一步熟悉文件操作和运算符重载。本课程设计的重点是练习文件的存储与读取以及读入整行数据,要求编写一个“学生”. 类及用来存取文件的save
4、() 和 load() 函数同时使用函数及运算符重载技术。本文介绍了简易统计学生成绩的系统在 Microsoft Visual C+ 6.0环境下的实现过程 : 系统的分析,功能模块的设计,系统的调试和测试。此系统的主要管理的信息有: 学生的学号,姓名 , 算术和语文成绩以及平均分。本系统的主要功能有: 从键盘输入学生的学号 . 姓名以及成绩,计算每个学生的平均成绩,将数据存入文件stud,dat中并验证是否正确的存入了文件。把学生姓名和平均成绩抽取起来,将两门功课成绩都不及格的学生信息从文件中删除并外存入文件bad.dat 中。能检索文件中某个学生信息的子程序。关键词 : 统计学生成绩 ;
5、函数 ; 运算符重载 ; 文件操作 ;3二 . 课程设计任务分析2.1课程设计任务书华东交通大学课程设计 ( 论文 ) 任务书学 院 专 业 班 一、 课程设计 (论文)题目 :统计学生成绩二、课程设计 ( 论文 ) 工作自 2012 年 6 月 1 日起至 2012 年 6 月 6 日止三、课程设计 ( 论文 ) 地点 : 软件学院实训中心 四、课程设计 ( 论文 ) 内容要求 :1. 本课程设计的目的(1) 掌握 C+语言的程序设计方法 ;(2) 理论联系实际,进一步提高学生的软件开发技术 ;(3) 培养学生分析、解决问题的能力 ;(4) 提高学生实践论文撰写能力。2. 课程设计的任务及要
6、求1) 基本要求 :(1) 对系统所需完成的功能分析 ;(2) 使用 Visual C+ 编译器进行程序编译 ;(3) 提出系统的设计方案 ;(4) 对所设计源程序进行调试。2) 创新要求在基本要求达到后,可进行创新设计。3) 课程设计论文编写要求1) 理论设计部分以课程设计论文的形式提交,格式必须按照课程设计论文标准(格式进行书写和装订。(2) 课程设计报告 ( 论文 ) 包括设计任务分析 ( 包括设计任务书、设计运行环境、同组人员及分工等 ) 、系统总框图、每个模块的设计分析、列出所有定义的函数及说明、存在的问题与不足及对策、附上程序源代码。(3) 用 A4 纸打印出文档 ( 附上源代码
7、) ,封面到教务处购买 ; 所写的有效代码不得少于 50 行 ;17 周上机检查程序并上交设计报告。4) 课程设计评分标准 :(1) 学习态度 :20 分;(2) 回答问题及系统演示 :30 分(3) 课程设计报告书论文质量 :50 分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。不及格者需重做。5) 参考文献 :(1) 谢昕 等编著, C+程序设计第二版, 北京邮电大学出版社4(2) 吕凤翥 . C+ 语言基础教程M.清华大学出版社. 2007.2 (3)谭浩强编, C+面向对象程序设计,清华大学出版社,2005 年7 月出版6)课程设计进度安排1. 准备阶段 (4 学时 ): 选择
8、设计题目、了解设计目的要求、查阅相关资料。2.程序模块设计分析阶段 (4 学时 ): 程序总体设计、详细设计。3. 代码编写调试阶段 (8 学时 ): 程序模块代码编写、调试、测试。4. 撰写论文阶段 (4 学时 ): 总结课程设计任务和设计内容,撰写课程设计论文。7) 课程设计题目具体要求 : 本课程设计的重点是练习文件的存储与读取以及读入整行数据。要求编写一个“学生”类及用来存储文件的save() 和 load() 函数,使用函数及运算符重载技术完成如下操作:(1) 有 10 个小学生,每个学生有“算术”和“语文”两门功课,从键盘输入学生的学号 . 姓名以及成绩,计算每个学生的平均成绩,将
9、数据存入文件stud,dat中并验证是否正确的存入了文件。(2) 要求对“ ”运算符进行重载。考虑到输入学号时,也会因不小心引入空格,而且名字中也需要有空格,所以重载“ ”运算符时,需要满足这个要求。 (3) 把学生姓名和平均成绩抽取起来,建立一个简明文件stud_mean.dat,并验证是否正确的存入了。(4) 从文件 stud.dat 按如下格式输出大于等于平均成绩的学生信息 :学号 姓名 算术 语文 平均(5) 将两门功课成绩都不及格的学生信息从文件中删除并外存入文件bad.dat中。 (6) 编写能检索文件中某个学生信息的子程序。如无此学生,输出“未查到”信息。 (7) 使用多文件编程
10、和菜单操作。学生签名 :2012年6月1日课程设计 ( 论文 ) 评审意见(1) 考勤 (10分 ):优 ( )、良( )、中( )、一般()、差 ( ); (2)系统设计 (20分 ):优( )、良( )、中( )、一般()、差 ( ); (3)编程调试 (10分):优 ( )、良( )、中( )、一般()、差 ( ); (4)回答问题 (15分):优( )、良( )、中( )、一般( )、差 ( ); (5)论文撰写 (35分):优 ( )、良( )、中( )、一般()、差 ( ); (6)创新思想(10分):优 ( )、良( )、中( )、一般()、差( );综合评定等级:评阅人 :职称
11、:年 月 日52.2设计运行环境1. 操作系统 :Windows xp1. 程序运行环境 :Microsoft Visual C+6.0 2.3 课程设计任务要求本课程设计的重点是练习文件的存储与读取以及读入整行数据。要求编写一个“学生”类及用来存储文件的save() 和 load() 函数,使用函数及运算符重载技术完成如下操作 : (1)有 10 个小学生,每个学生有“算术”和“语文”两门功课,从键盘输入学生的学号 . 姓名以及成绩,计算每个学生的平均成绩,将数据存入文件stud,dat中并验证是否正确的存入了文件。(2) 要求对“ ”运算符进行重载。考虑到输入学号时,也会因不小心引入空格,
12、而且名字中也需要有空格,所以重载“”运算符时,需要满足这个要求。 (3) 把学生姓名和平均成绩抽取起来,建立一个简明文件stud_mean.dat,并验证是否正确的存入了。(4) 从文件 stud.dat 按如下格式输出大于等于平均成绩的学生信息 :学号 姓名 算术 语文 平均(5) 将两门功课成绩都不及格的学生信息从文件中删除并外存入文件bad.dat中。 (6) 编写能检索文件中某个学生信息的子程序。如无此学生,输出“未查到”信息。 (7) 使用多文件编程和菜单操作。62.4小组成员任务分配表小组成员任务分配表成员班级 学号 分配任务项目论文设计部分代码编写部分代码编写及代码编整理工作部分
13、代码编写及后期完善总结和打印我的任务详情 :我的任务主要是负责论文的设计与部分代码的编写工作。首先,在看完了课程设计的论文任务书以及题目后,根据里面的要求,我进行了概括总结,之后,在百度文库里看了几篇往届学生的课设论文范例。在总结以前写论文的经验,再添加了一些自己的想法,最终融汇而成。论文设计完成初稿后,与小组成员进行讨论,做了某些方面的修改和完善。除此之外,我还参与部分代码编写工作,主要是前三个部分的编写,我看了老师给的代码范例,也从网上看了一些类似范例,最终决定用老师的代码。在 Microsoft Visual C+6.0 环境下运行时发现一些错误,并予以纠正。由于创新能力缺乏,所以没有进
14、一步的创新设计。在遇到某些问题时,咨询了老师及一些学长学姐。最终顺利的完成了任务。7三 . 课程任务具体设计3.1设计思想设计一个菜单,通过菜单选择实现相应的操作,对于输入的原始信息,使用链表存储它们,这样做的好处是,可以随时增加内容,也容易将两门功课不及格的学生从文件中删除。为学生设计一个类,单独设计完成这个这个文件读写的成员函数。使用结构数组作为学生信息简表和两门不及格的学生的存储器,由它们和文件建立读写关系,需要显示它们时,现将文件读入内存,然后再显示。需要显示输出大于等于平均成绩的学生信息时,则直接从内存链表中筛选。当然,需要显示原始信息时,也通过直接显示链表信息的方法实现。这四种数据
15、的显示问题均通过一个成员函数来实现。为了操作方便,原始数据可以单独存取. 修改和查询。3.2系统总框图统计学生成绩增建显保寻均读删结加立示存找不取除束原简各原原及原原程始明种始始格始始序记文文文记文文记运录件件件件录件录行83.3各模块设计分析3.3.1 定义头文件用 #define 命令自定义宏,用静态结构体函数声明简明文件和不及格文件。定义一个学生类,说明数据成员函数。具体代码如下 :#if !defined(CPP9_H) #define CPP9_H #include /对文件操作 文件输入输出#include /标准库头文件定义杂项函数及内存分配函数#include /定义输入输出函
16、数#include /字符串处理#include /数据输入输出#define ASK(p) do p = new Student; if (p = NULL) cout memory fail! endl; exit(-1);while(0); /宏定义static struct shorts /静态结构体声明定义变量char name16;double ave;sm10= ,0; /给静态结构体变量赋初值static struct bads /静态结构体声明定义变量char no10; /定义学生总数char name16; /定义学生姓名int math; /定义数学成绩int chi;
17、 /定义语文成绩double ave; /定义平均成绩 bad10= , ,0,0; /给静态结构体变量赋初值class Student /定义一个学生类private: /定义私有成员char no10;char name16;int math;int chi;double ave;Student *next; /定义对象指针int menu_select(void); /声明菜单选择函数public: /定义公有成员static int count; /定义了一个静态对象Student(); /构造函数的声明9Student(); /析构函数的声明Student *input(Studen
18、t *); /输入信息函数的声明void display(Student *); /显示数据信息函数的声明void save(Student *); /文件存储操作函数的声明Student *load(Student *); /文件读取操作函数的声明void handle_menu(Student *); /菜单处理函数的声明Student *delete_record(Student *); /删除学生信息函数的声明void short_record(Student *); /建立简明文件的声明Student *bad_record(Student *top); /建立不及格文件的声明voi
19、d Student:find_record(Student *); /查询学生信息函数的声明friend ostream &operator ( ostream &os, Student &ob); /重载 ( istream &is, Student &ob);/重载 运算符函数声明;#endif3.3.2 源文件菜单栏的构建,定义一个student类的构造函数和析构函数,定义一个菜单处理函数和菜单选择函数。具体代码如下:#include cpp9.hint Student:count=0; /声明静态成员记录计数变量/* *构造函数*/ Student:Student() /定义构造函数n
20、ext=NULL;name0=0;no0= ;math=0;chi=0;ave=0.0;/* *析构函数*/ Student:Student() /定义析构函数if (next !=NULL)delete next; /缺省析构函数体为空void main() /定义主函数Student *top; /定义对象指针10ASK(top);top-handle_menu(top); /* * */ void菜单处理函数Student:handle_menu(Student *top) /定义菜单处理函数for ( ; ; ) /相当于while(1)语句(死循环)switch(menu_selec
21、t()case 1:top = input(top); /调用输入信息函数break;case 2:display(top); /调用显示数据信息函数break;case 3:save(top); /调用文件存储操作函数break;case 4:top=load(top); /调用文件读取操作函数break;case 5:top=delete_record(top); /break;case 6:调用删除学生信息数据函数short_record(top); /break;case 7:调用生成简明文件函数top=bad_record(top); /break;case 8:find_recor
22、d(top);调用查询学生信息函数break;case 9:coutt退出操作,再见 endl;delete top;return; /退出函数/*11* 菜单选择函数*/int Student:menu_select() /定义菜单选择函数char s2;int cn=0;coutnt1,增加原始记录 nt2,显示各种文件 nt3,保存原始文件 nt4,读取原始文件 nt5,删除原始记录 nt6,建立简明文件 nt7,均不及格文件 nt8,寻找原始记录 nt9,结束程序运行nnt左边数字对应功能选择,请选择19:flush;for( ; ; )gets(s); /从键盘接受字符串,并放入数组
23、s 中cn=atoi(s);if(cn9) coutnt输入错误,重选1- 9:name0=0) /如果指针指向对象的name等于 0,那么就直接退出函数coutt没有记录可存 !endl;return; /退出函数ofstream out; /建立输出流对象12out.open(stud.dat,ios:out); /与 stud.dat关联并制定以输出方式打开if (!out) /如果文件不能打开coutt不能打开文件 !endl;exit(1); /非正常退出coutnt存文件 endl;outcountn; /重载 运算符Student *p=top; /定义对象指针while(p!=
24、NULL) /当 p 不为空时out *p; /重载 next; /对象访问成员out.close(); /关闭文件couttcount条记录已经存入文件,请继续操作。endl;/* 文件读取操作函数*/Student *Student:load(Student *top) /定义文件读取操作函数ifstream in; /建立输入流对象in.open(stud.dat,ios:in|ios:nocreate);/与stud.dat关联并制定以输入方式打开 / 如果文件不存在,则打开文件失败if(!in) /如果打开文件失败coutt文件不存在!endl;return top;coutnt取文
25、件 .top-count;in.ignore();Student *p=top;Student *old;for(int i=0;icount;i+)13in*p;ASK(p-next);old=p;p=p-next;in.ignore();old-next=NULL;in.close(); /关闭文件coutt取入 count条记录 .运算符函数*/istream & operator (istream &is,Student &ob) /重载” ”运算符函数声明is.getline(ob.no,10,n); /使其能够读入字符串中的空格is.getline(,16,n); /
26、isob.math;isob.chi;isob.ave;使其能够读入字符串中的空格return is; /退出函数/* 重载 运算符函数*/ostream & operator(ostream &os,Student &ob) /重载” ”运算符函数声明osob.non;n;osob.mathn;osob.chin;osob.ave重载运算符operator重载运算符 Delete_record.cpp delete_record删除指定结点Short_record.cpp short_record建立简明文件 Bad.cpp bad_record建立不及格文件 Find.c
27、pp find_record查询学生信息 cpp9.h ASK( 自定义宏 )宏定义申请内存类和结构的声明类定义在相应文件中实现库函数引用库函数_下面简要的描述一下这些函数。1. 文件存储操作函数函数原型 :void save(Student*)功能 : 将记录存入指定文件参数 : 结构指针 top返回值 :void工作方式 : 从链表头部开始逐个存入文件要求 : 报告是否有记录可存,是否能正常建立或打开文件,根据要求执行存入操作并报告存入记录的条数1. 文件读取操作函数函数原型 :Student*load(Student*)功能 : 将文件 stud.dat里的记录装入内存15参数 : 结构
28、指针 top返回值 : 返回结构指针 top工作方式 : 在内存里从 top 处开始构造链表并返回top 要求 : 报告是否有记录可存,能否正常打开打开文件及记录的条数2. 显示内存动态记录数据函数函数原型 :void display(Student*)功能 : 显示内存里的记录参数 : 结构指针 top返回值 : 无返回值工作方式 : 能将 3 个文件从头不开始逐个显示它们的记录内容要求 : 报告是否有记录及记录条数和内容3. 输入信息函数函数原型 :Student*input(Student*)stud,dat参数 : 结构指针 top返回值 : 返回结构指针 top工作方式 : 从尾部开
29、始逐个增加记录功能 : 添加新记录并将其存入指定文件要求 : 报告中 stud.dat是否已经存在,如果存在,则将其装入,并将新纪录追加在记录尾部。如果还没有建立stud.dat文件,则提醒用户在退出时不要忘记保存添加的记录4. 删除记录函数函数原型 :Student*delete_record(Student*)功能 : 删除内存链表中的指定结点参数 : 结构指针 top返回值 : 返回结构指针 top工作方式 : 根据给定的关键字,查找符合的结点并删除之要求 : 给出相关信息6. 建立简表函数函数原型:void short_record(Student*)功能 : 根据内存链表中的信息,建
30、立简表文件stud_menu.dat参数 : 结构指针top返回值 : 无返回值工作方式 : 根据链表信息,抽取相应内容建立简表要求 : 给出相关信息7. 查询记录函数函数原型 :Student:find_record(Student*)功能 : 根据给定的关键字,查询内存链表中是否有需要的信息16参数 : 结构指针 top返回值 : 无返回值工作方式 : 根据给定的关键字,查询符合的结点并显示其信息要求 : 给出相关信息8. 建立全部不及格学生文件的函数函数原型 :Student*delete_record(Student*)功能 : 根据内存链表中的信息,建立全部不及格学生文件bad.da
31、t ,并将其信息从链表中删除参数 : 结构指针 top返回值 : 返回结构指针 top工作方式 : 将符合条件的结点从链表中移除,存入文件bad.dat要求 : 给出相关信息9. 重载 运算符函数函数原型 :friend ostream &operator(ostream &os,Student &ob)功能 : 重载运算符 运算符函数函数原型 :friend ostream &operator(istream &is,Student &ob)功能 : 重载运算符 参数 : 对象的引用返回值 : 返回输入流对象工作方式 : 按定义实现给多个数据的赋值,允许输入有空格的字符串要求 : 用友元函数
32、实现输入赋值功能11. 菜单处理函数函数原型 :void handle_menu(ADDR)功能 : 处理选择的菜单命令参数 : 结构指针 top返回值 :void工作方式 : 根据命令,调用相应函数要求 : 给出结束信息12. 菜单选择函数函数原型 :int menu_select(void)功能 : 接受用户选择的命令代码17参数 :void返回值 :int工作方式 : 返回命令代码的整数值要求 : 只允许选择规定键,如果输入不合要求,则提醒用户重新输入13. 主函数函数原型 :void main(void)功能 : 控制程序参数 :void返回值 :void要求 : 管理菜单命令并完成初
33、始化14. 头部文件文件名称 :cpp.9h功能 : 声明类 Student ,包含文件及自定义宏和数据结构要求 : 报告是否能正常打开文件、执行存入操作及存入记录的条数183.5 程序源代码Header FilesCpp9.h#if !defined(CPP9_H)#define CPP9_H #include /对文件操作文件输入输出#include /标准库头文件定义杂项函数及内存分配函数#include /定义输入输出函数#include /字符串处理#include /数据输入输出#define ASK(p) do p = new Student; if (p = NULL) cout memory fail! endl; exit(-1);while(0); /宏定义static struct shorts /静态结构体声明定义变量char name16;double ave;sm10= ,0; /给静态结构体变量赋初值static struct bads /静态结构体声明定义变量char no10; /定义学生总数char name16; /定义学生姓名int math; /定义数学成绩int chi; /定义语文成绩double ave; /定义平均成绩 bad10= , ,0,0; /给静态结构体变量赋初值class
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 有机氟残液焚烧工安全实操模拟考核试卷含答案
- 耐火纤维制品成型工安全强化测试考核试卷含答案
- 轧制加热工安全生产意识水平考核试卷含答案
- 供热生产调度工岗前基础安全考核试卷含答案
- 2026年餐饮配送及外卖送餐服务行业市场深度研究及投资策略报告及未来五至十年更新需求与增量需求
- 反射疗法师岗前冲突管理考核试卷含答案
- 2026年酒精制造行业发展前景规划报告及未来五至十年长尾挖掘与利基深耕
- CN119487503A 用于对记录进行本体分类的系统和方法 (西纳创新股份有限公司)
- 2026年其他未列明制造业行业现状及趋势分析报告及未来五至十年AI赋能与效率革命
- 喷涂喷焊工操作评优考核试卷含答案
- 限制类医疗技术临床应用自我评估报告x
- 2026年上海高考英语春考试卷及参考答案(完整版)
- 2025年法考客观题考试真题及答案
- 消防水池有限空间监理细则
- 智能教室设备安装与调试方案
- 雨课堂学堂在线学堂云《创新思维与创业实验(东南)》单元测试考核答案
- 2026年大连理工大学经济管理学院MBA面试含答案
- 光伏项目施工安全管理方案
- 2024(苏教版)劳动六年级上册全册教学案
- 参加党校中青班学习培训个人党性分析报告
- DZ/T 0273-2015地质资料汇交规范
评论
0/150
提交评论