C语言课程设计与实验报告.docx

上传人:b****5 文档编号:4956114 上传时间:2022-12-12 格式:DOCX 页数:88 大小:95.48KB
下载 相关 举报
C语言课程设计与实验报告.docx_第1页
第1页 / 共88页
C语言课程设计与实验报告.docx_第2页
第2页 / 共88页
C语言课程设计与实验报告.docx_第3页
第3页 / 共88页
C语言课程设计与实验报告.docx_第4页
第4页 / 共88页
C语言课程设计与实验报告.docx_第5页
第5页 / 共88页
点击查看更多>>
下载资源
资源描述

C语言课程设计与实验报告.docx

《C语言课程设计与实验报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计与实验报告.docx(88页珍藏版)》请在冰豆网上搜索。

C语言课程设计与实验报告.docx

C语言课程设计与实验报告

 

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

 

题目:

汽车租赁信息管理系统

 

专业:

计算机科学与技术

班级:

学号:

姓名:

成绩:

指导教师:

 

完成日期:

年月日

 

一、题目

汽车租赁信息管理系统

对某汽车租赁公司汽车租赁信息进行管理,包括汽车基本信息和汽车租赁信息。

(1)需要处理的基础数据

a)汽车租赁公司信息参考:

中文字段名

类型及长度

举例或说明

公司名称

char[30]

汽车类型

char

‘1’轿车‘2’客车‘3’货车

b)汽车基本信息参考:

中文字段名

类型及长度

举例或说明

汽车类型

char

‘1’轿车‘2’客车‘3’货车

公司名称

char[30]

汽车数

int

日租金

float

100.00

联系人

char[20]

“chenguoqing”

联系电话

char[20]

12345678901

c)汽车租赁信息参考:

中文字段名

类型及长度

举例或说明

客户姓名

char[20]

身份证号

char[20]

租车日期

char[12]

“2009/01/15”

租用天数

int

公司名称

char[30]

汽车类型

char

‘1’轿车‘2’客车‘3’货车

租车数目

int

3(辆)

(2)系统功能

a)各种基本数据的录入。

如:

汽车基本信息录入、租赁公司信息录入、汽车租赁信息录入。

b)各种基本数据的修改。

即:

允许对已经录入的数据重新进行编辑、修改。

c)各种基本数据的插入。

d)各种基本数据的删除。

e)基于各种数据的查询。

如:

某租赁公司在指定日期的租车信息。

f)基于各种基本数据的统计计算。

如:

(I)统计各汽车租赁公司总汽车数和租金总额,按租金总额从高到低排序后输出。

(II)统计某年度十二个月份汽车租赁的总次数和总租金。

(III)统计各公司各类汽车出租次数、出租金额,按出租金额从高到低排序后输出。

(IV)分别统计出租率最高的5家公司,从高到低排序后输出公司名称、公司汽车总数、出租总次数。

(V)汽车租赁信息其它方面的统计。

二、系统功能模块结构图

历史信息

三、数据结构设计及用法说明

这个系统是采用三个方向的十字链表,其中第一条链是汽车租赁公司的基本信息,包括公司名称、汽车类型和各类型汽车数量,第二条链是汽车基本信息,包括汽车类型、公司名称、汽车数、日租金、联系人和联系电话,第三条链是汽车租赁的基本信息,包括客户姓名、身份证号、租车日期、租车天数、公司名称、汽车类型和租车数目。

下图就是数据三个方向的十字交叉链表

 

 

四、程序结构

下图为程序结构的流程图:

五、各模块的功能

Build:

Load:

将已经存好的数据导入

New:

输入新的数据

Save:

将输入的数据保存

Quit:

退出程序

Search:

Firm:

查询公司信息

Bus:

查询汽车信息

Busrent查询汽车租赁信息

Modify:

Firm:

修改公司信息

Bus:

修改汽车信息

Busrent:

修改汽车租赁信息

Delete:

Firm:

删除公司信息

Bus:

删除汽车信息

Busrent:

删除汽车租赁信息

Insert:

Firm:

插入公司信息

Bus:

插入汽车信息

Busrent:

插入汽车租赁信息

Output:

Firm:

输出公司信息

Bus:

输出汽车信息

Busrent:

输出汽车租赁信息

Censue:

Tongji1:

统计每个公司的汽车总数和租赁的总收入

Tongji2:

统计每个年度所有公司出租汽车总数和总收入

Tongji3:

统计每个公司每种类型的汽车出租次数和收入

Tongji4:

统计每个公司汽车的出租率、总汽车数和租出汽车次数

Tongji5:

统计所有公司的所有年度汽车出租总数和总收入

六、试验结果

 

七、体会

这次实验结合了C语言里面的数组、指针、链表、文件等知识点。

刚开始的时候不知道如何下手,后来在相关书籍上找了相似的程序慢慢分析后开始自己尝试着写,因为开始的时候还是不会,就和寝室里面的人讨论、相互参考,经过几天的研究,我们终于写出了第一个界面,有了第一次的经验,我慢慢的写出了Build函数以及后面的函数。

最难的就是函数的调试了,开始运行的时候报错特别多,自己就那样一点一点的调,错误也渐渐减少,但是到最后又几个错误不管我怎么调就是报错,当时真的很着急,后来找到了班上成绩比较好的同学,纵欲把最后几个报错的地方改正了。

经过这么多的曲折,当我看到自己写出来的程序时心里有的是高兴与激动。

或许对于别人来说,这次的实验只是小菜一碟,但对我来说,这是经过我的付出与努力换来的。

八、参考文献

1.C语言程序设计曹计昌卢萍李开编著辞学出版社

2.TurboC使用大全第一册、第二册徐金梧等编译北京科海培训中心

3.C程序设计谭浩强清华大学出版

4.C语言程序设计廖雷高等教育出版社

九、程序清单

#include

#include

#include

#include

typedefstructbuscode

{

charbusnum[5];

chartype[2];

charfirm[30];

intrent;

charcontactor[20];

chartel[20];

structbuscode*next;

structbuscode*right;

}L;

typedefstructbus_rentcode

{

charbusnum[5];

charname[20];

charid_card_num[20];

charrent_date[12];

intrent_days;

charfirm_name[30];

intmount;

structbus_rentcode*next;

}H;

typedefstructfirmcode

{

charname[30];

intmount1;

intmount2;

intmount3;

structfirmcode*next;

structfirmcode*down;

}T;

char*Menu[]={"Build",

"Quit",

"Search",

"Modify",

"Delete",

"Insert",

"Output",

"Census"};

char*Prompt[]={"F1-Help",

"F5-Zoom",

"F6-Switch",

"F7-Trace",

"F8-Step",

"F9-Make",

"F10-Menu",

"NUM"};

char*Menus[]={"Load",

"New",

"Save",

"Areyousure?

",

"Firm",

"Bus",

"Busrent",

"Firm",

"Bus",

"Busrent",

"Firm",

"Bus",

"Busrent",

"Firm",

"Bus",

"Busrent",

"Firm",

"Bus",

"Busrent",

"tongji1",

"tongji2",

"tongji3",

"tongji4",

"tongji5"};

intMnN[]={3,1,3,3,3,3,3,5};

intMnLoc[][5]={{4,3,2,18,6},

{13,10,2,25,4},

{22,17,2,42,6},

{32,23,2,57,6},

{42,33,2,69,6},

{52,43,2,62,6},

{62,45,2,79,6},

{72,50,2,79,8}};

intMnm,Mns;

charbuf[30*25*2],buf1[40*3*2];

voidoutput_firm(T*head);

voidbuild(T**);

voidSave(T*head);

voidoutput_bus(T*head);

voidLoad(T**head);

voidoutput_busrent(T*head);

voidInsert_firm(T*head);

voidInsert_bus(T*head);

voidInsert_busrent(T*head);

voidDelete_firm(T*head);

voidDelete_bus(T*head);

voidDelete_busrent(T*head);

voidSearch_firm(T*head);

voidSearch_bus(T*head);

voidSearch_busrent(T*head);

voidModify_firm(T*head);

voidModify_bus(T*head);

voidModify_busrent(T*head);

voidtongji1(T*head);

voidtongji2(T*head);

