当前位置:首页 >> 学科竞赛 >>

C++程序课程设计报告—采试1401班1组—张勇0204140125


C++程序课程设计报告



院: 资源与安全工程学院 采矿 1401 班 学生成绩管理系统 张 勇

专业班级: 课 姓 题: 名:

指导教师:

杨念哥

设计时间: 2015 年 7 月 6 日至 7 月 17 日

目 录

/>一、 程序设计目的 ................................................................... 2 二、 程序功能介绍 ................................................................... 2 三、 程序设计 ........................................................................... 2 1)程序结构 .......................................................................... 2 2)主函数流程图 .................................................................. 4 3)系统功能流程图 .............................................................. 5 四、 调试与分析 ....................................................................... 6 1)程序调试过程 .................................................................. 7 2)程序的不足 ...................................................................... 7 五、 执行结果 ........................................................................... 8 六、 课程设计总结 ................................................................... 8 附录:源程序代码 ..................................................................... 9

C++程序课程设计报告

成绩查询管理系统

一、程序设计目的 将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控 制结构、数据结构作一比较和总结,结合设计题目进行综合性应用, 对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面 的能力应该得到锻炼: (1)进一步巩固、加深学生所学专业课程《 C++程序设计语言》的 基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决 问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而 达到提高学生素质的最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用 C++语言编写调 试应用系统程序, 训练独立开发应用系统, 进行数据处理的综合能力。 (4)对于给定的设计题目,如何进行分析,理清思路,并给出相应 的数学模型。 (5)掌握结构化程序设计方法,熟悉面向对象程序设计方法。 (6)熟练掌握 C++语言的基本语法,灵活运用各种数据类型。 (7)进一步掌握在集成环境下如何调试程序和修改程序。 二、程序功能介绍 (1)数据输入:添加学生姓名,系统自动生成学号,并输入学生成 绩; (2)查询成绩:通过姓名查询成绩,输入待查学生姓名可输出该学 生成绩;通过学号查询,输入待查学生学号,输出 该学生成绩; (3)修改成绩:输入需要修改成绩学生姓名,并输入新成绩; (4) 输出所有学生成绩: 可以将所有学生的姓名, 学号, 成绩输出; (5)统计及格及优秀人数; (6)储存学生数据; (7)清屏。 三、程序设计 1、程序结构 student 类:定义公有成员姓名,学号,成绩,和成绩等级。 Function 类: (1)定义私有成员 stu 数组和计数 n
2

C++程序课程设计报告

成绩查询管理系统

(2)成员函数: Function () 学号计数器重置 Input()添加学生和成绩并排列成绩等级 QueryByID()按学号查询学生信息 QueryByName()按姓名查询成绩 ModifyScore()修改成绩 Output()输出所有学生成绩 Tongji()统计及格和优秀人士 loadin(char *filename)导入学生成绩 saveout(char *filename)导出到 stu.txt 文件 void welcome()界面函数 void welcome1()输入子界面函数 void welcome2()查询子界面函数 void welcome4()输出子界面函数 int main()主函数 2、主函数流程图

3

C++程序课程设计报告

开始 N !(cin>>xuanze)

成绩查询管理系统

Y

Cin.clear() Welcome()

主界面

Cin.sync()

Swith(choose)
Ca

se2 N

Y h i

f.loadin(tmp)

Case1

Y h i

Switch(xuanze1)
Cas

e1

f.input()

N 2 Y h i Y h i f.QueryByID()

Case2

Y h i

Case

Switch(xuanze1) N
Case

N Y h i

1

f.QueryByNname()

Case3

f.ModifyScore() Y h i Y h i

N
Case4

Ca

se2

F.saveout(tmp)

Y h i

Switch(xuanze1)

N
Cas

e1

f.output()

N
Case5

Y h i Y h i Y h i

f.tongji()

N
Case6

return 0

N
Case0

system("cls")

N

return 0
4

break

