test_main_new.c
上传用户:janny_wxd
上传日期:2010-02-03
资源大小:261k
文件大小:7k
源码类别:

控制台编程

开发平台:

C/C++

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. //#define SIZE 3
  5. //#define MAX 13
  6. #define OK 1
  7. #define TRUE 1
  8. //#define FALSE 0
  9. #define ERROR 0
  10. #define OVERFLOW -2
  11. typedef int status;
  12. typedef struct airline{
  13. char line_num[8];//航班号
  14. char plane_num[8];//飞机号
  15. char end_place[20];//目的的
  16. int total;//座位总数
  17. int left;//剩余座位
  18. struct airline *next;//下一个结点
  19. }airline;
  20. typedef struct customer{
  21. char name[9];//顾客名
  22. char line_num[8];//航班号
  23. int seat_num;//座位号
  24. struct customer *next;//下一个结点
  25. }customer;
  26. airline *init_airline(){//初始化链表
  27. airline *l;
  28. l=(airline*)malloc(sizeof(airline));
  29. if(l==NULL){
  30. exit(OVERFLOW);
  31. }
  32. l->next=NULL;
  33. return l;
  34. }
  35. customer * init_customer(){//初始化链表
  36. customer *l;
  37. l=(customer*)malloc(sizeof(customer));
  38. if(l==NULL){
  39. exit(OVERFLOW);
  40. }
  41. l->next=NULL;
  42. return l;
  43. }
  44. status insert_airline(airline **p,char *line_num,char *plane_num,char *end_place,int total,int left){//airline链表插入操作
  45. airline *q;
  46. q=(airline*)malloc(sizeof(airline));
  47. strcpy(q->line_num , line_num);
  48. strcpy(q->plane_num , plane_num);
  49. strcpy(q->end_place , end_place);
  50. q->total  =total;
  51. q->left =left;
  52. q->next=NULL;
  53. (*p)->next=q;
  54. (*p)=(*p)->next;
  55.  //   printf("insert %d ,%dis succssed!n",e,bl);
  56. return OK;
  57. }
  58. status insert_customer(customer **p,char *name,char *line_num,int seat){//customer链表插入操作
  59. customer *q;
  60. q=(customer*)malloc(sizeof(customer));
  61. strcpy(q->name , name);
  62. strcpy(q->line_num , line_num);
  63. q->seat_num =seat;
  64. q->next=NULL;
  65. (*p)->next=q;
  66. (*p)=(*p)->next;
  67.  //   printf("insert %d ,%dis succssed!n",e,bl);
  68. return OK;
  69. }
  70. customer *delete_cus(customer *h,char *name)
  71. {
  72. customer *p,*pr,*q,*qr;
  73. qr=pr=h;
  74. p=pr->next ;
  75. q=qr->next ;
  76. while(p!=NULL)
  77. {
  78. if(strcmp(name,p->name )==0)
  79. {
  80. qr->next =q->next ;
  81. PR("delet %sn",q->name );
  82. return h;
  83. }
  84. qr=qr->next ;
  85. q=qr->next ;
  86. }
  87. PR("没有这用户,无法完成删除任务!n");
  88. return 0;
  89. }
  90. airline *modefy_airline(airline *l,char *line_num)
  91. {
  92. airline *q;
  93. q=l->next ;
  94. for(;q->next !=NULL;q=q->next )
  95. {
  96. if(strcmp(line_num,q->line_num )==0)
  97. {
  98. q->left ++;
  99. PR("modefy %sn",q->line_num );
  100. return l;
  101. }
  102. }
  103. PR("没有这个航线,无法完成修改任务!n");
  104. return 0;
  105. }*/
  106. void save()
  107. {
  108. FILE *fp;
  109. char filename[]="c:\air.dat";
  110. printf("%sn",filename);
  111. if((fp=fopen(filename,"wb"))==NULL)
  112. {
  113. printf("can not open file to writen");
  114. exit(0);
  115. }
  116. fprintf(fp,"%s",filename);
  117. }
  118. void save1()
  119. {
  120. FILE *fp;
  121. // char ch,name[30],*line;
  122. // int i=0;
  123. char filename[]="c:\data.dat";
  124. printf("%sn",filename);
  125. if((fp=fopen(filename,"wb"))==NULL)
  126. {
  127. printf("can not open filen");
  128. exit(0);
  129. }
  130. fprintf(fp,"%s",filename);
  131. // fprintf(fp,"%sn",filename);
  132. }
  133. /*status save_airline(airline *l)
  134. {
  135. FILE *fp_air;
  136. char filename[]="c:\air.txt";
  137. airline *p=l->next ;
  138. if((fp_air=fopen("filename","w"))==NULL)
  139. {
  140. printf("can not open file to write:%sn",filename);
  141. exit(0);
  142. }
  143. for(;p!=NULL;p=p->next )
  144. {
  145. // fprintf(fp_air,"%sn",filename);
  146. printf("%s,%s,%s,%d,%dn",p->line_num ,p->plane_num ,p->end_place ,p->total ,p->left );
  147. fputs(filename,fp_air);
  148. // fprintf(fp_air,"%s,%s,%s,%d,%dn",p->line_num ,p->plane_num ,p->end_place ,p->total ,p->left );
  149. }
  150. PR("air_dat write n");
  151. fclose(fp_air);
  152. return OK;
  153. }
  154. status save_customer(customer *l)
  155. {
  156. FILE *fp_customer;
  157. customer *p=l->next ;
  158. char filename[]="c:\customer.txt";
  159. if((fp_customer=fopen("filename","w"))==NULL)
  160. {
  161. printf("can not open file to write:%sn",filename);
  162. return ERROR;
  163. }
  164. for(;p!=NULL;p=p->next )
  165. {
  166. PR("opened %sn",filename);
  167. PR("%s,%s,%dn",p->name ,p->line_num ,p->seat_num );
  168. fprintf(fp_customer,"%s,%s,%d",p->name ,p->line_num ,p->seat_num );
  169. }
  170. PR("customer_dat write n");
  171. fclose(fp_customer);
  172. return OK;
  173. }
  174. int changStrInt(char *ch)
  175. {
  176. int a=1,b=0,c=0,i;
  177. for (i=strlen(ch)-1;i>=0;i--)
  178. {
  179. if (ch[i]<58&&ch[i]>47)
  180. {
  181. b=a*(ch[i]-48);
  182. a=a*10;
  183. c=c+b;
  184. }
  185. else 
  186. {
  187. PR("%c 不合法,无法将此字符串转化为整形!n",ch[i]);
  188. return 0;
  189. }
  190. // printf("the c is %dn",c);
  191. }
  192. return c;
  193. }
  194. status load_airline(airline *l)
  195. {
  196. FILE *fp_airline;
  197. int flag=0,i=0;
  198. char ch;
  199. char line_num[8];//航班号
  200. char plane_num[8];//飞机号
  201. char end_place[20];//目的的
  202. char total_str[5];
  203. char left_str[5];
  204. int total;//座位总数
  205. int left;//剩余座位 
  206. airline *p=l;
  207. char filename[50]="c:\airline.dat";
  208. if((fp_airline=fopen("filename","rb"))==NULL)
  209. {
  210. printf("can not open file to load:%sn",filename);
  211. return ERROR;
  212. }
  213. while(!feof(fp_airline))
  214. {
  215. ch=fgetc(fp_airline);
  216. if(ch!='#')
  217. {
  218. if(flag==0&&ch!=',')
  219. {
  220. line_num[i]=ch;
  221. i++;
  222. }
  223. else if(flag==1&&ch!=',')
  224. {
  225. plane_num[i]=ch;
  226. i++;
  227. }
  228. else if(flag==2&&ch!=',')
  229. {
  230. end_place[i]=ch;
  231. i++;
  232. }
  233. else if(flag==3&&ch!=',')
  234. {
  235. total_str[i]=ch;
  236. i++;
  237. }
  238. else if(flag==4&&ch!=',')
  239. {
  240. left_str[i]=ch;
  241. i++;
  242. }
  243. else if (ch==',')
  244. {
  245. flag++;
  246. i=0;
  247. }
  248. else 
  249. {
  250. PR("错误n");
  251. return ERROR;
  252. }
  253. }
  254. else
  255. {
  256. flag=0;
  257. total=changStrInt(total_str);
  258. left=changStrInt(left_str);
  259. insert_airline(&p,line_num,plane_num,end_place,total,left);
  260. p=p->next ;
  261. }
  262. }
  263. fclose(fp_airline);
  264. return OK;
  265. }
  266. status load_customer(customer *l)
  267. {
  268. FILE *fp_customer;
  269. int flag=0,i=0;
  270. char ch;
  271. char name[9];
  272. char line_num[8];//航班号
  273. char seat_num_str[5];
  274. int seat_num;//座位 
  275. customer *p=l;
  276. char filename[50]="c:\customer.dat";
  277. if((fp_customer=fopen("filename","rb"))==NULL)
  278. {
  279. printf("can not open file to load:%sn",filename);
  280. return ERROR;
  281. }
  282. while(!feof(fp_customer))
  283. {
  284. ch=fgetc(fp_customer);
  285. if(ch!='#')
  286. {
  287. if(flag==0&&ch!=',')
  288. {
  289. name[i]=ch;
  290. i++;
  291. }
  292. else if(flag==1&&ch!=',')
  293. {
  294. line_num[i]=ch;
  295. i++;
  296. }
  297. else if(flag==2&&ch!=',')
  298. {
  299. seat_num_str[i]=ch;
  300. i++;
  301. }
  302. else if (ch==',')
  303. {
  304. flag++;
  305. i=0;
  306. }
  307. else 
  308. {
  309. PR("错误n");
  310. return ERROR;
  311. }
  312. }
  313. else
  314. {
  315. flag=0;
  316. seat_num=changStrInt(seat_num_str);
  317. insert_customer(&p,name,line_num,seat_num);
  318. p=p->next ;
  319. }
  320. }
  321. fclose(fp_customer);
  322. return OK;
  323. }
  324. status creat_airline(airline **l)
  325. {
  326. airline *p=*l;
  327. int i=0;
  328. char *line_num[3]={"bjnc01","bjsh02","shgz03"};
  329. char *plane_num[3]={"plane1","plane2","plane3"};
  330. char *end_place[3]={"南昌","上海","广州"};
  331. int total[3]={100,100,100};
  332. int left[3]={51,50,78};
  333. for (i=0;i<3;i++){
  334. insert_airline(&p,line_num[i],plane_num[i],end_place[i],total[i],left[i]);
  335. }
  336. return OK;
  337. }
  338. status creat_customer(customer **l)
  339. {
  340. customer *p=*l;
  341. int i=0;
  342. char *name[3]={"欧阳锦林","尹焕亮","付胜"};
  343. char *line_num[3]={"bjnc01","bjsh02","shgz03"};
  344. int seat_num[3]={1,5,10};
  345. for (i=0;i<3;i++){
  346. insert_customer(&p,name[i],line_num[i],seat_num[i]);
  347. }
  348. return OK;
  349. }*/
  350. void main()
  351. {
  352. /* airline *air=init_airline();
  353. customer *cus=init_customer();
  354. creat_airline(&air);
  355. creat_customer(&cus);
  356. save_airline(air);
  357. save_customer(cus);*/
  358. save();
  359. save1();
  360. }