您好,欢迎来到爱学范文!

当前位置:爱学范文网>>工作范文>>工作汇报范文>>《C语言程序设计》课程设计报告

《C语言程序设计》课程设计报告

标签:时间:

河南工程学院计算机学院

《C语言程序设计》课程设计报告

题目:酒店房间及工作人员管理系统

专业: 计算机科学与技术

班级: 2141

姓名: 魏佳琦

教师: 黄治国

完成时间: 2022 年 3 月 7 日

成 绩

1、考勤(10分)

5次考勤,每次到勤2分

2、工作态度(10分)

工作踏实,不怕困难;勤于思考,积极探索疑难问题;积极动手,勤于实践

3、技术(60分)

工作量饱满(10分)

系统需求的分析正确、完整/模块划分合理/算法设计正确和流程图清晰/代码实现了算法功能/测试数据设计合理,测试步骤正确,测试结果分析正确(30分)

能够积极探索解决疑难问题的途径(10分)

有独立完成或协作精神(10分)

4、报告(20分)

排版整齐(5分)

内容完整,叙述清晰(5分)

代码有适当的注释,缩进整齐(5分)

内容符合实际情况(5分)

总分

等级

1.课程设计目标

目标是在学生学习了C语言程序设计的基本知识、基本理论的基础上,通过综合课程设计,培养学生的动手能力,培养学生学习新知识的能力,提高学生分析问题和解决问题的综合能力,培养学生的团队合作精神,为今后从事专业工作打下必要的基础。

知识目标:

(1)掌握模块化程序设计的方法;

(2)进一步学习和掌握C语言中的文件操作函数及其应用;

(3)学习和掌握C语言中的库函数及其应用。

能力培养目标:

(1)能正确分析现实生活中的问题,并抽象成数学模型,进行模块分析和编程;

(2)在程序调试过程中,能根据运行环境给出的错误提示,正确解决程序中的语法错误;

(3)在程序调试过程中,能根据运行结果,运用相应的手段,正确地找出并解决程序中的逻辑错误;

(4)在课程设计过程中,适当进行小组分工,培养团队谐调和团队合作的能力;

(5)提交课程设计成果报告,培养专业文档书写的能力。

2.分析与设计

当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计 算机被广泛应用于信息系统的环境。 计算机的最到好处的于利用它能够进行信息 管理,使用计算机进行信息控制, 不仅提高了工作效率, 而且大大的提高了其安 全性。

尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关, 系统的开发是系统管理的前提。 本系统就是为了管理好酒店房间信息和员工信息而设计的。 数据处理手工操作,工作量大,出错率高,出错后不易更改,造成了时间上的浪费。

基于这个问题,我认为有必要建立一个酒店管理系统,使酒店管理信息管理 工作规范化、系统化、程序化,避免房间分配和员工管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改实际情况。

1.1题目需求分析

程序的用途:为酒店管理者提供更方便的酒店管理体系。

能够解决住房管理,以及住房日志的长期保存。

程序要处理的数据有房间的数据,以及员工的数据。

每种数据的处理要求能够长期保存,并且实时更改。

程序的开发平台和运行环境:windows

周一(3.1日)完成:

需求分析;

设计分工;

开发环境搭建;

绘制功能模块图。

周二(3.2日)完成:

用户界面布局设计;

各模块算法设计。

周三(3.3日)完成:

用户界面的实现;

模块的功能实现;

各模块功能的黑盒测试。

周四(3.4日)完成:

系统功能的集成测试。

周五(3.5日)完成:

撰写课程设计报告。

1.2总体设计

首先要初始化一个系统对象,这个系统一个复合类,其余还有其他一个房间类和一个员工类

,而信息存储采用链表结构。

信息存储于:D:hotel_contral_system文件夹中

//房间

class room{

private:

bool exist;//是否存在

bool live;//是否有人入住

int room_ID;//房间号

std::string name;//入住顾客姓名

std::string identity_card_number;//入住顾客的身份证

}

//工作人员

class worker{

private:

bool exist;//是否存在

int work_ID;//工号

std::string identity_card_number;//员工身份证

std::string name;//姓名

std::string department;//部门

int age;//年龄

std::string sex;//性别

std::string entry_date;//入职日期

}

