C++面向对象程序设计课程设计报告学籍管理系统.doc

上传人:土8路 文档编号:10388754 上传时间:2021-05-13 格式:DOC 页数:27 大小:150KB
返回 下载 相关 举报
C++面向对象程序设计课程设计报告学籍管理系统.doc_第1页
第1页 / 共27页
C++面向对象程序设计课程设计报告学籍管理系统.doc_第2页
第2页 / 共27页
C++面向对象程序设计课程设计报告学籍管理系统.doc_第3页
第3页 / 共27页
C++面向对象程序设计课程设计报告学籍管理系统.doc_第4页
第4页 / 共27页
C++面向对象程序设计课程设计报告学籍管理系统.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《C++面向对象程序设计课程设计报告学籍管理系统.doc》由会员分享,可在线阅读,更多相关《C++面向对象程序设计课程设计报告学籍管理系统.doc(27页珍藏版)》请在三一文库上搜索。

1、C+课程设计报告课程设计报告 课程设计题目:学籍管理系统课程设计题目:学籍管理系统 II 2011 年年 9 月月 4 日日 【内容提要】学籍管理系统设计涉及学生信息的录入,显示,查找,删除,修 改, 统计,保存,退出等功能,从而能够对信息进行处理。程序中运用了相关类的 知识,同时定义了一定数量的数据及成员函数。程序使用了数组记录统计的相 关数据,运用了指针实现相应功能函数的功能,运用了 student ,两个类实现面 向对象的要求。程序的完成涉及到程序的分析,模块的分解,程序的控制程序 的调试。 【关键字】 学籍管理 vc+6.0 面向对象 程序控制 类 【任务书】 面向对象技术与面向对象技

2、术与 C+C+ +课程设计任务书课程设计任务书 课 程面向对象技术与 C+ 班级 100601-604 指导教师姜虹 题 目学籍管理系统 2完成时间2011 年 8 月 29 日至 2011 年 9 月 2 日 主要内容 问题描述(功能要求): 实现数据录入,查询、排序和删除功能,详细要求见后 设计报告要求 1封面:(格式附后) 2课程设计任务书 3课程设计报告: 系统总体方案 设计思路和主要步骤 各功能模块和流程图 设计代码 心得体会和参考资料 说明:学生完成课程设计后,提交课程设计报告及软件,要求文字通畅、字 迹工整(也可用以打印),文字不少于 5000 字,并装订成册。 星期 周次 一二

3、三四五六日 第 2 周 1-41-41-41-41-4 上机时间安排 指导时 间地点 上机时间,E506 版面要求 1.题目用黑体三号,段后距 18 磅(或 1 行) ,居中对齐; 2.标题用黑体四号,段前、段后距 6 磅(或 0.3 行) ; 3.正文用小四号宋体,行距为 1.25 倍行距; 4.标题按“一” 、 “” 、 “1” 、 “”顺序编号。 目目目 录录录 一一 概述概述.3 二二 系统分析系统分析.3 (一)系统的实现.3 (二)实现的基本功能.3 (三)拓展.4 三三 设计设计.4 (一) 系统功能设计.4 (二) 类设计.4 (三) 函数设计.4 (四)流程图.5 四四 主程

4、序主程序.7 (一)代码.7 (二)运行结果.24 五五 不足之处不足之处.24 六六 心得体会心得体会.24 七七 参考文献参考文献 .25 一一 概述:概述: (一)课程设计的任务: 用 C+面向对象程序设计语言编写一个小型的学籍管理系统,要求 数据的录入、查询、排序和删除。 (二)系统特点: 系统要能够对相应的数据进行很好的测试,系统的统计对每一科 的 总成绩,平均成绩,及格律都进行了统计;系统数据的录入以手工录 入: 系统统计学生的基本信息较全面包括学号,姓名,性别,学分,平时 成 绩,卷面成绩,综合成绩,实得学分、实得总学分;程序中查找运用 了 两种查找方式即学号查找和姓名查找。 (

5、三)我的工作: 在小组中我负责资料的查找和类的编写,以及和大家一起对程序 进行分析和修改。 二二 系统分析系统分析 (一)系统的实现 1、对任务书做仔细分析,查询资料,对程序有一个大概思路,并 做出相应的拓展。 2、画出流程图,根据流程图编写程序。 3、上机对程序进行调试,修改,完善。 4、整理资料,撰写课程设计报告。 (二)实现的基本功能 1、学生基本信息的录入包括学号、姓名、性别等。 2、数据的查询(学生基本情况查询成绩查询) 3、实得学分的计算 4、学生信息的删除 (三)拓展 1、学生数据的修改 2、学生成绩的统计 3、学生数据的插入 三三 设计设计 (一)功能设计(结构图) (二)类的