C++程序课程设计报告

成绩查询管理系统

3、系统功能流程图 输入

统计

修改

菜单程序

查找

显示 主程序 退出

初始化程序

5

C++程序课程设计报告

成绩查询管理系统

四、调试与分析 1、程序调试过程 1 初始界面 ○

2 输入数据:直接输入或文件输入 ○

3 查询学生信息:按姓名查询或学号查询 ○

6

C++程序课程设计报告

成绩查询管理系统

4 修改成绩 ○

5 输出所有学生成绩:直接输出或文件输出 ○

6 统计优秀及格人数 ○

7 退出系统 ○ 8 清屏 ○

2、程序的不足
7

C++程序课程设计报告

成绩查询管理系统

(1)无法按照班级,年级进行分类统计学生信息; (2)只适合统计人数较少的信息,数据太多时不易统计数据; (3)无法对成绩实现升序和降序排列; (4)信息不够完善,当有两个人同名时,我们便无法区分两个人的 信息,所以还应该统计除姓名,学号之外的其它信息。 五、执行结果 1、随时添加学生姓名,系统自动生成学号,并输入学生成绩; 2、能够统计不及格、及格、优秀人数,便于管理学生信息; 3、能够输出所有学生成绩; 4、随时添加学生信息,系统自动生成学号,并输入学生成绩。 六、课程设计总结 结束了这个尽管不够完美的课程设计报告, 我着实有很多感想和 体会。首先,虽然学到了课本知识,但是到实际操作时,却不知道从 何做起。然后我们上网查资料,问老师,问同学,终于有了思路,然 后我们就根据这个思路进行下去。在一个周之后,当们我把源代码修 改正确使之能够正常运行时, 当意料之中的运行结果出现在眼前的屏 幕上时,我们感到很有成就感。然而,我们在测试过程中不断的发现 新的问题,不断有新的挑战,但是我们仍然耐心的一遍一遍的修改, 一遍一遍的测试,最终能够实现老师布置的所有要求。 今天便是答辩的日期, 回想起来, 这次课程设计已经接近两个周, 也许做的不完美,但这里有我们的付出和努力。在这个过程中,学到 了很多。首先,要不懂就问,这样可能事半功倍。再者,一个团队的 团结协作很重要,一个人可能很难做成功,但是大家团结起来,每个 人负责一个版块,便取得了最后的成功。还有就是需要耐心,我们需 要将源代码一句一句的修改,一遍一遍的调试,直到结果正确。

8

C++程序课程设计报告

成绩查询管理系统

附录:源程序代码
#include <iostream> #include <string> #include <fstream> #include <stdlib.h> using namespace std; class student { public: int id;//学号 string name;//姓名 double chengji;//成绩 int lv;//及格和优秀的标志,优秀的话 lv=1,及格的话 lv=2,不及格的话 lv=3 }; class Function //功能类 { private: student stu[1000];//存放学生的类数组 int n;//计数器 public: Function() { n=0;//学号计数器重置 } void input()//添加学生和成绩 { char c; while(1) { char chengjifilter[40];//输入的数字转成字符串,检查是否合法 cout<<"正在添加学生信息..."<<endl; cout<<"请输入学生姓名:"; cin>>stu[n].name; cout<<"请输入学生成绩:"; cin>>chengjifilter; stu[n].chengji=atoi(chengjifilter);//atoi,系统函数,字符串转数字,如果是 字母自动按 0 处理 cout<<" 该 同 学 姓 名 为 :"<<stu[n].name<<" 为:"<<stu[n].chengji<<endl;
9

成 绩

C++程序课程设计报告

成绩查询管理系统

cout<<"系统自动分配学号,该同学的学号为:"<<n+1<<endl; stu[n].id=n+1; if(stu[n].chengji>=80 && stu[n].chengji<=100) stu[n].lv=1; else if(stu[n].chengji>=60 && stu[n].chengji<80) stu[n].lv=2; else if(stu[n].chengji<60 && stu[n].chengji>=0) stu[n].lv=3; else stu[n].lv=4;//出现 4 就说明成绩出错了 n++;