//系统

class my_system{

private:

worker *workerlist;//链表结构存储信息

room *roomlist;

int num_worker, num_room;

}

1.3详细设计

3.程序清单

#include

#include

#include

#include

#define kong cout<<endl;

#define debug cout<<"Bug is not here!"<<endl;

#define gang cout<<"----------"<<endl;

using namespace std;

bool re_pan(){

std::cout<<"确定执行该操作吗?(y/n)"<<std::endl;

char c;

cin>>c;

if(c == 'y') return true;

else return false;

}

//房间

class room{

private:

bool exist;

bool live;

int room_ID;

std::string name;

std::string identity_card_number;

public:

room(int room_id):room_ID(room_id),live(false){ //待改进

name = "";

identity_card_number = "";

std::cout<<"已登记房间号为"<<room_id<<"的房间。"<<std::endl;

}

void rooms(int room_id){ //替代构造函数

exist = true;

room_ID = room_id;

live= false;

std::cout<<"已登记房间号为"<<room_id<<"的房间。"<<std::endl;

}

room(){

live = false;

room_ID = 0;

name = "";

identity_card_number = "";

}

bool get_exist(){

return exist;

}

bool get_live(){

return live;

}

int get_room_id(){

return room_ID;

}

string get_name(){

return name;

}

string get_identity_card_number(){

return identity_card_number;

}

void kaobei(bool l, int r, string n, string i){

live = l;

room_ID = r;

name = n;

identity_card_number = i;

}

void live_in(){

if(live) {

std::cout<<"对不起,房间"<<room_ID<<"已经有顾客入住!"<<std::endl;

kong;

return;

}

std::cout<<"正在办理入住手续,准备登记"<<std::endl;

std::cout<<"请输入顾客的姓名:";

cin>>name;

getchar();

std::cout<<"请输入顾客的身份证号码:";

std::getline(std::cin, identity_card_number);

std::cout<<"登记成功!"<<std::endl;

live = true;

kong;

}

void live_out(){

if(!live){

std::cout<<"对不起,房间"<<room_ID<<"无人居住!"<<std::endl;

return;

}

live = false;

std::cout<<"已为顾客办好离住手续!"<<std::endl;

kong;

}

void show(){

kong

// cout<<"-----该房间的情况如下-----"<<endl;

cout<<"房间号:"<<room_ID<<endl;

cout<<"居住情况:";

if(live) {

cout<<"已住人!"<<endl;

cout<<"住户姓名:"<<name<<endl;

cout<<"住户身份证:"<<identity_card_number<<endl;

}

else cout<<"空!"<<endl;

kong

}

void print_txt(){

cout<<live<<endl;

cout<<room_ID<<endl;

cout<<name<<endl;

cout<<identity_card_number<<endl;

}

};

//工作人员

class worker{

private:

bool exist;

int work_ID;

std::string identity_card_number;

std::string name;

std::string department;

int age;

std::string sex;

std::string entry_date;

public:

worker(){};

worker(int worker_id,std::string _identity_card_number,std::string _name,std::string _department,int _age,std::string _sex,std::string _entry_date):

work_ID(worker_id),

identity_card_number(_identity_card_number),

name(_name),

department(_department),

age(_age),

sex(_sex),

entry_date(_entry_date)

{

std::cout<<"已经为该员工办理好入职手续!"<<std::endl;

}

void add_worker(int id){

exist = true;

work_ID = id;

getchar();

cout<<"请输入新员工姓名:";

cin>>name;

getchar();

cout<<"请输入新员工身份证号:";

cin>>identity_card_number;

getchar();

cout<<"请输入新员工的部门:";

cin>>department;

getchar();

cout<<"请输入新员工的年龄:";

cin>>age;

getchar();

cout<<"请输入新员工的性别:";

cin>>sex;

getchar();

cout<<"请输入入职日期:";

cin>>entry_date;

std::cout<<"已经为该员工办理好入职手续!"<<std::endl;

}

void change_department(){

cout<<"请修改员工的新部门:";

cin>>department;

cout<<"修改成功!"<<endl;

}

void delet_worker(){

exist = false;

std::cout<<"已经为该员工办理好离职手续!"<<std::endl;

cout<<"退出程序后回永久删除员工信息,在此之前依旧可以查看该员工信息"<<endl;

}

bool get_exist(){

return exist;

}

int get_worker_id(){

return work_ID;

}

void show(){

std::cout<<"--------员工信息如下--------"<<std::endl;

std::cout<<"姓名:"<<name<<std::endl;

cout<<"性别:"<<sex<<endl;

cout<<"年龄:"<<age<<endl;

cout<<"部门:"<<department<<endl;

cout<<"工号:"<<work_ID<<endl;

cout<<"身份证号:"<<identity_card_number<<endl;

}

void print_txt(){

std::cout<<name<<std::endl;

cout<<sex<<endl;

cout<<age<<endl;

cout<<department<<endl;

cout<<work_ID<<endl;

cout<<identity_card_number<<endl;

}

void input_(int work_ID1, string identity_card_number1, string name1, string department1, int age1, string sex1, string entry_date1){

work_ID = work_ID1;

identity_card_number = identity_card_number1;

name = name1;

department = department1;

age = age1;

sex = sex1;

entry_date = entry_date1;

}

};

