char order_num[20], movie_name[40];
SYSTEMTIME sys;
int r = 0 , count=0, hall, row, column;
FILE *fp;
order info[200], *head, *p ,*p1 , *p2;
head = NULL;
GetLocalTime( &sys );
if(!(fp=fopen("C:\\Users\\18092\\Desktop\\c_project\\documents\\orders.txt","r")))
{
printf("Open error!\n");
exit(1);
}
fscanf(fp,"%s %s %s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d",
info[0].u_account , info[0].order_num , info[0].movie_name,&info[0].hall_num, &info[0].date.year, &info[0].date.month ,&info[0].date.day,
&info[0].start_time.hour, &info[0].start_time.min, &info[0].end_time.hour, &info[0].end_time.min, &info[0].row, &info[0].column,
&info[0].pay, &info[0].pay_date.year, &info[0].pay_date.month, &info[0].pay_date.day, &info[0].pay_time.hour, &info[0].pay_time.min, &info[0].sign);
while(!feof(fp))
{
p=(order*)malloc(sizeof(order));
strcpy(p->u_account,info[r].u_account);
strcpy(p->order_num,info[r].order_num);
strcpy(p->movie_name,info[r].movie_name);
p->hall_num = info[r].hall_num;
p->date.year = info[r].date.year;
p->date.month = info[r].date.month;
p->date.day = info[r].date.day;
p->start_time.hour = info[r].start_time.hour ;
p->start_time.min = info[r].start_time.min ;
p->end_time.hour = info[r].end_time.hour ;
p->end_time.min = info[r].end_time.min ;
p->row = info[r].row;
p->column = info[r].column;
p->pay = info[r].pay;
p->pay_date.year = info[r].pay_date.year;
p->pay_date.month =info[r].pay_date.month;
p->pay_date.day =info[r].pay_date.day;
p->pay_time.hour =info[r].pay_time.hour;
p->pay_time.min =info[r].pay_time.min;
p->sign =info[r].sign;
head = order_InsertList(head,p);
r++;
fscanf(fp,"%s %s %s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d",
info[r].u_account , info[r].order_num , info[r].movie_name,&info[r].hall_num, &info[r].date.year, &info[r].date.month ,&info[r].date.day,
&info[r].start_time.hour, &info[r].start_time.min, &info[r].end_time.hour, &info[r].end_time.min, &info[r].row , &info[r].column,
&info[r].pay, &info[r].pay_date.year, &info[r].pay_date.month , &info[r].pay_date.day, &info[r].pay_time.hour, &info[r].pay_time.min, &info[r].sign);
}
fclose(fp);
printf("****************************************************************************************************\n");
printf("| 用户账号 | 订单号 | 电影名 |放映厅号| 日期 | 时间 | 座位 |价格| 购买日期 | 购买时间 |\n");
printf("****************************************************************************************************\n");
for(p1 = p2 = head ;p1 != NULL;p1 = p2)
{
if( ((strcmp( account , p1->u_account ) == 0) && (p1->sign == 1)) && (((p1->date.month > sys.wMonth) || ((p1->date.month == sys.wMonth) && (p1->date.day > sys.wDay))) || (((p1->date.month == sys.wMonth) && (p1->date.day == sys.wDay) && (p1->start_time.hour > sys.wHour)) || ((p1->date.month == sys.wMonth) && (p1->date.day == sys.wDay) && (p1->start_time .hour == sys.wHour) && (p1->start_time .min > sys.wMinute)))) )
{
printf("%-12s|%-12s|%-12s|%-2d|%4d年%2d月%2d日|%02d:%02d--%02d:%02d|%d行 %d列|%4d|%4d年%2d月%2d日|%02d:%02d|\n",
p1->u_account ,p1->order_num , p1->movie_name,p1->hall_num , p1->date.year, p1->date.month ,p1->date.day,
p1->start_time.hour, p1->start_time.min, p1->end_time.hour, p1->end_time.min, p1->row , p1->column,
p1->pay,p1->pay_date.year, p1->pay_date.month , p1->pay_date.day, p1->pay_time.hour, p1->pay_time.min);
printf("****************************************************************************************************\n");
count++;
}
p2 = p1->next ;
}
if(!count)
{
printf("未找到可退的订单!\n");
system("pause");
}
else
{
printf("请输入您退订订单的单号:\n");
scanf("%s",order_num);
for(p1 = p2 = head ;p1 != NULL;p1 = p2)
{
if( strcmp( order_num , p1->order_num ) == 0)
{
p1->sign = 0;
hall = p1->hall_num ;
row = p1->row ;
column = p1->column ;
strcpy(movie_name, p1->movie_name);
}
p2 = p1->next ;
}
if(!(fp=fopen("C:\\Users\\18092\\Desktop\\c_project\\documents\\orders.txt","w")))
{
printf("Open error!\n");
exit(1);
}
for(p1 = p2 = head ;p1 != NULL;p1 = p2)
{
p2 = p1->next ;
fprintf(fp,"%s %s %s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
p1->u_account , p1->order_num , p1->movie_name, p1->hall_num, p1->date.year, p1->date.month , p1->date.day,
p1->start_time.hour, p1->start_time.min, p1->end_time.hour, p1->end_time.min, p1->row , p1->column,
p1->pay, p1->pay_date.year, p1->pay_date.month , p1->pay_date.day, p1->pay_time.hour ,p1->pay_time.min ,p1->sign);
}
fclose(fp);
printf("退票成功!\n");
seat_cover(hall, row, column, movie_name);
system("pause");
system("cls");
}
}
typedef struct movie{ //电影信息结构
char movie_num[40]; //电影编号
char movie_name[60]; //电影名
int price; //电影单价
struct{
int year;
int month;
int day;
}date; //日期
struct{
int hour;
int min;
}start_time; //开始时间
struct{
int hour;
int min;
}end_time; //结束时间
int hall_num; //放映厅号
char seat[ROW*COLUMN]; //座位表
struct movie *next; //指针
}movie;
if(!(fp=fopen("C:\Users\18092\Desktop\c_project\documents\orders.txt","w")))
{
printf("Open error!\n");
exit(1);
}
for(p1 = p2 = head ;p1 != NULL;p1 = p2)
{
p2 = p1->next ;
fprintf(fp,"%s %s %s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
p1->u_account , p1->order_num , p1->movie_name, p1->hall_num, p1->date.year, p1->date.month , p1->date.day,
p1->start_time.hour, p1->start_time.min, p1->end_time.hour, p1->end_time.min, p1->row , p1->column,
p1->pay, p1->pay_date.year, p1->pay_date.month , p1->pay_date.day, p1->pay_time.hour ,p1->pay_time.min ,p1->sign);
}
fclose(fp);
求大佬帮小弟解决一下!读取前的文件是没有圈起来的部分!创建的链表输出也没问题!