C++程序设计报告计算机与程序设计语言.doc
《C++程序设计报告计算机与程序设计语言.doc》由会员分享,可在线阅读,更多相关《C++程序设计报告计算机与程序设计语言.doc(41页珍藏版)》请在沃文网上搜索。
1、C+语言程序设计实验报告中南大学二一二二一三学年第二学期信息科学与工程学院计算机与程序设计语言课程设计报告课程名称: 计算机与程序设计语言 班 级: 电气工程2012级 07 班 学 号: 0909120722 姓 名: 周雅玲 指导教师: 向 遥 二一三年 六 月目 录 一、设计要求*P1二、系统描述*P3三、功能模块结构*P4四、主要模块的算法说明*P15五、运行结果*P16六、课程设计总结*P24七、参考文献*P26八、附录*P27 一、设计要求(小型学生成绩管理系统)1、需要处理的基础数据 学生基本信息:如班级、学号、姓名、性别、年龄、宿舍号码、电话号码等。 学生选修课程的基本信息:课
2、程编号、课程名称、考试成绩、平时成绩、综合成绩、学分、重修否等。2、系统的基本功能 数据的录入:如录入学生的基本信息,以及该学生选修课程的基本信息; 数据的修改:如修改指定学号、或者指定姓名的学生信息,或者修改其选修课程信息; 数据的插入:插入某个学生信息; 数据的查询:如按学号查询、按姓名查询等; 数据的删除:如删除指定学号、或者指定姓名的学生及其选修课程信息; 平均成绩的计算:计算每个学生各门功课的平均成绩,并按平均成绩从高到低的次序输出学生信息; 考虑用文件把数据保存起来(可选)。 二、系统描述1、小型学生成绩管理系统开发设计思想 因为学生的基本信息内容较多,故定义一个Student 类
3、装学生的这些信息,而要求实现的录入增添修改删除查找等功能均会用到录入的学生的基本信息,于是考虑到用链表指针来一一查找,避免了多次重复的输入;并在Student类中定义Input() 和 Show()函数便于后面链表的使用。各功能函数均放在Studentmessage类中,使结构显得更加清晰明了。该程序用到了多态性的重载,构造函数和析构函数等。该系统主要包含三个方面:1、 操作 操作方面则有数据的输入、增添、修改和删除四个内容。2、查询 查询部分则包括按姓名,按学号查询。3、排名 排名部分则是按平均成绩从高到低排序输出学生信息。4、保存 保存所输入、增添、修改、删除等的学生信息。 输入按学号 操
4、 作按姓名 修改 增添2、流程图按姓名 删除 小型学生成绩管理系统 按姓名 查 询按学号 按平均成绩由高到低 排 名 按学号 保 存 退出系统三、 功能模块结构1、操作模块: (1)/*输入模块/ Input()是输入学生成绩信息的函数,在Student类中定义。 输入模块的功能是创建存储学生成绩信息的档案存储系统。其中的信息包括学生的班级、姓名、学号、性别、年龄、宿舍号码、电话号码、C+学分、C+平时成绩、C+考试成绩、C+综合成绩、数学学分、数学平时成绩、数学考试成绩、数学综合成绩、英语学分、英语平时成绩、英语考试成绩、英语综合成绩。 void Input() coutname; cout
5、Id; coutbanji; coutsex; coutold; coutroomnumber; couttelephonenumber; coutxuefen1; coutCnum1; coutCnum2; couttt请输入C+课程的综合成绩:; Cnum=Cnum1*0.3+Cnum2*0.7; coutCnumendl; if(Cnum60) coutttC+课程重修endl; coutxuefen2; coutMnum1; coutMnum2; couttt请输入数学课程的综合成绩:; Mnum=Mnum1*0.3+Mnum2*0.7; coutMnumendl; if(Mnum60
6、) couttt数学课程重修endl; coutxuefen3; coutEnum1; coutEnum2; couttt请输入英语课程的综合成绩:; Enum=Enum1*0.3+Enum2*0.7; coutEnumendl; if(Enum60) couttt英语课程重修Input(); End-Next=new Student; End=End-Next; cout添加成功!endl; cout输入任意字符!继续; getch(); (3)/*修改模块*/ Motify()是用于修改学生成绩信息的函数。在菜单上按2进入该系统,该系统主要有两部分:一是按照姓名修改信息,二是按照学号修改信
7、息。实现这两个功能主要是利用指针和switch结构。首先使定义空指针p,然后根据是按姓名修改还是按学号修改,使p指向姓名或学号的地址,再利用链表一直使指针指到输入函数Input(),再依次修改。void Studentmassage:ModifyItem() /定义修改模块 char name20 ,Id10; int x; Student * p=NULL; coutntt*n; couttt 1.按学生的姓名修改ntt 2.按学生的学号修改; coutx; switch(x) case 1:coutname; if(p=FindItem(name) p-Next-Input(); cout
8、修改成功!endl; cout输入任意字符!继续; getch(); else couttt没有找到该姓名的学生!nendl; cout输入任意字符!继续; getch(); break; case 2: coutId; if(p=FindID(Id) p-Next-Input(); cout修改成功!endl; cout输入任意字符!继续; getch(); else couttt没有找到!nendl; cout输入任意字符!继续; getch(); break; (4)/*删除模块*/ Remove Item()是删除学生成绩信息的函数,可以根据学生姓名或学号来找出其基本信息,当无法找到时
9、,便会在屏幕上显示出错。在主菜单中输入2进入该系统。这一部分其实与修改部分相差不大。也用到了指针和Switch结构,不同的是在删除模块中,增加定义了一个指针temp,该指针的作用是指向所要删除的对象,然后用delete删除其地址。void Studentmassage:RemoveItem() /删除模块 char name20 ,Id10; int x; Student * p=NULL,*temp=NULL; coutntt*n; couttt 1.按学生的姓名删除ntt 2.按学生的学号删除; coutx; switch(x) case 1: couttt请输入要删除的学生的姓名:nam
10、e; if(p=FindItem(name) temp=p-Next; p-Next=p-Next-Next; delete temp; couttt删除成功!endl; cout输入任意字符!继续; getch(); else couttt没有找到!endl; cout输入任意字符!继续; getch(); break; case 2: coutId; if(p=FindID(Id) temp=p-Next; p-Next=p-Next-Next; delete temp; cout修改成功!endl; cout输入任意字符!继续; getch(); else couttt没有找到!nend
11、l; cout输入任意字符!继续; getch(); break; 2、查询模块: 在菜单中输入4进入查询系统。该系统主要功能是通过选择是按姓名或是是按学号来查找该学生的所有信息并显示在屏幕上。主要思想与修改、删除的思想是一致的,通过指针指向该学生信息的地址,再通过Show()函数输出来。 void Studentmassage:Find() /定义查找部分 char name20 ,Id10; int x; Student * p=NULL; coutntt*n; couttt 1.按学生的姓名查找ntt 2.按学生学号查找; coutx; switch(x) case 1:coutname
12、; if(p=FindItem(name) p-Next-Show(); cout输入任意字符!继续; getch(); else couttt没有找到该姓名的学生!nendl; cout输入任意字符!继续; getch(); break; case 2: coutId; if(p=FindID(Id) p-Next-Show(); cout输入任意字符!继续; getch(); else couttt没有找到该学号的学生!nendl; cout输入任意字符!继续; getch(); break; 3、 排序模块: 该模块算是这个系统中较为复杂的部分。在主菜单中通过输入6进入该系统。此部分运用
13、的是链表的知识,先统计当前系统链表记录的总数,再通过该总数来判定是否进行比较排序,定义p,k两个指针,k指向的对象是p指向对象的后一位,再通过链接到两对象的平均分,通过比较平均分再进行交换两变量的数据域。为实现交换数据域这一功能,定义Student类的两个对象指针p1、p2及中间指针temp来用于p1,p2数据交换。 void Studentmassage:Sort()/对当前链表进行排序 排序模块 cout Sorting.endl; Student *p=NULL,*p1=NULL,*k=NULL; int n=Studentmassage:ListCount(); if(nNext;p!
14、=End;p=p-Next) for(k=p-Next;k!=End;k=k-Next) if(p-avek-ave) Studentmassage:Swap(p,k); cout 排序完成!Next;p!=End;p=p-Next) n+; return n; void Studentmassage:Swap(Student *p1, Student *p2)/交换两个combox变量的数据域 Student *temp=new Student; strcpy(temp-name,p1-name); strcpy(temp-Id,p1-Id); strcpy(temp-sex,p1-sex)
15、; strcpy(temp-roomnumber,p1-roomnumber); strcpy(temp-telephonenumber,p1-telephonenumber); temp-banji=p1-banji; temp-old=p1-old; temp-xuefen1=p1-xuefen1; temp-xuefen2=p1-xuefen2; temp-xuefen3=p1-xuefen3; temp-Cnum1=p1-Cnum1; temp-Cnum2=p1-Cnum2; temp-Cnum=p1-Cnum; temp-Mnum1=p1-Mnum1; temp-Mnum2=p1-M
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 报告 计算机 程序设计语言