数据结构银行排队系统c语言,数据结构银行排队系统.doc
宁波大红鹰学院
信息工程学院
课
程
设
计
报
告
项目名称:
银行排队系统
项目组长:
白钰琦
项目成员:
项鸿伟、徐海域、徐程凯
班级名称:
10计科1
专业名称:
计算机科学与技术
完成时间:
2012年11月27日
信息工程学院制
目 录
一、 系统总体描述- 1 -
二、模块设计(包括文档设计、项目流程设计)- 1 -
三、程序设计(界面设计、后台详细设计)- 3 -
四、设计总结- 7 -
五、设计总结- 16 -
1、完成情况- 16 -
2、心得体会- 16 -
1、 系统总体描述
银行排队系统是利用现代网络通信技术和计算机信息管理技术来代替传统排队的系统,从本质上改善传统排队管理所存在的拥挤、嘈杂、混乱现象,避免各种不必要的纠纷。通过使用排队系统,由传统的客户站立排队改变为取票进队、排队等待、叫好服务,由传统物理的多个队列变为一个逻辑队列,使“先来先服务”的思想得到更好地贯彻。
本系统可以实现银行排队的主要业务活动。本系统分为以下6个功能模块:
(1)顾客到达。分为VIP客户和普通客户进行排队拿号,普通客户进入逻辑队列。
(2)顾客离开。顾客离开时将客户从队列中删除,并提供让客户对银行窗口职员评价的平台。
(3)查看业务办理。可以查看每个业务窗口正在给第几号顾客办理业务。
(4)查看排队情况。可以查看当前顾客有多少个顾客在排队等候。
(5)系统查询。可以查询本系统为多少个普通用户和VIP客户办理过业务。
(6)退出。退出整个银行排队系统。
二、模块设计(包括文档设计、项目流程设计)
本程序包含主程序模块、菜单选择模块和队列操作模块,调用关系如下图:
菜单选择模块
链表操作模块
主程序模块
模块调用示意图
2、 系统子程序及功能设计
(1)void Initshuzu(); //初始化数组(银行业务窗口)
(2)void print1(); //输出数组(银行业务窗口)界面
(3)void print1(); //输出排队等候队列界面
(4)void daoda(int x); //解决客户到达事件算法,调用(11)
(5)void likai(int x); //解决客户到达事件算法,调用(12)
(6)int guitai(); //判断输入的柜台号是否正确
(7) int pingfen(); //判断输入的分数是否正确
(8) void mygrade(); //主评分函数,调用(6)和(7)
(9) void VIP(int x); //VIP用户认真认证
(10)void time(); //时间函数
(11)void Enqueue(Linkqueue *Q,int elem); //进队列
(12)int Dlqueque(Linkqueue *Q); //出队列
(13)void Initqueue(); //主函数。设定界面颜色和大小,
调用工作区模块函数。
3、 函数主要调用关系图
14 main()
3
1
8
9
2
4
5
10000
12
11
6
7
系统函数调用关系图
三、程序设计(界面设计、后台详细设计)
主界面
四、设计总结
#include "stdio.h"
#include "conio.h"
#define MAXSIZE 100
/******************************************
定义数据结构
*******************************************/
typedef struct _CUSTOMER_INFO{
int nNO;
}CUSTOMER_INFO,*CUSTOMER_INFO_PTR;
typedef struct{
CUSTOMER_INFO_PTR base;
int front;
int rear;
}QUEUE;
bool InitQueue(QUEUE &Q)
{
Q.base= new CUSTOMER_INFO[MAXSIZE];
if(Q.base == NULL)
return false;
else{
Q.front=Q.rear=0;
return true;
}
}
int EnterQueue(QUEUE &Q, int m)
{
if((Q.rear+1)%MAXSIZE==Q.front)
{
printf("队满!\n");
return 0;
}
Q.base[Q.rear].nNO=m;
Q.rear = (Q.rear+1)%MAXSIZE;
return 1;
}
int LeaveQueue(QUEUE &Q)
{
if(Q.front==Q.rear){
printf("队空!\n");
return 0;
}
else{
int n;
n =Q.base[Q.front].nNO;
Q.front=(Q.front+1)%MAXSIZE;
return n;
}
}
int Qlength(QUEUE Q)
{
return (Q.rear-Q.front+MAXSIZE)%MAXSIZE;
}
int main(int argc, char* argv[])
{
int nChoice;
int nCount = 1;
int nIteration = 1;
int num;
int length;
QUEUE Q[4];
CUSTOMER_INFO customer;
printf("****************农村信用社排队系统*************\n");
for(int i = 0; i < 4; i++)
InitQueue(Q[i]);
for(; ;){
printf("\n\n==========第%d次模拟处理============\n",nIteration++);
for(int j = 0; j < 4; j++){
if(j == 0)
printf("正在等待服务的顾客: ");
else
printf("%d号柜台已服务顾客: ", j);
length=Qlength(Q[j]);
customer = Q[j].base[Q[j].front];
for(int k=1;k<=length;k++){
printf("%3d", customer.nNO);
customer=Q[j].base[Q[j].front+k];
}
printf("\n");
}
printf("\n");
printf("1----1号柜台服务\n");
printf("2----2号柜台服务\n");
printf("3----3号柜台服务\n");
printf("4----新客户取号等待服务\n");
printf("0----退出银行排队系统\n");
printf("请选择: ");
scanf("%d",&nChoice);
if(nChoice < 0 || nChoice >4){
getchar();
printf("\n>>>输入非法!\n");
}
if(nChoice == 0)
break;
else if(nChoice == 4){
customer.nNO =nCount;
nCount=nCount+1;
EnterQueue(Q[0], customer.nNO);
}
else if(nChoice >=1 && nChoice <=3){
num=LeaveQueue(Q[0]);
if(num){
customer.nNO=num;
EnterQueue(Q[nChoice], customer.nNO);
}
else{
printf("\n>>>当前没有等待客户!\n");
}
}
}
return 0;
}
五、设计总结
1、完成情况
这次是数据结构的第二个项目,我们小组基本还是能顺利完成本次项目内容,组长分工明确,各成员能按时并保质保量完成各自模块,但是在拼接时候出现很多问题,有的是细节,有的是源程序本身存在的错误,通过大家齐心协力,多次修改整合之后,最终上交了一份我们自己的成果。虽然最后的功能创新点不是很多,但是我们在完善课本的内容时,解决困难也可以更加巩固所学到的知识,将学习到的知识运用到设计软件的代码里。
2、心得体会
白钰琦:通过此次的银行排队系统的设计开发,让我对数据结构中链式队列结构有了更多的理解,对列是限定仅在一端进行插入,而在另一端进行删除操作的线性表,在此次实验中,我们才用的是链式队列的存储结构,该存储模式合适增删,但不适合查找,次程序可采用循环模式,但容易溢出。同时,此次的设计让我更多的理解了c语言编程的规则,对以后的项目有了更好的基础。
徐程凯:我这次负责的项目主要是视频的制作。这次的项目是关于队列与栈的。我们小组最后决定是用的是链式链表,因为这个项目不需要我们进行修改和查找只需要添加删除,所以我们觉得使用链式列表是最为科学的方法。这次课程设计使我加强了自身的编程能力的同时,也让我认识到要将所学灵活的应用到实际生活中去,不可以凭空想象,要着眼实际,找到生活所需,理论里联系实际,才可以编写出真正有价值的程序。
徐海域:课程设计不同于平时的编程实验,它的要求更多更全面,需要程序编写者在前期做出准确的需求分析,还有后期全面的程序测试,这些都是在过去的学习中很少接触到的。通过老师的讲解和自身在编程中的实践,我深刻体会到需求分析可以使得程序更贴近生活,更具实用性,而全面到位的程序设计则可以保证程序的实用性和健壮性。
项鸿伟:通过这次课程设计,我学到了不少东西,对大型的编写有了一丁点额了解,更重要的是断了了我的自学能力,这对我们的学习很有好处。但是也存在很多问题,程序调试的时候出了很多问题,但是在同学的帮助下还是顺利的完成了这个程序。
展开阅读全文
数据结构银行排队系统c语言,数据结构银行排队系统.doc相关推荐
- c语言数据结构插入算法说明,C语言数据结构插入算法
C语言数据结构插入算法 C语言数据结构插入算法 C语言数据结构 数据结构学习 ->是二目运算符 p->a 引用了指针p指向的结构体的成员a. 整合 void unionL(List *La ...
- 运动会分数统计系统c语言,运动会分数统计系统
<运动会分数统计系统>由会员分享,可在线阅读,更多相关<运动会分数统计系统(18页珍藏版)>请在人人文库网上搜索. 1.运动会分数统计系统罗慧明1. 需求分析为了简便地对运动会 ...
- 成绩查询系统c语言,学生成绩查询系统C语言代码(分服务器端和客户端).doc
学生成绩查询系统C语言代码(分服务器端和客户端) 客户端:#include#include#include #pragma comment(lib , "Wsock32.lib " ...
- c语言程序设计工资纳税系统,C语言程序设计纳税工资系统
C语言程序设计纳税工资系统 第一章 课程设计目的和要求1.1 课程设计的目的C 语言一直是程序设计语言的主流之一数据类型丰富.齐全.C 语言供了整数.实数.字符.字符串等基本数据类型,还提供数组.指针 ...
- c语言作业 电影院选座系统,c语言编程 电影院票务系统.wps
c语言编程 电影院票务系统.wps 电影院票务系统 程序设计 C 语言编程 需自行编辑TXT文件 16 include include void menu FILE *fp; char ch; fp& ...
- 四六级考试报名系统c语言,四六级考试系统课程设计报告.doc
四六级考试系统课程设计报告 <.NET架构及应用>期末考试 (课程设计总结) 设计名称: 英语四.六级考试报名系统 组 长: 白缔祖 参 加 人: 白缔祖.霍晓文 指导教师: 付向东 班 ...
- c语言程序设计航空查询系统,c语言航班信息查询系统实验报告.doc
c语言航班信息查询系统实验报告 PAGE 13 - 软件学院大作业任务书 题 目:航班信息查询系统 专 业: 班 级: 姓 名: 学 号: 完成人数: 起讫日期: 任课教师: 职称: 讲师 部分管主任 ...
- c语言编程排课系统,C语言-课表排课系统.docx
C语言-课表排课系统 基本操作: 输入并创建链表(单向和双向)"参见:infcreato:装载"算法与存储一致 存储//图形模式下,进行文件读写操作后有无故的异常显示 查询//算法 ...
- 公交换乘系统c语言,数据结构课程设计报告(公交换乘).docx
课 程 设 计 报 告 题目: 武昌地区公交查询与换乘推荐 课程名称: 数据结构课程设计 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 计算机科学与技术学院 任 务 书 设计内容 掌握图.查 ...
- 停车场自动计费系统 c语言,数据结构用c语言实现停车场管理完整系统.doc
数据结构用c语言实现停车场管理完整系统 题目:用C语言实现停车场管理程序的设计 天津农学院 11计算机系计科 小组成员: 王亚洲 1108014219 王浩轩 1108014208 穆建良110801 ...
最新文章
- QT学习第8课:QT计算器界面实现
- 计算机网络原理 大型实验,计算机网络原理实验 实验一
- Eclipse——导出可执行jar包
- (转) android UI进阶之用gallery实现可滑动的Tab
- Python绘制直方图案例一则
- WIN2008下找不到proxy的处理方法
- 为什么我感觉生活不易挣钱太难
- Netgear业务交换机被曝15个漏洞,有些不修复
- [转]C++操作oracle数据库
- 小白菜飘过计算机三级数据库
- 计算机的软键盘在哪里,Win8软键盘在哪 Win8.1屏幕键盘打开方法图解
- 解析Linux商业应用现状
- 2020年最后15天总结
- tooth的用法_关于tooth的用法总结大全
- tl494c封装区别_详解TL494的性能特点参数 TL494引脚图与功能
- android file mkdir,警告:File.mkdir()被忽略
- 区块链中什么是DAO、DAC、KYC ?
- MatLab学习笔记(三)--控制语句与函数编程
- 网易邮箱回应“账号遭公开叫卖”:不涉及用户敏感信息 已报案
- 分布式架构设计概要总结
热门文章
- java权限管理框架Shiro(最近学习整理)
- 说好的「机器人出租车」和「自动驾驶汽车」,到底在哪?
原创 我爱至尊宝 科技行者 昨天...
- 最新手机号码归属地数据库(2017年4月1日)
- Codeforces Round #799 (Div. 4) (AK代码)
- python,文件md5校验
- android应用程序开发另解及Android SDK工具集的另类用法 .
- 供应链金融与区块链01——论文阅读
- echarts源码打包_Echarts模块v1.5更新【更新支持多线程,封装大量快速方法,增加史上最详细示例】...
- 学好python浪漫表白,表白代码
- 七夕动态表白代码,基于python