C语言网

 找回密码
 加入社区!

QQ登录

只需一步,快速开始

查看: 613|回复: 7

C 语言 销售监控程序 [复制链接]

Rank: 6Rank: 6

主题
68
帖子
348
C币
578 枚
在线时间
57 小时
发表于 2010-9-2 18:42:08 |显示全部楼层
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. #define NAMELENGTH 21 //??×?3¤?è
  5. #define ERRFLAG 1 //′í?ó±êê?
  6. #define SUCFLAG 0 //3é1|±êê?
  7. #define EXIST 1 //′??ú±êê?
  8. #define NOTEXIST 0 //2?′??ú±êê?

  9. struct item
  10. {
  11. char itemname;
  12. unsigned int itemtarget;
  13. unsigned int itemsum;
  14. };

  15. struct itemsale
  16. {
  17. unsigned int itemnum;
  18. unsigned int salenum;
  19. };

  20. struct saveitem
  21. {
  22. unsigned int itemcode;
  23. struct item itemnode;
  24. };

  25. struct deletenode
  26. {
  27. struct saveitem first;
  28. struct deletenode *next;
  29. };

  30. typedef item ITEM;
  31. typedef itemsale ITEMSALE;
  32. typedef saveitem SAVEITEM;
  33. typedef deletenode DELETENODE;

  34. int additem(void);
  35. int recorditem(void);
  36. int deleteitem(void);
  37. int dispitem(void);
  38. int dispsales(void);

  39. int main(int argc, char *argv[])
  40. {
  41. short int choice;

  42. printf("********************************************");
  43. printf("\n\n----------Sales Monitoring System---------");
  44. printf("\n 1. Add new item details");
  45. printf("\n 2. Record sale details");
  46. printf("\n 3. Delete existing item details");
  47. printf("\n 4. Display sale details based on item number");
  48. printf("\n 5. Display report on salses target achieved items");
  49. printf("\n 6. Quit");
  50. printf("\nPlease enter you choice:");
  51. scanf("%d",&choice);

  52. while(6!=choice)
  53. {
  54. switch(choice)
  55. {
  56. case 1:
  57. additem();
  58. break;
  59. case 2:
  60. recorditem();
  61. break;
  62. case 3:
  63. deleteitem();
  64. break;
  65. case 4:
  66. dispitem();
  67. break;
  68. case 5:
  69. dispsales();
  70. break;
  71. default:
  72. printf("\nYou have enter a wrong number,please input a integer between 1--6\n");
  73. }
  74. printf("\n********************************************");
  75. printf("\n\n----------Sales Monitoring System---------");
  76. printf("\n 1. Add new item details");
  77. printf("\n 2. Record sale details");
  78. printf("\n 3. Delete existing item details");
  79. printf("\n 4. Display sale details based on item number");
  80. printf("\n 5. Display report on salses target achieved items");
  81. printf("\n 6. Quit");
  82. printf("\nPlease enter you choice:");
  83. scanf("%d",&choice);
  84. }
  85. printf("\nYou have choice to quit, please waiting......");
  86. printf("\nThe program will be quit, \nplease press any key to continue");
  87. choice=getc(stdin);
  88. return 1;
  89. }

  90. int additem(void)
  91. {
  92. ITEM add;
  93. FILE *fp;
  94. SAVEITEM save;
  95. short int i;
  96. long int filelen;

  97. printf("\nPlease enter the item's name:");
  98. scanf("%s",&add.itemname);
  99. i=strlen(&add.itemname);
  100. while(i>=20 || i<=0 )
  101. {
  102. printf("\nThe name which you have input is too long or too short,the length shoule between 1 to 20!");
  103. printf("\nPlease input again:");
  104. i=scanf("%s",&add.itemname);
  105. }
  106. printf("\nPlease input the target of the new item:");
  107. scanf("%d",&add.itemtarget);
  108. printf("\nPlease input the sales sum of the item:");
  109. scanf("%d",&add.itemsum);

  110. if(NULL==(fp=fopen("item.dat","a+")))
  111. {
  112. printf("\nCan not open the file \"item.dat\".");
  113. return ERRFLAG;
  114. }
  115. if(!feof(fp))
  116. {
  117. fseek(fp,0L,SEEK_END);
  118. filelen=ftell(fp);

  119. }
  120. if(filelen<=0)
  121. {
  122. save.itemcode=1;
  123. }
  124. else
  125. {
  126. fread(&save,sizeof(SAVEITEM),1,fp);
  127. save.itemcode++;
  128. }
  129. strcpy(&save.itemnode.itemname,&add.itemname);
  130. save.itemnode.itemsum=add.itemsum;
  131. save.itemnode.itemtarget=add.itemtarget;
  132. fseek(fp,0L,SEEK_END);
  133. fwrite(&save,sizeof(SAVEITEM),1,fp);
  134. fclose(fp);

  135. return SUCFLAG;
  136. }

  137. int recorditem(void)
  138. {
  139. ITEM record; //????item.dat?áè?μ?êy?Y
  140. ITEMSALE sale; //????òa′?′¢μ?sales.dat?Dμ?êy?Y
  141. SAVEITEM save; //±£′?μ?item.dat?Dêy?Y
  142. //long int count; //ó?à′′?′¢???t3¤?è
  143. short int exist;
  144. //unsigned int num; //ó?à′áùê±′?′¢′óitem.dat?D?áè?μ?êy?Y
  145. FILE *fpitem,
  146. *fpsales;

  147. //ê?è?????
  148. printf("\nPlease enter the item number you want to record:");
  149. scanf("%d",&sale.itemnum);
  150. while(sale.itemnum <=0)
  151. {
  152. printf("\nYou have enter a wrong number,the item number must great then 0.");
  153. printf("\nPlease enter the item number you want to record again:");
  154. scanf("%d",&sale.itemnum);
  155. }
  156. //ê?è??úê?êyá?
  157. printf("\nPlease enter the sale acount you want to record:");
  158. scanf("%d",&sale.salenum);
  159. while(sale.salenum<=0)
  160. {
  161. printf("\nYou have enter a wrong number, the sale's acount must great then 0.");
  162. printf("\nPlease enter the sale sum you want to record again:");
  163. scanf("%d",&sale.salenum);
  164. }
  165. //ê?è??úê??e??
  166. printf("\nPlease enter the sale's sum you want record:");
  167. scanf("%d",&record.itemsum);
  168. while(record.itemsum<=0)
  169. {
  170. printf("\nYou have enter a wrong number, the sale's sum must great then 0.");
  171. printf("\nPlease enter the sale's sum you want record again:");
  172. scanf("%u",&record.itemsum);
  173. }
  174. //′óitem.dat?D?áè?êy?Y 2é?′ê?·?′??úòa±£′?μ?????,2¢±£′?êy?Y
  175. if(NULL==(fpitem=fopen("item.dat","r+")))
  176. {
  177. printf("Can not open the file \"item.dat\",Please check it!");
  178. return ERRFLAG;
  179. }
  180. exist=NOTEXIST;
  181. while(!feof(fpitem))
  182. {
  183. fread(&save,sizeof(SAVEITEM),1,fpitem);
  184. if(save.itemcode==sale.itemnum)
  185. {
  186. fseek(fpitem,-(long)(sizeof(SAVEITEM)) ,SEEK_CUR);
  187. save.itemcode =sale.itemnum;
  188. save.itemnode.itemsum=record.itemsum;
  189. fwrite(&save,sizeof(SAVEITEM),1,fpitem);
  190. exist=EXIST;
  191. break;
  192. }
  193. }
  194. //è?1?′??ú????£??ò±£′?D??¢μ?sales.dat, ·??òí?3?
  195. if(NOTEXIST==exist)
  196. {
  197. printf("\nNot such a item number exist in the file \"item.dat\",\nPlease check it befor you record.\n");
  198. return ERRFLAG;
  199. }
  200. else if(NULL==(fpsales=fopen("sales.dat","a+")))
  201. {
  202. printf("\nCan not open the file \"sales.dat\", Please check it befor you record.");
  203. return ERRFLAG;
  204. }
  205. fwrite(&sale,sizeof(ITEMSALE),1,fpsales);
  206. fclose(fpitem);
  207. fclose(fpsales);

  208. return SUCFLAG;
  209. }

  210. int deleteitem(void)
  211. {
  212. unsigned int itemnum;
  213. short int exist;
  214. SAVEITEM save;
  215. DELETENODE *header,
  216. *psecond,
  217. *pfirst,
  218. *p;

  219. FILE *fp;

  220. //ê?è?′yé?3yμ?????′ú??
  221. printf("\nPleae enter the item number you want to delete:");
  222. scanf("%d",&itemnum);
  223. if(NULL==(fp=fopen("item.dat","r")))
  224. {
  225. printf("\nCan not open the file \"item.dat\",Please check it befor delete item!");
  226. return ERRFLAG;
  227. }

  228. exist=NOTEXIST;
  229. while(!feof(fp))
  230. {
  231. fread(&save,sizeof(SAVEITEM),1,fp);
  232. if(save.itemcode == itemnum)
  233. {
  234. exist=EXIST;
  235. break;
  236. }
  237. }
  238. if(NOTEXIST==exist) //??óD????′ú???íí?3?
  239. {
  240. printf("\nNot such a item number what you want to delete in the file \"item.dat\",\nPlease check it befor you delete!");
  241. return ERRFLAG;
  242. }
  243. //?′DD????μ?′ú???í±íê?ò??¨óD′yé?3yμ?????
  244. //??D??¨??μ????t?aê?′|?áè????t?úèY
  245. fseek(fp,0L,SEEK_SET);
  246. fread(&save,sizeof(SAVEITEM),1,fp); //?áè?μúò????á11μ??úèY

  247. pfirst=psecond=(DELETENODE *)malloc(sizeof(DELETENODE));
  248. header=pfirst; //á′±íμ?í·2?
  249. pfirst->first.itemcode=save.itemcode;
  250. strcpy(&pfirst->first.itemnode.itemname,&save.itemnode.itemname);
  251. pfirst->first.itemnode.itemsum=save.itemnode.itemsum;
  252. pfirst->first.itemnode.itemtarget=save.itemnode.itemtarget;
  253. while(!feof(fp))
  254. {
  255. psecond->next=pfirst;
  256. psecond=pfirst;
  257. pfirst=(DELETENODE *)(malloc(sizeof(DELETENODE)));
  258. fread(&save,sizeof(SAVEITEM),1,fp);
  259. pfirst->first.itemcode=save.itemcode;
  260. strcpy(&pfirst->first.itemnode.itemname,&save.itemnode.itemname);
  261. pfirst->first.itemnode.itemsum=save.itemnode.itemsum;
  262. pfirst->first.itemnode.itemtarget=save.itemnode.itemtarget;
  263. }
  264. psecond->next=NULL;
  265. fclose(fp);

  266. //?ì2é????á′±í é?3yó?′yé?3y?????àí?μ??a???a??
  267. //?ì2éê×?a??£?μ±ê×?a???àí?ê±
  268. if(header->first.itemcode==itemnum)
  269. {
  270. p=header->next;
  271. header=p;
  272. }
  273. else //·?ê×?a??ê±′|àíμ??é??
  274. {
  275. p=pfirst=header;

  276. while(NULL!=p->next)
  277. {
  278. pfirst=p->next;
  279. if(p->first.itemcode==itemnum)
  280. {
  281. pfirst=p;
  282. p=pfirst->next;
  283. break;
  284. }
  285. pfirst=p;
  286. p=pfirst->next;
  287. }
  288. }
  289. //??′|àííêμ?á′±íêy?Y??D?D′è????t
  290. if(NULL==(fp=fopen("item.dat","w")))
  291. {
  292. printf("\nCan not open the file \"item.dat\",Please check it before delete a item!");
  293. return ERRFLAG;
  294. }
  295. p=header;
  296. save.itemcode=p->first.itemcode;
  297. strcpy(&p->first.itemnode.itemname,&save.itemnode.itemname);
  298. save.itemnode.itemsum=p->first.itemnode.itemsum;
  299. save.itemnode.itemtarget=p->first.itemnode.itemtarget;
  300. fwrite(&save,sizeof(SAVEITEM),1,fp);
  301. while(NULL != p->next)
  302. {
  303. pfirst=p->next;
  304. p=pfirst;
  305. save.itemcode=p->first.itemcode;
  306. strcpy(&save.itemnode.itemname,&p->first.itemnode.itemname);
  307. save.itemnode.itemsum=p->first.itemnode.itemsum;
  308. save.itemnode.itemtarget=p->first.itemnode.itemtarget;
  309. fwrite(&save,sizeof(SAVEITEM),1,fp);
  310. }
  311. fclose(fp);

  312. return SUCFLAG;
  313. }

  314. int dispitem(void)
  315. {
  316. FILE *fp;
  317. SAVEITEM save;

  318. if(NULL==(fp=fopen("item.dat","r")))
  319. {
  320. printf("\nCan not open the file \"item.dat\",Please check it befor display!");
  321. return ERRFLAG;
  322. }
  323. fread(&save,sizeof(SAVEITEM),1,fp);
  324. printf("\nItem number\tItem name\tItem sum\tItem target");
  325. printf("\n%d\t\t%s\t\t%d\t\t%d",save.itemcode,&save.itemnode.itemname,save.itemnode.itemsum,save.itemnode.itemtarget);
  326. while(!feof(fp))
  327. {
  328. fread(&save,sizeof(SAVEITEM),1,fp);
  329. printf("\n%u\t\t%s\t\t%d\t\t%d",save.itemcode,&save.itemnode.itemname,save.itemnode.itemsum,save.itemnode.itemtarget);
  330. }

  331. return SUCFLAG;
  332. }

  333. int dispsales(void)
  334. {
  335. FILE *fp;
  336. ITEMSALE sale;

  337. if(NULL==(fp=fopen("sales.dat","r")))
  338. {
  339. printf("\nCan not open the file \"sales.dat\",Please check it befor display");
  340. return ERRFLAG;
  341. }

  342. printf("\nItem number\tItem saled number");
  343. while(!feof(fp))
  344. {
  345. fread(&sale,sizeof(ITEMSALE),1,fp);
  346. printf("\n%d\t\t\t%d",sale.itemnum,sale.salenum);
  347. }

  348. return SUCFLAG;
  349. }