class my_system{

private:

worker *workerlist;

room *roomlist;

int num_worker, num_room;

public:

int get_num_worker(){

return num_worker;

}

int get_num_room(){

return num_room;

}

worker *get_workerlist(){

return workerlist;

}

room *get_roomlist(){

return roomlist;

}

my_system(){

cout<<"欢迎使用Rejacky酒店管理系统!"<<endl;

cout<<"系统声明:"<<endl;

cout<<"本系统可用于酒店工作人员管理以及入住用户管理,并将历史信息记录入日志之中!"<<endl;

cout<<endl;

}

friend void start(my_system &);

//入住

void live_in(int room_id){

for(int i = 0;i < num_room;i++)

if(roomlist[i].get_room_id() == room_id){

roomlist[i].live_in();

return;

}

cout<<"不存在该房间!"<<endl;

}

//退房

void live_out(int room_id){

for(int i = 0;i < num_room;i++)

if(roomlist[i].get_room_id() == room_id){

roomlist[i].live_out();

break;

}

}

//增加一个房间

void add_room(int room_id){

room * new_list = new room[num_room + 1];

for(int i = 0;i < num_room;i++) new_list[i] = roomlist[i];

delete[] roomlist;

roomlist = new_list;

for(int i = 0;i < num_room;i++){

if(roomlist[i].get_room_id() == room_id){

cout<<"已存在该房间!"<<endl;

return;

}

}

num_room++;

roomlist[num_room - 1].rooms(room_id);

cout<<"操作完成!!n"<<endl;

}

//展示空房

void show_all_empty_rooms(){

int flag = 0;

for(int i = 0;i < num_room;i++){

if(!roomlist[i].get_live()){

cout<<(roomlist+i)->get_room_id()<<" ";

flag++;

}

if(flag == 4) {

kong;

flag = 0;

}

}

kong

}

//展示所有房间

void show_all_room(){

for(int i = 0;i < num_room;i++) {

(roomlist+i)->show();

}

}

//查询某个房间

void show_room(int room_id){

for(int i = 0;i < num_room;i++)

if(roomlist[i].get_room_id() == room_id)

{

roomlist[i].show();

break;

}

}

//员工入职

void add_worker(int id){

for(int i = 0;i < num_worker;i++)

if(workerlist[i].get_worker_id() == id){

cout<<"已存在该员工工号!"<<endl;

return;

}

worker * new_list = new worker[num_worker + 1];

for(int i = 0;i < num_worker;i++) new_list[i] = workerlist[i];

delete[] workerlist;

workerlist = new_list;

num_worker++;

workerlist[num_worker-1].add_worker(id);

}

//员工离职

void delete_worker(int worker_id){

for(int i = 0;i < num_worker;i++)

if(workerlist[i].get_worker_id() == worker_id){

workerlist[i].delet_worker();

break;

}

}

//查询某员工

void show_worker(int worker_id){

for(int i = 0;i < num_worker;i++)

if(workerlist[i].get_worker_id() == worker_id){

workerlist[i].show();

return;

}

cout<<"不存在该员工工号!"<<endl;

}

//查询所有员工

void show_all_wroker(){

if(num_worker == 0){

cout<<"暂时还没有员工哦~"<<endl;

return;

}

for(int i = 0;i < num_worker;i++) workerlist[i].show();

}

//更改员工部门

void change_worker_department(int worker_id){

for(int i = 0;i < num_worker;i++)

if(workerlist[i].get_worker_id() == worker_id){

workerlist[i].change_department();

break;

}

}

};

