计算机高级语言计算机高级语言
计算机高级语言(C++)实习报告
实验一、成绩管理系统
实验二、 MyString类定义和应用
学生姓名:靳庆琛
学 号:20111001524
指导老师:马丽
中国地质大学(武汉)机械与电子信息学院
2013 年 6月
实验一、成绩管理系统
一、 设计任务与要求:
1、 设计三个结构体:学生类(存储学生的基本信息,如学生姓名Stu_Name、学生学号
Stu_ID、学生性别Stu_Sex等,采用结构体);课程科目Course(存储课程名称
Cou_Name,课程编号Cou_ID,开课学...
计算机高级语言
计算机高级语言(C++)实习报告
实验一、成绩管理系统
实验二、 MyString类定义和应用
学生姓名:靳庆琛
学 号:20111001524
指导老师:马丽
中国地质大学(武汉)机械与电子信息学院
2013 年 6月
实验一、成绩管理系统
一、 设计任务与要求:
1、 设计三个结构体:学生类(存储学生的基本信息,如学生姓名Stu_Name、学生学号
Stu_ID、学生性别Stu_Sex等,采用结构体);课程科目Course(存储课程名称
Cou_Name,课程编号Cou_ID,开课学期Cou_Term,授课老师Cou_Teacher等,采用
结构体);选课情况Sel_Course(课程编号Cou_ID, 学生学号Stu_ID,成绩Score
等,采用结构体)。
2、 实现功能:
a、计算平均值Avg:包括每门课程的平均值,和每个学生所有课程的平均值。
b、计算最高分Max:包括每门课程的最高分,和学生平均分的最高分,并给出最高
分对应的学生姓名和学号。
c、计算最低分Min:包括每门课程的最低分,和学生平均分的最低分,并给出最低
分对应的学生姓名和学号。
d、计算每门课程成绩不及格(<60分)以及优秀(大于90分)的学生个数Count。
e、计算每门课程的
方差Variance。
f、查询功能Query:可以根据输入的学生姓名或者学号,查询该学生的所有课程的
成绩。
g、排序功能Sort:按照从高到低的顺序,对每门课程的成绩进行排序,对学生平均
分进行排序,并给出排序后成绩所对应的学生姓名和学号。
提示:
把初始化部分和7个功能设置为可以选择的菜单方式,也就是每次运行程序,可以让用户选择实现某个功能,各个功能用函数来实现,有些函数需要重载。
每个功能的输出可以输出到屏幕,也可以输出到文件。
二、课程设计的要求:
根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序来实现设计课程内容中的全部功能;设计主控模块程序(对给出的程序源代码要给出各部分的详细注释(自己根据能力及需要添加相应功能模块,增强模拟系统功能。包括系统的功能分析、系统的功能模块设计、程序流程图或结构框图、逻辑结构设计,数据库中的
、视图(如果使用)、索引的结构和定义、触发器、存储过程、课程设计体会。 三、系统分析(需求分析):
1、需求分析:
a、能对学生按学生姓名,学号和各科成绩进行录入:。
b、能按学号和姓名查询学生信息。
c、能统计学生所有课程的平均分并排序,统计各科成绩的最高分和最低分,优秀和不及格人数,各科成绩的平均分和方差。
2、系统性能要求:
a、系统安全、可靠;
b、功能齐全;
c、操作方便、界面友好;
d、易于维护和扩充。
3、系统的功能分析:
资料维护:系统维护包括对学生信息的录入操作及数据表中的信息进行浏览。
系统功能:可以对数据表中的信息进行浏览。
系统查询:可以对学生的信息进行查询。
4、系统功能模块
学生成绩查询系统有:学生成绩信息输入模块,数据统计模块,查询模块,排序显示构成。 四、系统设计与实现
1、界面设计
程序运行后会出现一个简捷的窗口,便于用户查询数据。
2、功能设计与实现
通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。应用系统主控界面包括记录编辑和记录查询等功能模块。记录编辑功能完成学生成绩记录编辑和记录查询功能。记录查询功能可以对数据各分类的记录进行查询。
五、系统运行截图:
六、
:
此次c++课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。
根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。 附源程序:
#include
#include
#include
#include
#include
#include
using namespace std;
ifstream fin;
ofstream fout;
struct student
{
char stu_name[10];
char studynumber[12];
int score[5];
};
student stu[10];
void new_line( );
void putin ( student a[],int size); void average( student a[],int size); void max(student a[],int size); void min( student a[],int size); void bujige( student a[],int size); void variance( student a[],int size); void query( student a[],int size); void sort();
void main()
{
using namespace std;
ifstream fin1,fin2;
using namespace std;
fin1.open("score1.txt");
//fin2.open("score2.txt");
if(fin1.fail())
{
cout<<"open score1.txt \n";
exit(1);
}
for(int i=0;i<10;i++)
{
fin1>>stu[i].stu_name>>stu[i].studynumber>>stu[i].score[0]>>stu[i].score[1]>>stu[i].score[2
]>>stu[i].score[3]>>stu[i].score[4];
}
char choise;
Menu:
cout << endl;
cout << "~~~~~~~~~~~~~~成绩管理系统~~~~~~~~~~~~~" << endl;
cout << "0.退出系统Exit System"<<" " ;
cout << "1.求平均值 " << endl;
cout << "2.计算最高分Max" <<" ";
cout << "3.计算最低分Min " << endl;
cout << "4.计算每门课程成绩不及格及优秀的人数" <<" ";
cout << "5.计算每门课程的标准方差 " << endl;
cout << "6.查询功能Query " <<" ";
cout << "7.排序功能Sortt " << endl;
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<max_stu)
{ max_stu=c[i];
q=i;
}
cout<<"************************************最高分
************************************\n";
cout<<"-------------------------------------------------------------------------------\n";
cout<<" | 学号 | 名字 | 平均分 |\n";
cout<<"-------------------------------------------------------------------------------\n";
cout<<" "<max_crouse[k])
max_crouse[k]=a[i].score[k];
cout<<"-------------------------------------------------------------------------------\n";
cout<<" | 数学 | 语文 | 英语 | 物理 | 化学 |\n";
cout<<"-------------------------------------------------------------------------------\n";
cout<<" "<90)
youxiu[k]++;
}
cout<<"****************************统计不及格和优秀人数
*******************************\n";
cout<<"-------------------------------------------------------------------------------\n";
cout<<" | 数学 | 语文 | 英语 | 物理 | 化学 |\n";
cout<<"-------------------------------------------------------------------------------\n";
cout<<" 不及格 "<>d;
switch( d )
{
case '1':
cout << "请输入所查询的姓名" << endl;
cin >>name;
for ( i=0;i<10;i++)
if(strcmp(name,a[i].stu_name)==0) //找到要查询学生的信息,将其输出
{
q=i;
cout<<"************************************查询结果
************************************\n";
cout<<"-------------------------------------------------------------------------------\n";
cout<<" | 学号 | 名字 | 数学 | 语文 | 英语 |
物理 | 化学 | \n";
cout<<"-------------------------------------------------------------------------------\n";
cout<<" "<>number;
for ( i=0;i<10;i++)
if(strcmp(number,a[i].studynumber)==0)
{
q=i;
cout<<"************************************查询结果
************************************\n";
cout<<"-------------------------------------------------------------------------------\n";
cout<<" | 学号 | 名字 | 数学 | 语文 | 英语 | 物
理 | 化学 | \n";
cout<<"-------------------------------------------------------------------------------\n";
cout<<" "<)和小于(<)操作符,用来比较两个MyString类型的字符串(可
以用友元函数实现,也可以用成员函数)。
(7)定义输入操作符(>>)和输出操作符(<<),用来将MyString类型的字符串输入
和输出(只能用友元函数实现)。并且,选择合适的流参数,使得既可以从键盘输入,也可
以从文件输入,既可以输出到屏幕,也可以输出到文件。
(8)定义成员函数length,用来得到MyString类型字符串的长度。
(9)定义成员函数c_str(),用来将MyString类型的字符串转变为C字符串。
(10)定义成员函数input_line,用来输入一行MyString类型的字符串。既可以从键
盘输入,也可以从文件输入。
(11)定义成员函数substr,用来得到并返回MyString类型调用对象的一个子字符串,
该子字符串开始于调用对象的某位置position,长度是length(包含length个字符)。
(12)定义成员函数find,返回某一个字符串在调用对象中首次出现的位置。
要求:
(1)使用三个文件:类的接口文件;类的实现文件;应用程序文件。
(2)给自己定义的类创建一个命名空间。
(3) main部分中,要对类中的成员函数和友元函数进行使用和测试。
二、接口文件:
#include
using namespace std;
namespace myname
{
class MyString
{
public:
MyString( );
MyString(char par[]) ;
MyString(const MyString& mystring_object); //复制构造函数
~MyString( ); //析构函数
void operator = (const MyString& right_side);
void operator = (const char right_side[ ]);
friend bool operator ==(const MyString& left_side, const char right_side[ ]);
friend bool operator ==(const MyString& left_side, const MyString& right_side);
friend MyString operator +( MyString& string1, MyString& string2);
friend MyString operator +( MyString& string1, char string2[ ]);
friend bool operator >( MyString& string1, MyString& string2);
friend bool operator <( MyString& string1, MyString& string2);
friend istream& operator >>(istream& ins, MyString& the_object);
friend ostream& operator <<(ostream& outs, const MyString& the_object); int length( ) const;
const char* c_str( ) const;
istream& input_line(istream& ins);
MyString substr(const int& position,const int& length); int find(MyString& string);
private:
char *p;
int str_length;
};
}
三、实现文件:
#include
#include
#include "mystring.h"
using namespace std;
using namespace myname;
namespace myname
{
/*--默认构造函数,使得对象为空字符串,字符串长度为0--*/
MyString::MyString( ) : str_length(0)
{
p = new char[1];
p[0]='\0';
}
/*--参数化构造函数,接收一个C字符串作为参数,使得对象初始化为该参数的值--*/
MyString::MyString(char par[])
{
int k=0;
while(par[k]!='\0')
{
k++;
}
str_length=k;
p= new char[str_length+1];
for(int j=0;j( MyString& string1, MyString& string2) //重载>操作符 {
int n;
if(string1.str_length>string2.str_length)
n=string2.str_length;
else
n=string1.str_length;
for(int i=0;istring2.p[i])
return 0;
}
return 0;
}
bool operator <( MyString& string1, MyString& string2) //重载<操作符 {
int n;
if(string1.str_length>string2.str_length)
n=string2.str_length;
else
n=string1.str_length;
for(int i=0;istring2.p[i]) //阿斯克码与字母顺序相反
return 1;
else if(string1.p[i]>(istream& ins, MyString& the_object)//重载输入函数 {
char next;
char a[100];
int i=0;
ins.get(next);
while(next!='\n')
{
a[i]=next;
i++;
ins.get(next);
}
the_object.str_length=i;
delete [] the_object.p;
the_object.p= new char[i+1];
for(int j=0;j
#include
#include "mystring.h"
using namespace std;
using namespace myname;
int main( )
{
char ch[20]="marry new year!";
MyString mystring1,mystring2(ch),mystring3(mystring2);
cout<操作符
if(mystring8>mystring2)
cout<<"Yes"<>操作符
cin>>mystring9;
cout<>的重载问题。
本文档为【计算机高级语言】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。