voidtongji3(T*head);

voidtongji4(T*head);

voidtongji5(T*head);

voidShowMenuM(void);

voidSetMenuM(int);

voidClrMenuM(int);

voidShowMenuS(int);

voidHideMenuS(int);

voidSetMenuS(int);

voidClrMenuS(int);

voidSelLR(int);

voidSelUD(int);

voidExeItem(int,int);

voidScanKb(int*,int*);

T*hp=NULL;

L*t1;

H*t2;

voidmain(void)

{

inti,idx,key0,key1,flag=1;

textbackground(CYAN);

clrscr();

ShowMenuM();

Mnm=1;

Mns=0;

SetMenuM(Mnm);

while(flag){

key0=key1=0;

ScanKb(&key0,&key1);

if(key0!

=0){/*ifanordinarykeyispressed*/

if(Mns==0){/*operateonmainmenu*/

if(key0==13)

ShowMenuS(Mnm);

else{

for(i=0;i<8;i++)

if(key0-*Menu[i]==0||key0-*Menu[i]==32)

break;

if(i<8)

ShowMenuS(i+1);

}

}

else{/*operateonsubmenu*/

if(key0==13)

ExeItem(Mnm,Mns);

elseif(key0==27){

HideMenuS(Mnm);

Mns=0;

}

else{

for(i=1,idx=0;i

idx+=MnN[i-1];

for(i=idx;i

if(key0-*Menus[i]==0||key0-*Menus[i]==32)

break;

if(i

ExeItem(Mnm,i-idx+1);

}

}

}

else{/*ifaspecialkeyispressed*/

switch(key1){

case33:

ShowMenuS

(1);break;/*Alt+F*/

case18:

ShowMenuS

(2);break;/*Alt+E*/

case19:

ShowMenuS(3);break;/*Alt+R*/

case46:

ShowMenuS(4);break;/*Alt+C*/

case25:

ShowMenuS(5);break;/*Alt+P*/

case24:

ShowMenuS(6);break;/*Alt+O*/

case32:

ShowMenuS(7);break;/*Alt+D*/

case48:

ShowMenuS(8);break;/*Alt+B*/

case61:

ExeItem(1,1);break;/*F3*/

case106:

ExeItem(1,2);break;/*Alt+F3*/

case60:

ExeItem(1,4);break;/*F2*/

case45:

flag=0;break;/*Alt+X*/

case102:

ExeItem(3,1);break;/*Ctrl+F9*/

case95:

ExeItem(3,2);break;/*Ctrl+F2*/

case62:

ExeItem(3,3);break;/*F4*/

case65:

ExeItem(3,4);break;/*F7*/

case66:

ExeItem(3,5);break;/*F8*/

case108:

ExeItem(3,6);break;/*Alt+F5*/

case97:

ExeItem(7,1);break;/*Ctrl+F4*/

case96:

ExeItem(7,2);break;/*Ctrl+F3*/

case100:

ExeItem(8,1);break;/*Ctrl+F7*/

case101:

ExeItem(8,6);break;/*Ctrl+F8*/

case72:

SelUD(-1);break;/*UP*/

case80:

SelUD

(1);break;/*DOWN*/

case75:

SelLR(-1);break;/*LEFT*/

case77:

SelLR

(1);break;/*Right*/

}

}

}

}

voidShowMenuM(void)/*showmainmenu*/

{

inti;

window(1,1,80,1);

textbackground(GREEN);

textcolor(YELLOW);

clrscr();

for(i=0;i<8;i++){

gotoxy(MnLoc[i][0],1);

textcolor(RED);

cprintf("%c",*Menu[i]);

textcolor(BLACK);

cprintf("%s",Menu[i]+1);

}

}

voidSetMenuM(intmmn)/*tagmainmenu*/

{

window(1,1,80,1);

textbackground(GREEN);

textcolor(YELLOW);

gotoxy(MnLoc[mmn-1][0],1);

cprintf("%s",Menu[mmn-1]);

}

voidClrMenuM(intmmn)/*clearthetagofmainmenu*/

{

window(1,1,80,1);

textbackground(GREEN);

gotoxy(MnLoc[mmn-1][0],1);

textcolor(RED);

cprintf("%c",*Menu[mmn-1]);

textcolor(BLACK);

cprintf("%s",Menu[mmn-1]+1);

}

voidShowMenuS(intmmn)/*showsubmenuofmainmenummn*/

{

inti,left,top,right,bottom,ht,wd,idx;

if(mmn==Mnm&&Mns>0)

return;

if(mmn!

=Mnm){

if(Mns>0)HideMenuS(Mnm);

ClrMenuM(Mnm);

SetMenuM(Mnm=mmn);

}

Mns=1;

left=MnLoc[Mnm-1][1];

top=MnLoc[Mnm-1][2];

right=MnLoc[Mnm-1][3];

bottom=MnLoc[Mnm-1][4];

ht=bottom-top+1;

wd=right-left+1;

for(i=1,idx=0;i

idx+=MnN[i-1];

gettext(left,top,right,bottom,buf);

window(left,top,right,bottom);

textbackground(LIGHTGRAY);

textcolor(BLACK);

clrscr();

window(left,top,right,bottom+1);

putch(0xda);

for(i=2;i

putch(0xc4);

putch(0xbf);

for(i=2;i

gotoxy(1,i);

textcolor(BLACK);

cprintf("%c%-*s%c",0xb3,wd-3,Menus[idx+i-2],0xb3);

gotoxy(3,i);

textcolor(RED);

cprintf("%c",*Menus[idx+i-2]);

}

gotoxy(1,i);

textcolor(BLACK);

putch(0xc0);

for(i=2;i<=right-left;i++)

putch(0xc4);

putch(0xd9);

SetMenuS(Mns);

}

voidHideMenuS(intmmn)/*hidesubmenuofmainmenummn*/

{

intleft,top,right,bottom;

left=MnLoc[mmn-1][1];

top=MnLoc[mmn-1][2];

right=MnLoc[mmn-1][3];

bottom=MnLoc[mmn-1][4];

puttext(left,top,right,bottom,buf);

Mns=0;

}

voidSetMenuS(intsmn)/*tagsubmenu*/

{

inti,left,top,right,bottom,ht,wd,idx;

ClrMenuS(Mns);

Mns=smn;

left=MnLoc[Mnm-1][1];

top=MnLoc[Mnm-1][2];

right=MnLoc[Mnm-1][3];

bottom=MnLoc[Mnm-1][4];

wd=right-left+1;

for(i=1,idx=0;i

idx+=MnN[i-1];

idx+=Mns-1;

window(left,top,right,bottom);

textbackground(BLACK);

textcolor(WHITE);

gotoxy(2,Mns+1);

cprintf("%-*s",wd-3,Menus[idx]);

}

voidClrMenuS(intsmn)/*clearthetagofsubmenu*/

{

inti,left,top,right,bottom,ht,wd,idx;

left=MnLoc[Mnm-1][1];

top=MnLoc[Mnm-1][2];

right=MnLoc[Mnm-1][3];

bottom=MnLoc[Mnm-1][4];

wd=right-left+1;

for(i=1,idx=0;i

idx+=MnN[i-1];

idx+=smn-1;

window(left,top,right,bottom);

textbackground(WHITE);

textcolor(BLACK);

gotoxy(2,smn+1);

cprintf("%-*s",wd-3,Menus[idx]);

gotoxy(3,smn+1);

textcolor(RED);

cprintf("%c",*Menus[idx]);

}

voidSelLR(intlr)/*selectmenuitemleftorright*/

{

intmmn=Mnm+lr;

if(mmn>8)

mmn=1;

elseif(mmn<1)

mmn=8;

if(Mns>0)

ShowMenuS(mmn);

else{

ClrMenuM(Mnm);

SetMenuM(Mnm=mmn);

}

}

voidSelUD(intud)/*selectsubmenuitemupordown*/

{

intsmn=Mns+ud;

if(Mnm==2)

return;

if(smn>MnN[Mnm-1])

smn=1;

elseif(smn<1)

smn=MnN[Mnm-1];

if(Mns==0){

if(ud==1)ShowMenuS(Mnm);

}

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1