//初始化系统

void start(my_system &cur){

cout<<"系统正在初始化!"<<endl;

if(freopen("D:\hotel_contral_system\last_live.txt", "r", stdin) != NULL){

cin>>cur.num_room;

int num_room = cur.num_room;

if(num_room == 0){

cout<<"初始化完毕!"<<endl;

fclose(stdin);

freopen("CON","r",stdin);

return;

}

cur.roomlist = new room[num_room];

getchar();

for(int i = 0;i < num_room;i++){

bool live;

int room_ID;

std::string name;

std::string identity_card_number;

cin>>live>>room_ID;

getchar();

getline(cin,name);

getline(cin,identity_card_number);

cur.roomlist[i].kaobei(live, room_ID, name, identity_card_number);

}

}

else cur.num_room = 0;

fclose(stdin);

if(freopen("D:\hotel_contral_system\last_work.txt", "r", stdin) != NULL){

cin>>cur.num_worker;

int num_worker = cur.num_worker;

cur.workerlist = new worker[num_worker];

string identity_card_number;

string name;

string department;

int age;

string sex;

string entry_date;

getchar();

for(int i = 0;i < num_worker;i++){

getline(cin, name);

getline(cin, sex);

cin>>age;

getchar();

getline(cin, department);

int work_id;

cin>>work_id;

getchar();

getline(cin, identity_card_number);

cur.workerlist[i].input_(work_id, identity_card_number, name, department, age, sex, entry_date);

}

}

else cur.num_worker = 0;

fclose(stdin);

freopen("CON","r",stdin);

cout<<"初始化完毕!"<<endl;

}

//退出系统,保存信息

void quit(my_system cur){

kong

cout<<"正在退出系统,保存信息中。。。"<<endl;

freopen("D:\hotel_contral_system\last_work.txt", "w", stdout);

worker* head = cur.get_workerlist();

int num_worker = cur.get_num_worker();

int real_num = 0;

for(int i = 0;i < num_worker;i++)

if((head+i)->get_exist())

real_num++;

cout<<real_num<<endl;

for(int i = 0;i < num_worker;i++)

if((head+i)->get_exist())

(head+i)->print_txt();

fclose(stdout);

freopen("D:\hotel_contral_system\last_live.txt", "w", stdout);

int num_room = cur.get_num_room();

cout<<num_room<<endl;

room *headd = cur.get_roomlist();

for(int i = 0;i < num_room;i++)

if((headd+i)->get_exist())

(headd+i)->print_txt();

fclose(stdout);

freopen("CON","w",stdout);

cout<<"已退出!n"<<endl;

}

//创建系统对象

my_system ht;

//保存居住信息

void live_history(int n, int id){

freopen("D:\hotel_contral_system\live_history.txt","a",stdout);

time_t nowtime;

struct tm* p;

time(&nowtime);

p = localtime(&nowtime);

kong gang

printf("%d年%02d月%02d日%02d:%02d:%02dn",p->tm_year,p->tm_mon,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);

if(n == 1){

cout<<"入住登记"<<endl;

ht.show_room(id);

}

if(n == 2){

cout<<"退房登记"<<endl;

ht.show_room(id);

}

if(n == 6){

cout<<"新房登记"<<endl;

ht.show_room(id);

}

fclose(stdout);

freopen("CON","w",stdout);

}

//保存员工操作历史

