C++课程大作业参考报告
C++大作业报告

C%2B%2B大作业报告一.问题描述1.1个人通信录管理系统内容描述:个人通信录记录了同学(包含一起上学的学校名称)、同事(包含共事的单位名称)、朋友(包含认识的地点)、亲戚(包含称呼)等与本人有关人员的数据集。
要求:(1)提供录入个人信息、修改个人信息(姓名和出生日期除外)、删除个人信息等编辑功能(2)提供按姓名查询个人信息的功能(3)提供查找在5天之内过生日的人员的信息,以便发出祝贺电话或E_mail(4)按照姓名或出生日期排序,显示输出(5)统计在给定月份出生的人数,并显示输出(6)能列出全体人员的姓名、出生日期、电话和email地址(7)能分别列出同学、同事、朋友、亲戚的所有信息(8)用菜单形式提供程序的各种功能的选择提示:(1)将同学、同事、朋友和亲戚的信息分别存入通信录文件AddressBook1.txt ,Addre ssBook2.txt,AddressBook3.txt和AddressBook4.txt中。
文件中除了包含每人的姓名、出生日期、电话和Email地址等信息外,对同学还要包含一起上学的学校名称,对同事还要包含共事的单位名称,对朋友还要包含认识的地点,对亲戚包含称呼。
其中姓名用汉语拼音或英文表示。
(2)在查出的5天内过生日的人员信息中,要包括该日期是星期几的信息。
例如:3月21日(星期四)哥哥:张晓阳Tel: 39380285, Email:zxy@(3)能够自动生成祝贺生日的电子邮件的文本文件,文件由被祝贺人姓名和祝贺词等组成。
其内容为:被祝贺人姓名:祝生日快乐,健康幸福。
祝贺人姓名二、系统设计2.1类体系设计类体系为一个基类和由它派生的四个派生类。
2.2类定义,函数描述基类:person,以下是主类代码class person{protected:person*head;person*next;PersonInfo Individual;char info[60];void show(PersonInfo,char*);void putin(PersonInfo&,int,char*,char*,char*,int,int,int);public:person(person*,person*,PersonInfo,char*);person(PersonInfo,char*);person(){}void ini(); //初始化void append(); //添加void alter(); //更改void deleteinfo(); //删除void CheckBirthWithinFD(); //5天内生日和显示void outblessingletter(char*);//输出信件virtual void SortByType(); //void menudisplay();virtual void showallBySort();void showall();void countthebirthdayinmonth ();friend void sortByname();friend void sortBybirth();bool isend(PersonInfo);void checkname();};其中数据成员有类指针head和next,还有结构Individual和info字符数组,head和next 是在排序的时候用到的,用来构建简单的单链表,Individual和info存储从二进制文件中得到的信息,成员函数里putin用来将数据放进结构里。
C语言程序设计大作业报告模板样本

《C语言程序设计》大作业报告1.目掌握所学C语言程序设计办法,熟悉所学语言开发环境及调试过程,熟悉所学C语言中数据类型,数据构造、语句构造、运算办法,巩固和加深对理论课中知识理解,提高学生对所学知识综合运用能力。
通过综合设计规定达到下列基本技能:1.培养查阅参照资料、手册自学能力,通过独立思考进一步钻研问题,学会自己分析、解决问题。
2.通过对所选题目方案分析比较,确立方案,编制与调试程序,初步掌握程序设计办法,能纯熟调试程序。
2.作业内容纯熟掌握所学语言基本知识:数据类型(整形、实型、字符型、指针、数组、构造等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序构造(顺序构造、判断选取构造、循环构造);大程序功能分解办法(即函数使用)等。
进一步掌握各种函数应用等。
3.规定:1.规定每个同窗都要认真对待,积极参加。
2.独立完毕,不能抄袭。
3.课程设计结束时每位同窗必要完毕《大作业报告册》,其中包括设计源代码和设计思路。
4.不符合规定程序、设计报告、抄袭设计报告或源程序代码、在设计中完全未参加将作不及格解决。
5.统一格式,A4打印,准时提交。
4.题目:设计规定:编写一种程序,求3x4数组转置矩阵。
规定在main函数里面读数,在change函数里面把矩阵转置。
5.程序设计5.1 设计思路:1是先定义两个数组,一种是a[3][4],另一种是b[4][3]。
2是将随便输入12个数输入到a[3][4]。
3是在change函数中将a[3][4]中值通过for循环镶嵌将数组a[3][4]值赋值给数组b[4][3]。
4在主函数中将数组b[4][3]通过for循环嵌套输出。
5.2 代码# include <stdio.h>int change (int a[3][4],int b[4][3]);main(){ int a[3][4],b[4][3],i,j;printf("please input some 12 numbers:"); for(i=0;i<3;i++){printf("\n");for(j=0;j<=3;j++)scanf ("%d",&a[i][j]);}change (a,b);for(i=0;i<4;i++){for(j=0;j<3;j++)printf("%5d",b[i][j]);printf("\n");}}int change (int a[3][4],int b[4][3]){int m,n;for(m=0;m<3;m++)for(n=0;n<4;n++)b[n][m]=a[m][n]; retrun 0;}5.3 成果6.心得体会编写时注意for循环嵌套,先理清逻辑关系在编写,在看例题后,需要多敲代码,才干越来越纯熟。
c语言实验报告5篇

c语言实验报告c语言实验报告5篇随着社会一步步向前发展,我们使用报告的情况越来越多,我们在写报告的时候要注意涵盖报告的基本要素。
其实写报告并没有想象中那么难,以下是小编收集整理的c语言实验报告,欢迎阅读与收藏。
c语言实验报告1学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验六综合实验一、实验目的1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。
2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。
3、掌握C程序的运行、调试方法等。
二、实验内容编写一个学生信息排序程序。
要求:1、程序运行时可输入n个学生的信息和成绩(n预先定义)。
2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。
3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。
1、使用函数方法定义各个模块。
三、实验步骤与过程物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板四、程序调试记录c语言实验报告2第一章基础掌握1.1 实验目的掌握C程序设计编程环境Visual C++,掌握运行一个C程序的基本步骤,包括编辑、编译、链接和运行。
(]1.2 实验要求在报告中记录建立、保存C程序实习过程。
1.3 实验基本内容编写程序,在屏幕上显示一个短句“Hello World”(1)程序:1)编译如下程序:#includeVoid main(){printf (“Hello World! ”);}2)链接。
执行Build-命令。
3)运行。
执行Build Execute 命令。
显示结果。
4)关闭程序工作区。
(2)运行结果:输出结果:Hello World!总结:掌握C语言程序设计的基本框架,能够编写简单的程序。
程序设计实验报告(C语言初学者大一大作业)