6、设计 类:class 数据成员:学号、姓名、性别、学分、平时成绩、卷面成绩、 综合成绩、实得学分、实得总学分 (三)函数的设计 函数:input(录入数据) Asearch(基本信息查询) Bsearch(成 绩查询)change(修改数据) shanchu(删除数据) tongji (统计数据)show(显示数据) display(显示菜单) sdxfjs (计算实得学分) (四)流程图 1、主函数流程图 ? Y N 2、增加函数流程图 ID1 创建学生类 student 根据输入 执行操作 学生数加 1 输入成绩 输入成绩 创建学生对象节点 学生节点加入链表 3、修改函数 4、查找函数 5

7、、数据录入函数流程图 ID ? 输入学生姓名或学号 开始 输入查找学生的姓名或学号 学生基本情况查询 学生成绩查询 显示信息 结束 开始 输入学生信息 是否继续录入 Y N 6、统计函数流程图 是 否 四四 主程序主程序 (一) 代码 /类的定义与函数的声明,student.h #include #include #include using namespace std; /学生成绩结构体/ struct score float yw;/语文成绩 float sx;/数学成绩 float yy;/英语成绩 float wl;/物理成绩 结束 开始 输入要统计的科目 显示该科目信息 是否继续统计

8、 结束 float cjj;/C+成绩 float sum;/总成绩 float avar;/平均成绩 float zxf;/实得总学分 struct score *next;/定义结构指针 next ; /学生数据类/ class student public: student() student()/析构函数 string mun;/学号 string name;/姓名 string sex;/性别 score xf;/学分 score pscj; /平时成绩 score jmcj; /卷面成绩 score zhcj;/综合成绩; score sdxf; /实得学分 score sdzxf

9、;/实得总学分 class student *next;/定义结构指针 next ; /函数声明/ void input(student *head);/录入数据 void Asearch(student *head);/学生基本信息查询 void Bsearch(student *head);/成绩查询 void change(student *head);/修改数据 void shanchu(student *head);/删除数据 void tongji(student *head);/统计数据 void show(student *head);/显示数据 void display();

10、/显示菜单 float sdxfjs (float zhcj,float xf);/计算实得学分 /类的实现与函数的定义,student.cpp #include #include #include using namespace std; int amount=0; /记录学生个数 /显示菜单/ void display() cout/学生学籍管理系统/endlendl; cout /1、学生数据的录入 / endl; cout /2、学生数据的修改 / endl; cout /3、学生信息的显示 / endl; cout /4、学生信息的查询 / endl; cout /5、学生成绩的统计

11、 / endl; cout /6、学生信息的删除 / endl; cout /7、 退出系统 / endlendl; cout注:请输入相应括号里的数字来执行相关的操作! endl; cout/欢迎您使用学生学籍管理系统!/endl; cout请选择相应的数字进行操作:next; while(stu!=NULL) cout学号:(*stu).munsetw(8)姓名:(*stu).namesetw(8)性别: (*stu).sexendl; cout|课程编号|课程名称|平时成绩|卷面成绩|综合成绩|应得学分|实得学分 endl; cout| 001 | 语文 |setw(8)(*stu).

12、pscj.yw|setw(8)(*stu).jmcj.yw; cout|setw(8)(*stu).zhcj.yw|setw(8)(*stu).xf.yw|setw(6)(*st u).sdxf.ywendl; cout| 002 | 数学 |setw(8)(*stu). pscj.sx|setw(8)(*stu).jmcj.sx; cout|setw(8)(*stu).zhcj.sx|setw(8)(*stu).xf.sx|setw(6)(*stu). sdxf.sxendl; cout| 003 | 英语 |setw(8)(*stu). pscj.yy|setw(8)(*stu).jmcj

13、.yy; cout|setw(8)(*stu).zhcj.yy|setw(8)(*stu).xf.yy|setw(6)(*stu). sdxf.yyendl; cout| 004 | 物理 |setw(8)(*stu). pscj.wl|setw(8)(*stu).jmcj.wl; cout|setw(8)(*stu).zhcj.wl|setw(8)(*stu).xf.wl|setw(6)(*stu). sdxf.wlendl; cout| 005 | C+ |setw(8)(*stu).pscj.cjj|setw(8)(*stu).jmcj.cjj; cout|setw(8)(*stu).z