void worker_history(int n, int id){

freopen("D:\hotel_contral_system\work_history.txt","a",stdout);

time_t nowtime;

struct tm* p;

time(&nowtime);

p = localtime(&nowtime);

printf("%04d %02d %02d %02d:%02d:%02dn",p->tm_year,p->tm_mon,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);

kong gang

if(n == 1){

cout<<"员工离职"<<endl;

ht.show_worker(id);

}

if(n == 2){

cout<<"员工入职"<<endl;

ht.show_worker(id);

}

if(n == 3){

cout<<"员工调动"<<endl;

ht.show_worker(id);

}

if(n == 4){

kong

cout<<"变更更为:"<<endl;

ht.show_worker(id);

}

fclose(stdout);

freopen("CON","w",stdout);

}

int main(){

//初始化系统信息

start(ht);

// fclose(stdin);

int n;

a:while(true){

kong gang

cout<<"1:客房管理"<<endl;

cout<<"2:员工管理"<<endl;

cout<<"3:退出系统"<<endl;

cout<<"请输入您要进行的操作:";

cin>>n;

if(re_pan());

else continue;

if(n == 1){

kong gang

cout<<"正在切换客房管理页面。。。"<<endl;

cout<<"切换成功!n"<<endl;

while(true){

int nn;

kong gang

cout<<"1:入住登记"<<endl;

cout<<"2:退房登记"<<endl;

cout<<"3:空房查询"<<endl;

cout<<"4:房间号查询"<<endl;

cout<<"5:查询所有房间"<<endl;

cout<<"6:房间登记"<<endl;

cout<<"7:返回上一步"<<endl;

kong

cout<<"请输入要进行的操作:";

cin>>n;

if(re_pan());

else continue;

if( n== 1){

kong gang

cout<<"请输入要入住的房间号:";

cin>>nn;

live_history(n,nn);

ht.live_in(nn);

}

else if(n == 2){

kong gang

cout<<"输入要退房的房间号:";

cin>>nn;

live_history(n,nn);

ht.live_out(nn);

}

else if(n == 3){

kong gang

cout<<"空余空房如下:"<<endl;

ht.show_all_empty_rooms();

}

else if(n == 4){

kong gang

cout<<"请输入要查询的房间号:";

cin>>nn;

ht.show_room(nn);

}

else if(n == 5){

kong gang

ht.show_all_room();

}

else if(n == 6){

kong gang

cout<<"输入新房房间号:";

cin>>nn;

ht.add_room(nn);

live_history(n, nn);

}

else if(n == 7) goto a;

else cout<<"输入有误!请重新输入!"<<endl;

}

}

else if(n == 2){

cout<<"n";

gang

cout<<"正在切换员工管理页面。。。"<<endl;

cout<<"切换成功!n"<<endl;

while(1){

kong gang

cout<<"1:员工离职办理"<<endl;

cout<<"2:员工入职办理"<<endl;

cout<<"3:员工部门修改"<<endl;

cout<<"4:员工信息查询"<<endl;

cout<<"5:所有员工信息"<<endl;

cout<<"6:返回上一步"<<endl;

kong

cout<<"请输入:";

cin>>n;

if(re_pan());

else continue;

if(n == 1){

kong gang

int id;

cout<<"输入要离职的员工工号:";

cin>>id;

worker_history(n,id);

ht.delete_worker(id);

}

else if(n == 2){

kong gang

int id;

cout<<"输入新员工工号:";

cin>>id;

ht.add_worker(id);

worker_history(n,id);

}

else if(n == 3){

kong gang

int id;

cout<<"输入要调动部门的员工工号:";

cin>>id;

worker_history(n,id);

ht.change_worker_department(id);

worker_history(n+1,id);

}

else if(n == 4){

kong gang

int id;

cout<<"输入要查询的员工工号:";

cin>>id;

ht.show_worker(id);

}

else if(n == 5){

kong gang

ht.show_all_wroker();

}

else if(n == 6) goto a;

else cout<<"输入有误!请重新输入!"<<endl;

}

}

else if(n == 3) {

quit(ht);

break;

}

else cout<<"输入有误!请重新输入!"<<endl;

}

system("pause");

return 0;

}

4.测试

测试环境:visual studio code

4.1测试数据

第一组:

某员工:

工号:1

姓名:饶xx

年龄:30

部门:人事部

身份证号:360425202211021451

入职日期:2022/5/22

某房间:

房间号:101

入住顾客名:魏xx

身份证号:360425202212022459

第二组:

某员工:

工号:999999999999999

姓名:饶xx

