本文目录一览:
求编程题(看病要排队)的代码,必须用C语言解答,越基础越容易看懂越好,不要从别处copy来
struct BR_ //病人结构体;
{
int id; //病人ID;
int lv;//病人等级;
};
int main()
{
int n,i,j,yisheng,binglv,brnum = 0;
BR_ b2y[3][100] = { };//存放每个医生对应的病人;
int bingnum[3] = {}; //存放每个医生对应的病人个数;
char order[5];
//这里可以把所有输入的字串,存起来,再一一解决; 但是你原来的代码,是输入一个处理一个;
//所以 我也输入一个 处理一个了;
//但是题意是 : 输入完成后,再依次输出;
//所以,只能把要输出的东西,存在一个数组里面(下面的数组);等输入完成后再统一依次输出
char print_[300][8] = {}; //用来存放 最后print的字符串; 每一个out 都要处理一下;
int str_num = 0; //字符串的条数;
scanf("%d",n);
for(j = 0 ; j n;++j)
{
scanf("%s",order);
if(strcmp(order,"IN") == 0 ) //字符串比较,如果输入的IN,
{
brnum += 1;
scanf("%d",yisheng);
scanf("%d",binglv);
BR_ temp;
temp.id = brnum;
temp.lv = binglv;
b2y[ yisheng ][ bingnum[yisheng] ] = temp;
bingnum[yisheng]++;
//排序; 把等级高的 放在前面; 注意使用 稳定排序 的方式;比如下面的选择排序;
int pos = 0;
while(pos != n - 1)
{
for(i = pos + 1; i n;++i)
{
if(b2y[yisheng][pos].lv b2y[yisheng][i].lv)
{
BR_ temp1 = b2y[yisheng][pos];
b2y[yisheng][pos] = b2y[yisheng][i];
b2y[yisheng][i] = temp1;
}
}
pos++;
}
}
else if( strcmp(order,"OUT") == 0) //
{
scanf("%d",yisheng);
if(bingnum[yisheng] = 0) //如果这个医生当前病人为0 输出empty;
strcpy(print_[str_num++],"EMPTY");
else //不为0;输出排在最前面(也就是等级最高的病人);
{
char temp;
itoa(b2y[yisheng][0].id,print_[str_num++],10);
//最前面的病人 已经处理了,所以把数组后面的元素依次往前移动;
for(i = 0;i bingnum[yisheng] - 1;++i)
{
b2y[yisheng][i] = b2y[yisheng][i + 1];
}
bingnum[yisheng]--;//病人数量递减;
}
}
}
for(i = 0 ; i str_num;++i)
printf("%s\n",print_[i]);
return 0;
}
c语言课程设计:医院挂号收费管理系统
三点注意一下应该没有问题了
1结构的构造
2文件的读入和操作
3文件输出
算法的部分不难
lz好好翻翻书,静下心来,挺简单的其实
像这种问题在百度上面,一般的人都不太乐意回答
就算回答了,也是不痛不痒的,就像我一样
除非有人正好做过这道题~~
哈哈
c语言课程设计题目 医院排队看病系统
#include stdio.h
#include malloc.h
typedef int queuetype;
queuetype num=1;
typedef struct qnode
{
queuetype data;
struct qnode *next;
} QNode; //链队结点类型
typedef struct
{
QNode *front,*rear;
} QuType;
void initlqueue(QuType *L)
{
L-front=L-rear=NULL;
}
void pushlqueue(QuType *L,queuetype e)
{
QNode *p=(QNode*)malloc(sizeof(QNode));
p-data=e;
p-next=NULL;
if(!L-front)
{
L-front=p;
}
if(L-rear)
L-rear-next=p;
L-rear=p;
num++;
}
void deletlqueue(QuType *L)
{
if(L-front)
{
QNode *p;
p=L-front;
printf("第%d位选手已经就诊!\n",p-data);
L-front=p-next;
if(!p)
L-rear=NULL;
else
free(p);
}
else
{
num=0;
printf("所有的病人都已就诊完毕!\n");
}
}
void showqueueperson(QuType *L)
{
QNode *p=L-front;
printf("输出所有排队者的序号:\n");
while(p)
{
printf(" %d\n",p-data);
p=p-next;
}
if(!L-front)
printf("病人都已经看病完成!\n");
}
void quikSee(QuType*L,queuetype e)
{
QNode *p=L-front,*q,*t;
while(pp-data!=e)
{
t=p;
p=p-next;
}
if(p-data==e)
{
printf("find!%d号即可进行诊疗!\n",p-data);
q=t-next;
if(q-next)
t-next=q-next;
if(t-next==L-rear)
t-next=L-rear=NULL; free(q);
}
else
printf("队列中无此人!无需删除操作!\n");
}
//链队类型
void SeeDoctor()
{
int sel,flag=1;
QuType *qu=(QuType*)malloc(sizeof(QuType));
queuetype quik=0;
initlqueue(qu);//创建空队
while (flag==1) //循环执行
{
printf("1:排队 2:就诊 3:查看排队 4.不再排队,余下依次就诊 5:下班 请选择:");
scanf("%d",sel);
switch(sel)
{ //排队,入队
case 1: pushlqueue(qu,num); printf("\n挂号成功!\n"); break;
case 2: deletlqueue(qu);
printf("\n");break; //就诊,出队
case 3: showqueueperson(qu); break; //显示排队病人
case 4: {
printf("若您需要马上就诊,请输入您的号:");
scanf("%d",quik);
quikSee(qu,quik);
printf("\n");
} break; //任意顺序就诊
case 5: {
printf("抱歉!已下班,请排队的病人明天再来就诊!\n\n");//下班,明天就医!
flag=0; //退出
break;
}
default : printf("输入错误,请从新输入!\n\n"); continue;
}
}
}
void main()
{
SeeDoctor();
}
病人的姓名等信息就在结构体里加几个成员就行了!主要功能已经实现了!
我截张图给你吧!