14、hcj.cjj|setw(8)(*stu).xf.cjj|setw(6)(*stu). sdxf.cjjendl; cout所有课目的总成绩为:(*stu).zhcj.sum ; coutsetw(6)所有课目的平均成绩:(*stu).zhcj.avarendl; cout该学生共修:5 科 实得总学分为:(*stu). sdzxf.zxfnext; /学生数据录入/ void input(student *head) char c; int j=0; student *p=head; do student *stu=new student;/动态创建对象,调用默认构造函数进行初始化学生 学籍

15、管理系统的数据 cout请输入学生学号:(*stu).mun; cout请输入学生姓名:(*stu).name; cout请输入学生性别(男/女):(*stu).sex; cout请输入学生的语文成绩和学分:endl; cout平时成绩:(*stu).pscj.yw; cout卷面成绩:(*stu).jmcj.yw; cout学分:(*stu).xf.yw; cout请输入学生的数学成绩和学分:endl; cout平时成绩:(*stu).pscj.sx; cout卷面成绩:(*stu).jmcj.sx; cout学分:(*stu).xf.sx; cout请输入学生的英语成绩和学分:endl;

16、cout平时成绩:(*stu).pscj.yy; cout卷面成绩:(*stu).jmcj.yy; cout学分:(*stu).xf.yy; cout请输入学生的物理成绩和学分:endl; cout平时成绩:(*stu).pscj.wl; cout卷面成绩:(*stu).jmcj.wl; cout学分:(*stu).xf.wl; cout请输入学生的 C+成绩和学分:endl; cout平时成绩:(*stu).pscj.cjj; cout卷面成绩:(*stu).jmcj.cjj; cout学分:(*stu).xf.cjj; /综合成绩的计算/ (*stu).zhcj.yw=(*stu).psc