cout<<"该同学成绩输入完毕,还需要继续输入吗?(y/n)"<<endl; cin>>c; if(c=='Y' ||c=='y') continue; else break; } } void QueryByID()//按学号查询学生信息 { int t; int isfind=0;//是否找到 cout<<"请输入要查找的学号:"; cin>>t; for(int i=0;i<n;i++) { if(stu[i].id==t) //查找 { cout<<" 找到学号为 "<<t<<" 的同学 , 姓名为 :"<<stu[i].name<<", 成 绩为:"<<stu[i].chengji<<endl; isfind=1; } } if(isfind==0) { cout<<"没有找到相应的同学,请重新查询."<<endl;
10

C++程序课程设计报告

成绩查询管理系统

} } void QueryByName()//按姓名查询成绩 { string t; int isfind=0;//是否找到 cout<<"请输入要查找的姓名:"; cin>>t; for(int j=0;j<n;j++)//开始查找 { if(stu[j].name==t) { cout<<" 找到姓名为 "<<t<<" 的同学 , 学号为 :"<<stu[j].id<<", 成绩 为:"<<stu[j].chengji<<endl; isfind=1; } } if(isfind==0) { cout<<"没有找到相应的同学,请重新查询."<<endl; } } void ModifyScore()//修改成绩 { string t; int isfind=0;//是否找到 cout<<"请输入要修改的学生姓名:"; cin>>t; for(int j=0;j<n;j++)//开始查找 { if(stu[j].name==t)//修改 { cout<<" 找到姓名为 "<<t<<" 的同学 , 学号为 :"<<stu[j].id<<", 成绩 为:"<<stu[j].chengji<<endl; cout<<"请输入新的姓名:"; cin<<stu[j].name; cout<<"请输入新的成绩:"; cin>>stu[j].chengji; if(stu[j].chengji>=80 && stu[j].chengji<=100)
11

C++程序课程设计报告

成绩查询管理系统

stu[j].lv=1; else if(stu[j].chengji>=60 && stu[j].chengji<80) stu[j].lv=2; else if(stu[j].chengji<60 && stu[j].chengji>=0) stu[j].lv=3; else stu[j].lv=4;

isfind=1; } } if(isfind==0) { cout<<"没有找到相应的同学,请重新查询."<<endl; } } void output()//输出所有学生成绩 { cout<<"共有"<<n<<"名学生."<<endl;//下标从 0 开始,所以要加 1 cout<<"学号 姓名 成绩"<<endl; for(int i=0;i<n;i++) { cout<<" "<<stu[i].id<<" "<<stu[i].name<<" "<<stu[i].chengji<<endl; } } void tongji()//统计及格和优秀人士 { int jige=0,youxiu=0,bujige=0;//统计 for(int i=0;i<n;i++) { if(stu[i].lv==1) youxiu++; else if(stu[i].lv==2) jige++; else if(stu[i].lv==3) bujige++; } cout<<"统计结果:"<<endl; cout<<" 优 秀 人 数 :"<<youxiu<<" 数:"<<bujige<<endl;
12

及 格 人 数 :"<<jige<<"

不及格人

C++程序课程设计报告