年龄:30

部门:人事部

身份证号:360425202211021451

某房间:

房间号:1

入住顾客名:魏xx

身份证号:360425202212022459

第三组:

某员工:

工号:1

姓名:饶xx

年龄:30

部门:人事部

身份证号:360425202211021451

某房间:

房间号:9999999999999999999

入住顾客名:魏xx

身份证号:360425202212022459

4.2测试结果分析

第一组完全通过测试。

历史记录如下:

第二组死循环,因为在存储员工工号数据时用的int类型,当数值巨大时无法准确存储

第二组死循环,因为在存储房间号数据时用的int类型,当数值巨大时无法准确存储

改进方法:换成string类型,但是会更改很多函数

5.总结

用c++强大的库函数以及面向对象设计,可以很有逻辑的完成一系列的想法,但是细节问题会非常的多,主要是一个数据问题以及指针问题,而这些需要根据编译器给的提示以及在网上查找资料才可以完美解决。

5.1收获

独立完成一个程序不是一件简单的事情,需要足够的耐心和细心,学会查找资料也是一件很重要的事情,总之我学到了很多,也了解了很多的学习方法。个人的能力终究是有限的

5.2不足与改进之处

一些数据类型和类的设计应该在完成之前有足够的数据支撑,否则就容易犯下一些数据过于简单,难以应付更多数据或者比较奇怪的数据,导致程序死循环。

想了解更多工作范文的资讯,请访问:工作汇报范文
下载文档

看过《《C语言程序设计》课程设计报告》的人还看了以下文章

延伸阅读

为让公司员工远离紧张的工作压力,提高公司员工团队凝聚力,如何策划一次公司组织活动的实施方案呢?下面小编给大家介绍关于公司组织活动方案范文的相关资料,希望对您有所帮助。

出纳的年终工作总结篇1  20xx年,距离在财务科就职已经一年了。在这一年里,工作勤勤恳恳,矜矜业业。每天早上按时上班,晚上按时下班。如有加班情况也是义不容辞。现对这一年的工作情况做详细汇报,汇报内容

旅游景点合作协议书  甲方:  乙方:  为开发 旅游区位优势、资源优势、特色优势,甲乙双方在平等互利的基础上,遵循市场经济运作规律,经过充分协商,甲方同意将位于 (景区四至坐标)属于自己名下、合法拥

一、仓库保管员的工作1、负责仓库大库(原辅料区.阴凉库)、危库、剧毒品库、冷库、中药材库及阴凉库的日常卫生和安全工作及各项记录;2、责所有有关原辅材料、中药材、危险品、化试、冷藏物品等的入库、

施工方案是根据一个施工项目制定的实施方案。其中包括组织机构方案(各职能机构的构成、各自职责、相互关系等)、人员组成方案(项目负责人、各机构负责人、各专业负责人等)、以下是小编收集整理的钢结构玻璃雨棚施

赞助是指企业为实现自身目标获得宣传效果或品牌增值而向某些活动组织者提供资金支持的一种投资行为。以下是为大家整理的关于年会赞助的邀请函的文章15篇,欢迎品鉴!【篇一】年会赞助的邀请函尊敬的供应商:您好!

离职证明我在此证明***(姓名)同志从*****至*******在我公司担任***,在任职期间工作努力,没有任何不良工作表现。现因*****,已申请辞职,并办理了辞职等相关手续。从现在开始,所有相关事

很多人在看完电影或者活动之后都喜欢写一些观后感,这样能够让我们对这些电影和活动有着更加深刻的内容感悟。观后感书写有哪些格式要求呢?怎样才能写一篇优秀的观后感呢?以下是小编为大家准备的观后感精彩范文,希

话务员工作总结报告(31篇)话务员工作总结报告篇1一、遵纪守例,以制度助发展俗话说:没有规矩不成方圆。毋庸置疑,在信息中心日常工作中,首先务必遵守好每一条规章制度,执行好每一个工作流程,牢记好每一

下面是小编为大家整理的技能成才强国有我主题作文600字10篇(完整文档),供大家参考。强国梦的传承就是中华民族自强不息精神的传承。少年强则国强,一代人有一代人的使命,一代人有代人的担当。下面是小编分享