复制代码

Rank: 8Rank: 8

主题
24
帖子
636
C币
758 枚
在线时间
504 小时
发表于 2010-9-2 19:10:18 |显示全部楼层
哇!顶一个
因为执着,所以成功

Rank: 6Rank: 6

主题
68
帖子
348
C币
578 枚
在线时间
57 小时
发表于 2010-9-2 19:17:32 |显示全部楼层
但是 还是有点问题   数据结构太复杂了

Rank: 6Rank: 6

主题
68
帖子
348
C币
578 枚
在线时间
57 小时
发表于 2010-9-2 19:20:18 |显示全部楼层
不好 意思  下次来把注释弄上

Rank: 1

主题
0
帖子
1
C币
4 枚
在线时间
0 小时
发表于 2011-1-19 19:00:59 |显示全部楼层
哇!顶一个

Rank: 1

主题
0
帖子
2
C币
2 枚
在线时间
0 小时
发表于 2011-2-25 16:27:21 |显示全部楼层
:victory::victory:

Rank: 1

主题
0
帖子
5
C币
5 枚
在线时间
0 小时
发表于 2011-3-19 19:46:02 |显示全部楼层
好强大好强大,看不懂。

Rank: 1

主题
2
帖子
18
C币
27 枚
在线时间
3 小时
发表于 2011-3-21 18:12:16 |显示全部楼层
不会吧!!!!!
爱好文学  追求科学
您需要登录后才可以回帖 登录 | 加入社区!

C语言 ( 粤ICP备11042647号-2 )

GMT+8, 2012-2-7 23:07

©2009-2011 cyuyan.com.cn

回顶部