程序设计实验报告课程程序设计基础共9页系别实验日期 2020 年专业班级____ __实验报告日期 2020 年 5月 31日姓名学号_ 报告退发 ( 订正、重做 )同组人无教师审批签字一.实验目的(1)掌握算法与数据结构;(2)掌握各种运算符及其表达式的使用;(3)掌握常数和变量的使用方法;(4)掌握各种数据类型的基本概念及使用方法;(5)掌握指针的用法;(6)了解文件,结构体,链表的定义。
二.实验内容(-)实验题目一:有1000元,存5年,请计算一下5种存款方法的存款利息:(p1)一次存5年;(p2)先存2年,到期后将本息再存3年期;(p3)先存3年期,到期后将本息再存2年期;(p4)存1年期,到期后将本息再存1年期,连续存5次;(p5)存活期存款。
活期利息每一季度结算一次。
2017年的银行存款利息如下:1年期定期存款利息为1.5%;2年期定期存款利息为2.1%;3年期定期存款利息为3%;5年期定期存款利息为5.85%;活期存款利息为0.35%(活期存款每一季度结算一次利息)。
输出格式如下:p1=1234.56p2=1234.56p3=1234.56p4=1234.56p5=1234.561.程序源代码#include<stdio.h>#include<math.h>int main(){double a0,a1,a2,a3,a5,p1,p2,p3,p4,p5,p;a0=0.0035;a1=0.015;a2=0.021;a3=0.03;a5=0.0585;p=1000;p1=p*(1+5*a5);p2=p*(1+a2*2)*(1+3*a3);p3=p*(1+3*a3)*(1+2*a2);p4=p*pow(1+a1,5);p5=p*pow(1+a0,20);printf("p1=%.2f\np2=%.2f\np3=%.2f\np4=%.2f\np5=%.2f\n",p1,p2, p3,p4,p5);return0;}2.实验结果(二)实验题目二:猴子吃桃问题。
C语言大作业报告

C语言大作业
猜数字游戏
信安三班
孙麒88
戈丽萍66
分工
戈丽萍:A、B、Win函数,流程图孙麒:main、Guess函数、程序调试
一、游戏说明
1、系统随机产生一组不重复的4位数字
2、游戏者输入所猜的不重复数字,并按回车提交。
3、系统将提交的数与它自动产生的数进行比较,输出结果“*A*B”形式。
其
中A代表数字正确相应位置也正确,B代表数字正确但位置不正确。
如:1A3B 表示游戏者有1个数字的位置正确且数值也正确,除此以外,游戏者还猜对了3个数字,但位置不对,即游戏者已经猜出4位数据,但有3个数据位置不对!
4、游戏者有限定的8次的猜测机会,在规定次数内完成,则游戏成功,否则,
游戏失败。
5、游戏成功后,将根据游戏者猜测所需要的次数对其进行评价:第一次猜出为perfect,第二——第四次猜出为great
二、详细流程
1、main函数
、
2、win函数(判断输赢)
3、A函数(判断数字且位置正确的个数)
A (char m[4],char n[4])
B(char m[4],char n[4],in a)
4、B函数(判断数字对但是位置不对的个数)
5、主函数Guess(char right[4])
三、总结经验
在确定了设计的内容之后,经历了很长时间的思考想出了算法。
但是在设计中反复出现错误,特别是B函数,检查很多遍之后觉得算法并无问题。
就分块进行调试。
后来偶然发现原来是整个过程中的“==”都写成了赋值“=”,导致错误,今后一定要细心才可以。
《C大作业报告》word版