成绩查询管理系统

} void loadin(char *filename)//导入学生成绩的函数,参数为导入的文件名称 { ifstream in;//文件输入流 in.open(filename);//打开 if(in.fail()==1)//如果打开失败 { cout<<filename<<"文件打开失败!"<<endl; } else { while(!in.eof())//读取到文件的 eof,即末尾 { in>>>stu[n].id>>stu[n].name>>stu[n].chengji; //按行读入学生信息 stu[n].id=n+1; //判断该学生属于哪一段 if(stu[n].chengji>=80 && stu[n].chengji<=100) stu[n].lv=1; else if(stu[n].chengji>=60 && stu[n].chengji<80) stu[n].lv=2; else if(stu[n].chengji<60 && stu[n].chengji>=0) stu[n].lv=3; else stu[n].lv=4;//出现 4 就说明成绩出错了 in.get();//吃掉导入文件的最后一个回车符,否则会多读取一行无效信 息 if(in.peek()=='\n') break; n++; } cout<<"导入成功!"<<endl; } in.close(); } void saveout(char *filename)//导出到 stu.txt 文件 { ofstream out; out.open(filename,ios::trunc);//trunc:覆盖方式写入文件
13

C++程序课程设计报告

成绩查询管理系统

for(int i=0;i<n;i++)//导出 { out<<stu[i].id<<" "<<stu[i].name<<" } cout<<"导出文件成功"<<endl; } };

"<<stu[i].chengji<<endl;

void welcome()//界面函数 { cout<<"******************************"<<endl; cout<<" 学生成绩管理系统 "<<endl; cout<<"******************************"<<endl; cout<<"**1--输入数据*****************"<<endl; cout<<"**2--查询学生信息*************"<<endl; cout<<"**3--修改成绩*****************"<<endl; cout<<"**4--输出所有学生成绩*********"<<endl; cout<<"**5--统计及格和优秀人数*******"<<endl; cout<<"**6--退出系统*****************"<<endl; cout<<"**0--清屏*********************"<<endl; } void welcome1()//输入子界面 { cout<<"**1--直接输入*****************"<<endl; cout<<"**2--文件输入*****************"<<endl; } void welcome2()//查询子界面 { cout<<"**1--按学号查询***************"<<endl; cout<<"**2--按姓名查询***************"<<endl; } void welcome4()//输出 { cout<<"**1--直接输出*****************"<<endl; cout<<"**2--文件输出*****************"<<endl; } int main() {
14

C++程序课程设计报告

成绩查询管理系统

Function f; int choose,choose1;//输入变量,用来主界面的选择 while(1) { welcome(); while(!(cin>>choose)) {

cin.clear(); cin.sync(); welcome(); } switch(choose) { case 1: { welcome1(); cin>>choose1; switch(choose1) { case 1:f.input();break; case 2: { char tmp[50]; cout<<"--------注意--------"<<endl; cout<<"请保证导入的 txt 文件格式为: 姓名 成 绩,中间空一个格,每行一个学生信息."<<endl; cout<<" 请 输 入 导 入 文 件 的 文 件 名 , 例 如:student.txt(请保证程序和 txt 文件在一个文件夹内):"; cin>>tmp; f.loadin(tmp);//执行导入 break; } } break; } case 2: { welcome2(); cin>>choose1; switch(choose1) {
15

C++程序课程设计报告

成绩查询管理系统

case 1: f.QueryByID();break; case 2: f.QueryByName();break; } break; } case 3:f.ModifyScore();break; case 4: { welcome4(); cin>>choose1; switch(choose1) { case 1:f.output();break; case 2: { char tmp[50]; cout<<" 请 输 入 导 入 文 件 的 文 件 名 , 例 如:student.txt(请保证程序和 txt 文件在一个文件夹内):"; cin>>tmp; f.saveout(tmp); break; } } } case 5:f.tongji();break; case 6:return 0;break; case 0:system("cls");break;//清除屏幕指令,可以上网查到 } } return 0; }

16


相关文章:
C++程序课程设计报告—采试1401班1组—张勇0204140125
C++程序课程设计报告—采试1401班1组—张勇0204140125_学科竞赛_高中教育_教育专区。C++课程设计报告 C++程序课程设计报告 学 院: 资源与安全工程学院 采矿 1401 班...
更多相关标签:
张勇安 | 张勇和马云什么关系 | 海底捞张勇 | 张勇传 | 隆昌张勇被立案调查 | 阿里 张勇 | 张勇健 | 张勇简历 |