17、j.yw)*0.30+(*stu).jmcj.yw)*0.70; (*stu).zhcj.sx=(*stu).pscj.sx)*0.30+(*stu).jmcj.sx)*0.70; (*stu).zhcj.yy=(*stu).pscj.yy)*0.30+(*stu).jmcj.yy)*0.70; (*stu).zhcj.wl=(*stu).pscj.wl)*0.30+(*stu).jmcj.wl)*0.70; (*stu).zhcj.cjj=(*stu).pscj.cjj)*0.30+(*stu).jmcj.cjj)*0.70; /总成绩和平均成绩的计算/ (*stu).zhcj.sum=(*

18、stu).zhcj.yw+(*stu).zhcj.sx+(*stu).zhcj.yy+(*stu).zhcj.wl+(*stu).zhcj.c jj; (*stu).zhcj.avar=(*stu).zhcj.sum/5.0; /实得学分的计算/ (*stu).sdxf.yw=sdxfjs(*stu).zhcj.yw,(*stu).xf.yw); (*stu).sdxf.sx=sdxfjs(*stu).zhcj.sx,(*stu).xf.sx); (*stu).sdxf.yy=sdxfjs(*stu).zhcj.yy,(*stu).xf.yy); (*stu).sdxf.wl=sdxfjs(*

19、stu).zhcj.wl,(*stu).xf.wl); (*stu).sdxf.cjj=sdxfjs(*stu).zhcj.cjj,(*stu).xf.cjj); (*stu).sdzxf.zxf=(*stu).sdxf.yw+(*stu).sdxf.sx+(*stu).sdxf.yy+(*stu).sdxf.wl+(*stu).sdxf. cjj; stu-next=p-next; p-next=stu; amount+;/若成功录入一个学生数据,则学生人数加 1 coutc; p=p-next; while(c!=y coutc; while(c=y); j+; cout录入了amount

20、个学生的信息next; bool flag=0; coutname; do if (stu!=NULL cout学号:(*stu).munsetw(8)姓名:(*stu).namesetw(8) 性别:(*stu).sexendl; cout|课程编号|课程名称|平时成绩|卷面成绩|综合成绩|应得学分|实得 学分endl; cout| 001 | 语文 |setw(8)(*stu). pscj.yw|setw(8)(*stu).jmcj.yw; cout|setw(8)(*stu).zhcj.yw|setw(8)(*stu).xf.yw|setw(6)(*st u).sdxf.ywendl;

21、cout| 002 | 数学 |setw(8)(*stu). pscj.sx|setw(8)(*stu).jmcj.sx; cout|setw(8)(*stu).zhcj.sx|setw(8)(*stu).xf.sx|setw(6)(*stu). sdxf.sxendl; cout| 003 | 英语 |setw(8)(*stu). pscj.yy|setw(8)(*stu).jmcj.yy; cout|setw(8)(*stu).zhcj.yy|setw(8)(*stu).xf.yy|setw(6)(*stu). sdxf.yyendl; cout| 004 | 物理 |setw(8)(*s

22、tu). pscj.wl|setw(8)(*stu).jmcj.wl; cout|setw(8)(*stu).zhcj.wl|setw(8)(*stu).xf.wl|setw(6)(*stu). sdxf.wlendl; cout| 005 | C+ |setw(8)(*stu).pscj.cjj|setw(8)(*stu).jmcj.cjj; cout|setw(8)(*stu).zhcj.cjj|setw(8)(*stu).xf.cjj|setw(6)(*stu). sdxf.cjjendl; cout所有课目的总成绩为:(*stu).zhcj.sum ; coutsetw(6)所有课目的

23、平均成绩:(*stu).zhcj.avarendl; cout该学生共修:5 科 实得总学分为: (*stu).sdzxf.zxfnext; while(stu!=NULL); if(flag=0) cout/对不起!您要查询的学生信息已经被删除或不存在!/endl; coutc; while(c!=y coutc; while(c=y); /学生成绩查询/ void Bsearch(student *head) char c; string xh; do student *stu=head-next; bool flag=0; coutxh; do if (stu!=NULL cout学号:

24、(*stu).munsetw(8)姓名:(*stu).nameendl; cout|课程编号|课程名称|平时成绩|卷面成绩|综合成绩|应得学分|实得 学分endl; cout| 001 | 语文 |setw(8)(*stu). pscj.yw|setw(8)(*stu).jmcj.yw; cout|setw(8)(*stu).zhcj.yw|setw(8)(*stu).xf.yw|setw(6)(*st u).sdxf.ywendl; cout| 002 | 数学 |setw(8)(*stu). pscj.sx|setw(8)(*stu).jmcj.sx; cout|setw(8)(*stu)

25、.zhcj.sx|setw(8)(*stu).xf.sx|setw(6)(*stu). sdxf.sxendl; cout| 003 | 英语 |setw(8)(*stu). pscj.yy|setw(8)(*stu).jmcj.yy; cout|setw(8)(*stu).zhcj.yy|setw(8)(*stu).xf.yy|setw(6)(*stu). sdxf.yyendl; cout| 004 | 物理 |setw(8)(*stu). pscj.wl|setw(8)(*stu).jmcj.wl; cout|setw(8)(*stu).zhcj.wl|setw(8)(*stu).xf.

26、wl|setw(6)(*stu). sdxf.wlendl; cout| 005 | C+ |setw(8)(*stu).pscj.cjj|setw(8)(*stu).jmcj.cjj; cout|setw(8)(*stu).zhcj.cjj|setw(8)(*stu).xf.cjj|setw(6)(*stu). sdxf.cjjendl; cout所有课目的总成绩为:(*stu).zhcj.sum ; coutsetw(6)所有课目的平均成绩:(*stu).zhcj.avarendl; cout该学生共修:5 科 实得总学分为: (*stu).sdzxf.zxfnext; while(stu

27、!=NULL); if(flag=0) cout/对不起!您要查询的学生信息已经被删除或不存在!/endl; coutc; while(c!=y coutc; while(c=y); /学生数据的修改/ void change(student *head) string name; char c; do bool flag2=0; student *stu=head-next; coutname; do if (name=(*stu).name) /对要修改的学生进行信息修改 flag2=1; cout请重新输入该学生的学号:(*stu).mun; cout请重新输入该学生的姓名:(*stu)

28、.name; cout请重新输入该学生的性别(男/女):(*stu).sex; cout请输入该学生新的语文成绩:; cout平时成绩:(*stu).pscj.yw; cout卷面成绩:(*stu).jmcj.yw; cout请输入该学生新的数学成绩:; cout平时成绩:(*stu).pscj.sx; cout卷面成绩:(*stu).jmcj.sx; cout请输入该学生新的英语成绩:; cout平时成绩:(*stu).pscj.yy; cout卷面成绩:(*stu).jmcj.yy; cout请输入该学生新的物理成绩:; cout平时成绩:(*stu).pscj.wl; cout卷面成绩:

29、(*stu).jmcj.wl; cout请输入该学生新的 C+成绩:; cout平时成绩:(*stu).pscj.cjj; cout卷面成绩:(*stu).jmcj.cjj; /综合成绩的计算/ (*stu).zhcj.yw=(*stu).pscj.yw)*0.30+(*stu).jmcj.yw)*0.70; (*stu).zhcj.sx=(*stu).pscj.sx)*0.30+(*stu).jmcj.sx)*0.70; (*stu).zhcj.yy=(*stu).pscj.yy)*0.30+(*stu).jmcj.yy)*0.70; (*stu).zhcj.wl=(*stu).pscj.w