如有异议或侵权请及时联系,客服将立即删除!C++大作业报告姓名:常皓学号:03101261班级:031013销售公司员工管理设计一个虚基类Staff(员工),包含编号、姓名和年龄保护数据成员以及相关的成员函数;由Staff派生出销售员类Salesman,包含销售额保护数据成员以及相关的成员函数;再由Staff派生出经理类Manager;然后由Salesman和Manager类派生出销售经理类SalesManager。
设计一个利用文件处理方式实现对公司人员(包括销售员、经理和销售经理)进行管理,具有增加数据、更新数据、查询数据、删除数据以及重组文件的功能。
(删除数据在记录中做删除标志,重组文件指在物理上删除有删除标志的记录。
)另外要求分别统计这三类员工的人数以及所有员工的总数。
编程思想:首先定义一个虚基类Staff类,然后通过虚拟继承生成Salesman类和Manager类,最后由Salesman和Manager派生出主任销售员类SalesManager。
这四个类中定义InputFromFile(istream &in)这一输入函数,另外每个类还定义输入信息和输出信息的成员函数,之后定义StaffChart、SalesmanChart、ManagerChart和SalesManagerChart四个类来,为实现增加、更新、查询、删除以及全部显示人员的功能定义addItem、modifyItem、find、removeItem 以及display函数。
最后在主函数定义Staff_Chart、Salesman_Chart、Manager_Chart和Salesmanager_Chart四个对象,通过循环执行并用switch函数选择功能,然后调用相关的函数来实现各种功能。
实验代码:#include"iostream"#include"fstream"using namespace std;class Staff{char num[10];char name[10];int age;public:Staff * Next;void set_staff(){cout<<"请输入编号:";cin>>num;cout<<"请输入姓名:";cin>>name;cout<<"请输入年龄:";cin>>age;}void InputFromFile(istream &in){in>>num>>name>>age;}void show(){cout<<"编号:"<<num<<endl;cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;}char *get_num(){return num;}char *get_name(){return name;}int get_age(){return age;}};class Salesman:virtual public Staff{protected:char major[10];char t_title[10];public:Salesman * Next;void set_salesman()cout<<"请输入编号:";cin>>num;cout<<"请输入姓名:";cin>>name;cout<<"请输入年龄:";cin>>age;cout<<"请输入专业:";cin>>major;cout<<"请输入职称:";cin>>t_title;}void InputFromFile(istream &in){in>>num>>name>>age>>major>>t_title;}void show_salesman(){cout<<"编号:"<<num<<endl;cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;cout<<"专业:"<<major<<endl;cout<<"职称:"<<t_title<<endl;}char *get_major(){return major;}char *get_t_title(){return t_title;}};class Manager:virtual public Staff{protected:char job[10];char dept[10];public:Manager * Next;void set_manager(){cout<<"请输入编号:";cin>>num;cout<<"请输入姓名:";cin>>name;cout<<"请输入年龄:";cin>>age;cout<<"请输入职务:";cin>>job;cout<<"请输入部门:";cin>>dept;}如有异议或侵权请及时联系,客服将立即删除!void InputFromFile(istream &in){in>>num>>name>>age>>job>>dept;}void show_manager(){cout<<"编号:"<<num<<endl;cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;cout<<"职务:"<<job<<endl;cout<<"部门:"<<dept<<endl;}char *get_job(){return job;}char *get_dept(){return dept;}};class SalesManager:public Salesman,public Manager{public:SalesManager * Next;void set_salesmanager(){cout<<"请输入编号:";cin>>num;cout<<"请输入姓名:";cin>>name;cout<<"请输入年龄:";cin>>age;cout<<"请输入专业:";cin>>major;cout<<"请输入职称:";cin>>t_title;cout<<"请输入职务:";cin>>job;cout<<"请输入部门:";cin>>dept;}void InputFromFile(istream &in){in>>num>>name>>age>>major>>t_title>>job>>dept;}void show_salesmanager(){cout<<"编号:"<<num<<endl;cout<<"姓名:"<<name<<endl;如有异议或侵权请及时联系,客服将立即删除!cout<<"年龄:"<<age<<endl;cout<<"专业:"<<major<<endl;cout<<"职称:"<<t_title<<endl;cout<<"职务:"<<job<<endl;cout<<"部门:"<<dept<<endl;}};class StaffChart{public:StaffChart();~StaffChart();void find(); //输出单个条目void save(); //将信息输出到文件void modifyItem(); //修改Staff条目void removeItem(); //删除Staff条目void display() //输出全部条目{Staff *p=Head->Next;for(p;p!=End;p=p->Next){p->show();cout<<endl;}}void addItem() //添加条目{End->set_staff();End->Next=new Staff;End=End->Next;save();}private:Staff * Head,* End;ifstream in; //文件输入ofstream out; //文件输出Staff * findItem(char * num){for(Staff * p=Head;p->Next!=End;p=p->Next)if(!strcmp(p->Next->get_num() ,num))return p;return NULL;}StaffChart::StaffChart() //构造函数{Head=new Staff;Head->Next=new Staff;End=Head->Next;in.open("StaffChart.txt");while(!in.eof()){End->InputFromFile(in);if(End->get_num()[0]=='\0')break;End->Next=new Staff;End=End->Next;}in.close();}StaffChart::~StaffChart() //析构函数{for(Staff * temp;Head->Next!=End;){temp=Head->Next;Head->Next=Head->Next->Next;delete temp;}delete Head,End;}void StaffChart::find() //查找条目{char num[10];Staff * p=NULL;cout<<"请输入要查找员工的工号:";cin>>num;if(p=findItem(num))p->Next->show();else{cout<<"没有找到!!"<<endl<<endl;}}void StaffChart::modifyItem() //修改条目char num[10];Staff * p=NULL;cout<<"请输入要修改员工的工号:";cin>>num;if(p=findItem(num)){p->Next->show();cout<<"请输入新的内容:"<<endl;p->Next->set_staff();}elsecout<<"没有找到!!"<<endl<<endl;save();}void StaffChart::removeItem() //删除条目{char num[10];Staff *p=NULL,*temp=NULL;cout<<"请输入要删除员工的工号:";cin>>num;if(p=findItem(num)){temp=p->Next;p->Next=p->Next->Next;delete temp;cout<<"删除成功!!"<<endl<<endl;}elsecout<<"没有找到!!"<<endl<<endl;save();}void StaffChart::save() //保存{out.open("StaffChart.txt");for(Staff * p=Head->Next;p!=End;p=p->Next)out<<p->get_num()<<" "<<p->get_name()<<" "<<p->get_age()<<endl;out.close();}class SalesmanChart{public:SalesmanChart();~SalesmanChart();void find(); //输出单个条目void save(); //将信息输出到文件void modifyItem(); //修改Salesman条目void removeItem(); //删除Salesman条目void display() //输出全部条目{for(Salesman *p=Head->Next;p!=End;p=p->Next)p->show_salesman();}void addItem() //添加条目{End->set_salesman();End->Next=new Salesman;End=End->Next;save();}private:Salesman * Head,* End;ifstream in; //文件输入ofstream out; //文件输出Salesman * findItem(char * num){for(Salesman * p=Head;p->Next!=End;p=p->Next)if(!strcmp(p->Next->get_num() ,num))return p;return NULL;}};SalesmanChart::SalesmanChart() //构造函数{Head=new Salesman;Head->Next=new Salesman;End=Head->Next;in.open("SalesmanChaart.txt");while(!in.eof()){End->InputFromFile(in);if(End->get_num()[0]=='\0')break;End->Next=new Salesman;End=End->Next;}in.close();}SalesmanChart::~SalesmanChart() //析构函数{for(Salesman * temp;Head->Next!=End;){temp=Head->Next;Head->Next=Head->Next->Next;delete temp;}delete Head,End;}void SalesmanChart::find() //查找条目{char num[10];Salesman * p=NULL;cout<<"请输入要查找销售员的工号:";cin>>num;if(p=findItem(num))p->Next->show_salesman();elsecout<<"没有找到!!"<<endl<<endl;}void SalesmanChart::modifyItem() //修改条目{char num[10];Salesman * p=NULL;cout<<"请输入要修改销售员的工号:";cin>>num;if(p=findItem(num)){p->Next->show_salesman();cout<<"请输入新的内容:"<<endl;p->Next->set_salesman();}elsecout<<"没有找到!!"<<endl<<endl;save();}void SalesmanChart::removeItem() //删除条目{char num[10];Salesman *p=NULL,*temp=NULL;cout<<"请输入要删除销售员的工号:";cin>>num;if(p=findItem(num)){temp=p->Next;p->Next=p->Next->Next;delete temp;cout<<"删除成功!!"<<endl<<endl;}elsecout<<"没有找到!!"<<endl<<endl;save();}void SalesmanChart::save() //保存{out.open("SalesmanChart.txt");for(Salesman * p=Head->Next;p!=End;p=p->Next)out<<p->get_num()<<p->get_name()<<p->get_age()<<p->get_major()<<p->get_t_title()<<endl;out.close();}class ManagerChart{public:ManagerChart();~ManagerChart();void find(); //输出单个条目void save(); //将信息输出到文件void modifyItem(); //修改Manager条目void removeItem(); //删除Manager条目void display() //输出全部条目{Manager *p=Head->Next;for(p;p!=End;p=p->Next)p->show_manager();}void addItem() //添加条目{End->set_manager();End->Next=new Manager;End=End->Next;save();如有异议或侵权请及时联系,客服将立即删除!}private:Manager * Head,* End;ifstream in; //文件输入ofstream out; //文件输出Manager * findItem(char * num){for(Manager * p=Head;p->Next!=End;p=p->Next)if(!strcmp(p->Next->get_num() ,num))return p;return NULL;}};ManagerChart::ManagerChart() //构造函数{Head=new Manager;Head->Next=new Manager;End=Head->Next;in.open("ManagerChaart.txt");while(!in.eof()){End->InputFromFile(in);if(End->get_num()[0]=='\0')break;End->Next=new Manager;End=End->Next;}in.close();}ManagerChart::~ManagerChart() //析构函数{for(Manager * temp;Head->Next!=End;){temp=Head->Next;Head->Next=Head->Next->Next;delete temp;}delete Head,End;}void ManagerChart::find() //查找条目{如有异议或侵权请及时联系,客服将立即删除!char num[10];Manager * p=NULL;cout<<"请输入要查找经理的工号:";cin>>num;if(p=findItem(num))p->Next->show_manager();elsecout<<"没有找到!!"<<endl<<endl;}void ManagerChart::modifyItem() //修改条目{char num[10];Manager * p=NULL;cout<<"请输入要修改经理的工号:";cin>>num;if(p=findItem(num)){p->Next->show_manager();cout<<"请输入新的内容:"<<endl;p->Next->set_manager();}elsecout<<"没有找到!!"<<endl<<endl;save();}void ManagerChart::removeItem() //删除条目{char num[10];Manager *p=NULL,*temp=NULL;cout<<"请输入要删除经理的工号:";cin>>num;if(p=findItem(num)){temp=p->Next;p->Next=p->Next->Next;delete temp;cout<<"删除成功!!"<<endl<<endl;}elsecout<<"没有找到!!"<<endl<<endl;save();}void ManagerChart::save() //保存{out.open("ManagerChart.txt");for(Manager * p=Head->Next;p!=End;p=p->Next)out<<p->get_num()<<p->get_name()<<p->get_age()<<p->get_job()<<p->get_dept()<<endl;out.close();}class SalesManagerChart{public:SalesManagerChart();~SalesManagerChart();void find(); //输出单个条目void save(); //将信息输出到文件void modifyItem(); //修改Manager条目void removeItem(); //删除Manager条目void display() //输出全部条目{SalesManager *p=Head->Next;for(;p!=End;p=p->Next)p->show_salesmanager();}void addItem() //添加条目{End->set_salesmanager();End->Next=new SalesManager;End=End->Next;save();}private:SalesManager * Head,* End;ifstream in; //文件输入ofstream out; //文件输出SalesManager * findItem(char * num){for(SalesManager * p=Head;p->Next!=End;p=p->Next)if(!strcmp(p->Next->get_num() ,num))return p;return NULL;}};SalesManagerChart::SalesManagerChart() //构造函数{Head=new SalesManager;Head->Next=new SalesManager;End=Head->Next;in.open("SalesManagerChaart.txt");while(!in.eof()){End->InputFromFile(in);if(End->get_num()[0]=='\0')break;End->Next=new SalesManager;End=End->Next;}in.close();}SalesManagerChart::~SalesManagerChart() //析构函数{for(SalesManager * temp;Head->Next!=End;){temp=Head->Next;Head->Next=Head->Next->Next;delete temp;}delete Head,End;}void SalesManagerChart::find() //查找条目{char num[10];SalesManager * p=NULL;cout<<"请输入要查找经理的工号:";cin>>num;if(p=findItem(num))p->Next->show_salesmanager();elsecout<<"没有找到!!"<<endl<<endl;}void SalesManagerChart::modifyItem() //修改条目{char num[10];SalesManager * p=NULL;cout<<"请输入要修改经理的工号:";cin>>num;if(p=findItem(num)){p->Next->show_salesmanager();cout<<"请输入新的内容:"<<endl;p->Next->set_salesmanager();}elsecout<<"没有找到!!"<<endl<<endl;save();}void SalesManagerChart::removeItem() //删除条目{char num[10];SalesManager *p=NULL,*temp=NULL;cout<<"请输入要删除经理的工号:";cin>>num;if(p=findItem(num)){temp=p->Next;p->Next=p->Next->Next;delete temp;cout<<"删除成功!!"<<endl<<endl;}elsecout<<"没有找到!!"<<endl<<endl;save();}void SalesManagerChart::save() //保存{out.open("SalesManagerChart.txt");for(Manager * p=Head->Next;p!=End;p=p->Next)out<<p->get_num()<<p->get_name()<<p->get_age()<<p->get_job()<<p->get_dept()<<endl;out.close();}int main(){int x,y;StaffChart Staff_Chart;SalesmanChart Salesman_Chart;ManagerChart Manager_Chart;SalesManagerChart SalesManager_Chart;bool quit=false;while(!quit){cout<<"选择功能:\n1.增加数据\t2.更新数据\t3.查询数据\t4.删除数据\t5.列出全部人员\t6.退出"<<endl;cin>>x;switch(x){case 1:cout<<"选择增加的类型:\n1.员工\t2.销售员\t3.经理\t4.销售经理"<<endl;cin>>y;switch(y){case 1:Staff_Chart.addItem();break;case 2:Salesman_Chart.addItem();break;case 3:Manager_Chart.addItem();break;case 4:SalesManager_Chart.addItem();break;default :cout<<"输入错误,程序终止!!"<<endl;exit(-1);}break;case 2:cout<<"选择更新的类型:\n1.员工\t2.销售员\t3.经理\t4.销售经理"<<endl;cin>>y;switch(y){case 1:Staff_Chart.modifyItem();break;case 2:Salesman_Chart.modifyItem();break;case 3:Manager_Chart.modifyItem();break;case 4:SalesManager_Chart.modifyItem();break;default :cout<<"输入错误,程序终止!!"<<endl;exit(-1);}break;case 3:cout<<"选择查询的类型:\n1.员工\t2.销售员\t3.经理\t4.销售经理"<<endl;cin>>y;switch(y){case 1:Staff_Chart.find();break;case 2:Salesman_Chart.find();break;case 3:Manager_Chart.find();break;case 4:SalesManager_Chart.find();break;default :cout<<"输入错误,程序终止!!"<<endl;exit(-1);;}break;case 4:cout<<"选择删除的类型:\n1.员工\t2.销售员\t3.经理\t4.销售经理"<<endl;cin>>y;switch(y){case 1:Staff_Chart.removeItem();break;case 2:Salesman_Chart.removeItem();break;case 3:Manager_Chart.removeItem();break;case 4:SalesManager_Chart.removeItem();break;default :cout<<"输入错误,程序终止!!"<<endl;exit(-1);}break;case 5:cout<<"选择列出人员的类型:\n1.员工\t2.销售员\t3.经理\t4.销售经理"<<endl;cin>>y;switch(y){case 1:Staff_Chart.display();break;case 2:Salesman_Chart.display();break;case 3:Manager_Chart.display();break;case 4:SalesManager_Chart.display();break;default :cout<<"输入错误,程序终止!!"<<endl;exit(-1);}break;case 6:quit=true;break;default :cout<<"输入错误,程序终止!!"<<endl;exit(-1);}}return 0;}运行结果:运行空间有四个文件:增加两个员工:修改一个销售员信息:查询一个销售员信息:列出全部员工:删除一个员工:再次列出员工:个人总结:经过多天努力终于完成了老师布置的大作业,但是效果上自己还是不太满意,有很多地方都想让它更佳完整,更符合自己心目中的那种管理系统,课后依然会继续修改,让它达到自己心中理想的完善的程序。
C大作业项目报告

C大作业项目报告集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)C++大作业项目报告——AGV 路径规划与运行仿真软件设计小组成员:日期:2015年6月16日指导老师:目录一、课题背景1.1案例背景AGV(自动导引车)由于运动灵活,被广泛用于生产车间物料的搬运。
由于单机搬运能力有限,实践中经常需要由多台AGV 同时进行搬运。
由于AGV 一般无法感知全局信息,为避免多AGV 发生碰撞并提高AGV 搬运效率,多台AGV 需要与上位机调度系统进行通信并依据调度指令运行。
1.2问题描述在已知AGV运行的地图以及AGV运行速度前提下,采用C++编写单台AGV路径规划的最短路径算法,并动态显示AGV 的运行。
1.3任务目标针对AGV 搬运调度需求开发一套AGV 路径规划与运行监控仿真软件,合理规划单台AGV 运行路径并动态显示运行轨迹。
1.4具体分析由以上介绍可知,AGV在工业生产中有着很广泛的应用,对AGV导引程序的研究是有着很强实际意义的。
要完成一个完整的AGV路径规划程序,就要考虑地图,AGV,和路径三个方面的问题。
而其中,路径又是最为重要的。
本程序要求仿真显示,所以显示部分也是重点。
若制作多台AGV的路径规划程序,还应当考虑到路径的重叠,以避免碰撞产生。
二、系统设计2.1类体系设计包含了两个基类CFixedMap和CAGV,一个单一继承的派生类CPathPlan和一个多重派生类CAGVShow。
2.2类定义及函数描述各个类的成员以及成员函数的作用如注解所示。
(1).基类:CFixedMapclass CFixedMap{struct Coordinate{int x;int y;int num;};//记录点的结构体struct combp{int x1,y1;int x2,y2;};//连通点坐标struct Combname{int num1;int num2;};//连通点名public:int mVexNum; // 顶点数int mEdgNum; // 边数double mMatrix[MAX][MAX]; // 邻接矩阵Combname comb[MAX]; //连通点名combp cp[MAX]; //连通点坐标Coordinate mVexs[MAX]; // 顶点集合int getx(int n1);int gety(int n2);void Input();//以文件方式输入地图信息void ShowMap();//easyx显示地图};(2).基类CAGVclass CAGV{int speed; //AGV速度int width; //AGV宽度int length; //AGV长度public:CAGV();int getl(); //返回AGV长度int getw(); //返回AGV宽度int gets(); //返回AGV速度};(3).单一继承类CPathPlanclass CPathPlan:public CFixedMap{public:int path[MAX]; //存放最后一个点double dist[MAX]; //存放路径距离int v0; //起始点int route[40]; //路径int rnum; //路径顶点数Coordinate rpoints[MAX];//路径点集void MaptoGraph();void Dijstra();void Putpath();};(4).多重继承类CAGVShowclass CAGVShow:public CPathPlan,public CAGV{public:#define k (abs(y2-y1))/(abs(x1-x2))int a,b,c,d;int x1,x2,y1,y2; //AGV实际坐标int i,j;int l,w,s; //对应类CAGV中的相关数据void show();};2.3程序流程图三、程序重点解析3.1文本文档读入地图信息在最初的设计中,为了方便调试与信息录入,地图文本做的粗糙不堪,但这确实为程序编写提供了许多便利。
C程序课程设计(大作业)报告

5.查询职工完成的产品信息
(1)按职工号查询
(2)按名次查询
二、总体设计根据系统的要求,ຫໍສະໝຸດ 统总体设计如图1三、详细设计
1
#define N 100 //定义常数表示职工数
这次设计使我受益匪浅,在今后的学习中,我将以更加饱满的激情,更加积极的态度来面对程序设计这门课程,也要将这份激情延续到其它的课程中。
指导教师评语:
成绩:
填表时间:指导教师签名:
课程设计(大作业)报告
一、课程设计目的与要求
1.
(1)综合运用之前所学知识(选择控制,循环控制,数组,函数,指针,结构体和文件等)来完成一个简单的信息管理程序的设计。
2012年6月26日上午:按照先前完成的程序写一个对职工信息的查询,①按职工号查询;②按名次查询;
2012年6月27日上午~下午:调整程序,使程序更加美观,优化程序。还加入了一个将数据从磁盘读出的小函数,方便进行程序的操作和运行。
2012年6月28日上午:进一步理解程序,为答辩做准备。
剩余的时间对程序进行修改和撰写程序实验报告。并且通过总体设计和详细设计将程序分解开,并进行详细说明。
5.查询职工完成的产品信息。
(1)按职工号查询
2)按名次查询
工作计划及安排:
由于我们设计的题目是:职工工作量统计系统设计所以我们对我们的课程有以下安排:
2012年6月25日上午:我们先分析了我们课程需要的要求,对题目所要求的作出一个安排,对设计所要求的做出一个全面的规划,选定我们所要用的数据和函数,在计算机上操作先写出我们所需要的头文件,然后在写出我们的菜单方式的格式;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录目录 (I)第一章需求分析 (2)1.1 问题描述 (2)1.2 功能需求 (2)1.3 开发环境 (2)1.4 开发过程 (2)第二章概要设计 (3)2.1 总体设计 (3)2.2 航空类的定义 (3)2.3 接口设计 (5)2.4 运行界面设计 (5)第三章详细设计 (6)3.1 输入模块设计 (6)3.2 查找模块设计 (7)3.3 订票模块设计 (8)3.4 退票模块的设计 (9)3.5 保存及读取模块设计 (10)第四章测试分析 (11)4.1 测试程序执行情况 (11)第五章用户手册(可选) (15)5.1 使用说明 (15)第六章课程设计总结 (15)附录:程序代码 (17)参考文献 (25)第一章需求分析1.1问题描述飞机订票系统设计假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。
试设计一民航订票系统,使之能提供下列服务:❖航班信息录入功能(航班信息用文件保存)--输入❖航班信息浏览功能--输出❖查询航线:(至少两种查询方式)--算法●按航班号查询●按终点站查询❖承办订票和退票业务1.2功能需求根据要求用户需要设计一个关于售票处服务系统程序,使航空公司可以通过的乘客简单地输入个人部分信息,便可方便的管理机票。
该程序还要实现以下功能:(1)能够对航空航线进行查询;(2)能够自主的承办订票业务(3)能够自主的承办退票业务1.3开发环境应用VisualC++,VisualC++不仅仅是一个C++编译器,而且是一个基于Windows操作系统的是集成开发环境IDE,这种环境开发出来的软件稳定性好、可移植性强,可以编制各种的Windows应用程序。
1.4开发过程第一天选择课程设计题目,分析课题的要求第二天编程第三天编程及调试第四天写课程设计报告第五天提交课程设计报告(打印稿及电子稿)第二章概要设计2.1 总体设计根据需求分析,由于程序较为简单我们将只设计一个类:plane(即航班类)。
其主要功能模块有:(1)输入(2)输出(3)票额计算(4)查询(5)订票(6)退票各功能模块的调用应通过菜单进行选取。
由于乘客和机票的主要信息是由plane类的对象所生成,而且机票的管理自动运行,plane类的构造函数的设计以及机票数额计算的设计要尤其精细,因为这两个函数的调用十分的频繁。
2.2航空类的定义class Plane{private:char name[40];//终点站名int number;//航班号int Number;//飞机号int week;//星期几飞行int day;//日期int left;//余票额int n;//与数组flag一起确定客户订票状态public:int flag[20];//订票状态数组,-1为预订票,1为已定票,0为初始化状态Plane()//构造函数{name[0]='\0';number=0;Number=0;week=0;day=0;left=M;n=0;//数组从0开始计数for(int i=0;i<20;i++)flag[i]=0;}void init()//初始化每种飞机票{cout<<"请输入终点站名:";cin>>name;cout<<"请输入航班号:";cin>>number;cout<<"请输入飞机号:";cin>>Number;cout<<"请输入星期几飞行:";cin>>week;cout<<"请输入航班的日期:";cin>>day;}~Plane(){};//析构函数char *getname(){return name;}//获得终点站名int getnumber(){return number;}//获得航班号int getNumber(){return Number;}//获得飞机号int getweek(){return week;}//获得星期几飞行int getday(){return day;}//获得日期int getleft(){return left;}//获得余票额int getn(){return n;}//获得旅客数目void inleft(int n){left=left+n;}//余票额增加函数void deleft(int n){left=left-n;}//余票额减少函数void inn(){n++;}//旅客数目增加函数};2.3 接口设计表2.1:函数列表2.4 运行界面设计图2-2 类的结构图2-3 系统结构示意图第三章 详细设计 3.1 输入模块设计主要功能用来对航班信息的进行收集和输入。
将航班信息保存在系统中的前提下,需要输入航班资料,比如航班号,飞机号,航班终点站,航班时间,机票数。
该信息输入成功后,可继续输入航班信息,否则系统返回到主菜单。
第一段:void init()//初始化每种飞机票{cout<<"请输入终点站名:";cin>>name;cout<<"请输入航班号:";cin>>number;cout<<"请输入飞机号:";cin>>Number;cout<<"请输入星期几飞行:";cin>>week;cout<<"请输入航班的日期:";cin>>day;第二段:void start(){for(int i=0;i<N;i++){pl[i].init();cout<<endl;}}3.2 查找模块设计主要功能是对航班信息的查找。
在系统已经录入航班信息前提下,使用该功能通过查找方式进行查找航班信息。
具体包括按按终点站查找。
在查找航班各方面信息后,按任意键就可以返回主菜单。
void query(){int i,num=0;char name[40];cout<<endl;cout<<"请输入终点站名:";cin>>name;for(i=0;i<=N;i++)if(strcmp(name,pl[i].getname())==0){num++;cout<<"航班号:"<<pl[i].getnumber()<<endl;cout<<"飞机号:"<<pl[i].getNumber()<<endl;cout<<"星期:"<<pl[i].getweek()<<"飞行"<<endl;cout<<"航班日期:"<<pl[i].getday()<<endl;cout<<"余票额:"<<pl[i].getleft()<<endl;break;}if(num==0)cout<<"没有此航班"<<endl;}3.3 订票模块设计(1)用于乘客预定机票并就乘客的操作管理机票(2)具体语句为:void make(){int number,n,sitnumber,nu,ch,num=0;cout<<"请输入航班号:";cin>>number;cout<<"请输入订票数额:";cin>>n;for(int i=0;i<N;i++)if(number==pl[i].getnumber()){num++;if(n<=pl[i].getleft()){cout<<"此航班有票"<<endl;pl[i].deleft(n);pl[i].inn();pl[i].flag[pl[i].getn()]=1;for(i=0;i<n;i++){3.4退票模块的设计(1)用于乘客退定机票并就乘客的操作管理机票(2)具体语句为:void back(){int number,day,n,nu,sitnumber,num=0;//航班号,日期,退票数目,订票数目,座位号,标志量cout<<"请输入日期:";cin>>day;cout<<"请输入航班:";cin>>number;for(int i=0;i<N;i++)if((day==pl[i].getday())&&(number==pl[i].getnumber()))//日期与航班是否满足{num++;//日期与航班满足cout<<"输入退票数目";cin>>n;cout<<"退票成功"<<endl;pl[i].inleft(n);//该种飞机票增加,即已退票for(int j=0;j<=pl[i].getn();j++)//顺序查询客户订票状态{if(pl[i].flag[j]==-1)//客户是否为预定状态{cout<<"有预约订票,请输入订票数额:";cin>>nu;if(nu<=pl[i].getleft())//余票额是否满足要求{cout<<"此航班有票"<<endl;pl[i].flag[j]=1;cout<<"订票成功"<<endl;pl[i].deleft(nu);for(int k=0;k<nu;k++){cout<<"座位号"<<" ";cin>>sitnumber;}cout<<"余票额为"<<pl[i].getleft()<<endl;}}elsecout<<"没有预约订票!"<<"余票额为"<<pl[i].getleft()<<endl;}}if(num==0)cout<<"没有此票"<<endl;}3.5保存及读取模块设计主要功能是对订票信息的保存及读取。