30、l)*0.30+(*stu).jmcj.wl)*0.70; (*stu).zhcj.cjj=(*stu).pscj.cjj)*0.30+(*stu).jmcj.cjj)*0.70; /总成绩和平均成绩的计算/ (*stu).zhcj.sum=(*stu).zhcj.yw+(*stu).zhcj.sx+(*stu).zhcj.yy+(*stu).zhcj.wl+(*stu).zhcj.c jj; (*stu).zhcj.avar=(*stu).zhcj.sum/5.0; /实得学分的计算/ (*stu).sdxf.yw=sdxfjs(*stu).zhcj.yw,(*stu).xf.yw); (*

31、stu).sdxf.sx=sdxfjs(*stu).zhcj.sx,(*stu).xf.sx); (*stu).sdxf.yy=sdxfjs(*stu).zhcj.yy,(*stu).xf.yy); (*stu).sdxf.wl=sdxfjs(*stu).zhcj.wl,(*stu).xf.wl); (*stu).sdxf.cjj=sdxfjs(*stu).zhcj.cjj,(*stu).xf.cjj); (*stu).sdzxf.zxf=(*stu).sdxf.yw+(*stu).sdxf.sx+(*stu).sdxf.yy+(*stu).sdxf.wl+(*stu).sdxf. cjj;

32、cout学号:(*stu).munsetw(8)姓名:(*stu).namesetw(8) 性别:(*stu).sexendl; cout|课程编号|课程名称|平时成绩|卷面成绩|综合成绩|应得学分|实得 学分endl; cout| 001 | 语文 |setw(8)(*stu). pscj.yw|setw(8)(*stu).jmcj.yw; cout|setw(8)(*stu).zhcj.yw|setw(8)(*stu).xf.yw|setw(6)(*st u).sdxf.ywendl; cout| 002 | 数学 |setw(8)(*stu). pscj.sx|setw(8)(*stu)

33、.jmcj.sx; cout|setw(8)(*stu).zhcj.sx|setw(8)(*stu).xf.sx|setw(6)(*stu). sdxf.sxendl; cout| 003 | 英语 |setw(8)(*stu). pscj.yy|setw(8)(*stu).jmcj.yy; cout|setw(8)(*stu).zhcj.yy|setw(8)(*stu).xf.yy|setw(6)(*stu). sdxf.yyendl; cout| 004 | 物理 |setw(8)(*stu). pscj.wl|setw(8)(*stu).jmcj.wl; cout|setw(8)(*st

34、u).zhcj.wl|setw(8)(*stu).xf.wl|setw(6)(*stu). sdxf.wlendl; cout| 005 | C+ |setw(8)(*stu).pscj.cjj|setw(8)(*stu).jmcj.cjj; cout|setw(8)(*stu).zhcj.cjj|setw(8)(*stu).xf.cjj|setw(6)(*stu). sdxf.cjjendl; cout所有课目的总成绩为:(*stu).zhcj.sum ; coutsetw(6)所有课目的平均成绩:(*stu).zhcj.avarendl; cout该学生共修:5 科 实得总学分为: (*s

35、tu).sdzxf.zxfnext; while(stu!=NULL); if(flag2=0) cout对不起!您要修改的学生信息已经被删除或不存在!请检查后重新输入! endl; coutc; while(c!=y coutc; while(c=y); /学生数据的删除/ void shanchu(student *head) char c; string xh; do bool flag=0; coutxh; student *q,*p; q=head; while(q-next!=NULL if(q-next!=NULL) flag=1; p=q-next; q-next=q-next

36、-next; /要删除学生数据移走,后面数据上移 amount-;/删除一个学生,则学生人数减 1 free(p);/释放 p 指针所指向的变量所占的空间 cout/删除成功!/endl; if(flag=0) cout对不起!您要删除的学生信息已经被删除或不存在!请检查后重新输入! endl; coutc; while(c!=y coutc; while(c=y); /某科目学生成绩的统计/ void tongji(student *head) char z; string kemu; do int i,a,b,c,d,e; a=b=c=d=e=0;/初始化统计各成绩段人数的参数 student *stu=head-next; bool flag=0; cout/某科目学生成绩的统计/endl; coutkemu; do if(stu!=NULL i = (*stu).zhcj.yw/10; if(stu!=NULL i = (*stu).zhcj.sx/10;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1