找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 600|回复: 15

C语言学习实战项目(商品管理系统)

[复制链接]

2

主题

17

回帖

0

积分

新手上路

积分
0
发表于 2013-7-31 23:01:31 | 显示全部楼层 |阅读模式
近期在学习C语言,检验学习成果写此帖记录项目过程
代码参考《C语言开发实战宝典》
供自己回顾,和大家交流。
不周到之处请多多指教。

商品管理系统
功能:
          1  录入商品信息
          2  查找商品信息
          3  删除商品信息
          4  修改商品信息
          5  插入商品信息
          6  排序商品信息
          7  统计商品信息
          8  退出系统

2

主题

17

回帖

0

积分

新手上路

积分
0
 楼主| 发表于 2013-8-1 00:03:38 | 显示全部楼层
[attachment=821]
  1. /*文件引用*/
  2. #include <stdio.h>        /*输入输出函数*/
  3. #include <stdlib.h>        /*常用子程序*/
  4. #include <conio.h>        /*调用DOS控制台I/O*/
  5. #include <dos.h>        /*MSDOS和8086调用的一些常量和函数*/
  6. #include <string.h>        /*串操作和内存操作函数*/
  7. /*宏定义*/
  8. /*用LEN表示结构体commdity所占字节数*/
  9. #define LEN sizeof(struct commdity)
  10. /*用FORMAT表示输出格式化字符串*/
  11. #define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf\n"
  12. /*用DATA表示要输出的数据*/
  13. #define DATA comm[i].num,comm[i].name,comm[i].price,comm[i].count,comm[i].total
  14. /*声明结构体*/
  15. struct commdity            /*定义商品信息结构体*/
  16. {
  17.     int num;            /*编号*/
  18.     char name[15];        /*商品名称*/
  19.     double price;        /*单价*/
  20.     double count;        /*数量*/
  21.     double total;        /*总金额*/
  22. };
  23. /*函数声明*/
  24. void menu();            /*主菜单*/
  25. void in();                /*录入商品信息*/
  26. void show();            /*显示商品信息*/
  27. void search();            /*查找商品信息*/
  28. void del();                /*删除商品信息*/
  29. void modify();            /*修改商品信息*/
  30. void insert();            /*插入商品信息*/
  31. void order();            /*按总金额排序*/
  32. void total();            /*计算总商品数*/
  33. /*主函数*/
  34. void main()
  35. {
  36.     int n;
  37.     menu();                /*调用显示菜单的功能*/
  38.     scanf("%d", &n);    /*输入选择功能的编号*/
  39.     while(n)
  40.     {
  41.         switch(n)        /*当n=0则不执行循环退出系统*/
  42.         {
  43.         case 1:
  44.             in();        /*调用录入商品信息过程*/
  45.             break;
  46.         case 2:
  47.             search();    /*调用查找商品信息过程*/
  48.             break;
  49.         case 3:
  50.             del();        /*调用删除商品信息过程*/
  51.             break;
  52.         case 4:
  53.             modify();    /*调用修改商品信息过程*/
  54.             break;
  55.         case 5:
  56.             insert();    /*调用插入数据过程*/
  57.             break;
  58.         case 6:
  59.             order();    /*调用排序过程*/
  60.             break;
  61.         case 7:
  62.             total();    /*计算总数*/
  63.             break;
  64.         default:break;
  65.         }
  66.         getch();
  67.         menu();
  68.         scanf("%d", &n);
  69.     }
  70. }
  71. /*自定义菜单功能函数*/
  72. void menu()
  73. {
  74.     system("cls");
  75.     printf("\n\n\n\n\n");
  76.     printf("\t\t|-------------------商品管理系统-------------------|\n");
  77.     printf("\t\t|\t0.退出                                     |\n");
  78.     printf("\t\t|\t1.录入记录                                 |\n");
  79.     printf("\t\t|\t2.查找记录                                 |\n");
  80.     printf("\t\t|\t3.删除记录                                 |\n");
  81.     printf("\t\t|\t4.修改记录                                 |\n");
  82.     printf("\t\t|\t5.插入记录                                 |\n");
  83.     printf("\t\t|\t6.排序记录                                 |\n");
  84.     printf("\t\t|\t7.统计记录                                 |\n");
  85.     printf("\t\t|--------------------------------------------------|\n\n");
  86.     printf("\t\t\t选择(0-7):");
  87. }
复制代码

30

主题

68

回帖

0

积分

版主

积分
0
发表于 2013-8-1 00:36:31 | 显示全部楼层
你敢弄个窗口界面的吗?

1793

主题

457

回帖

0

积分

管理员

积分
0
发表于 2013-8-1 07:32:59 | 显示全部楼层
呵呵

楼主这种在DOS下做界面其实更困难呢

2

主题

17

回帖

0

积分

新手上路

积分
0
 楼主| 发表于 2013-8-1 08:51:52 | 显示全部楼层

回 ilovec 的帖子

ilovec:你敢弄个窗口界面的吗?&#160;(2013-08-01 00:36)&#160;
小弟不才,刚看完C语言程序设计,windows窗口的尚未涉及。

2

主题

17

回帖

0

积分

新手上路

积分
0
 楼主| 发表于 2013-8-1 08:52:07 | 显示全部楼层

回 啊冲 的帖子

啊冲:呵呵

楼主这种在DOS下做界面其实更困难呢
&#160;(2013-08-01 07:32)&#160;
谢谢冲哥支持

2

主题

17

回帖

0

积分

新手上路

积分
0
 楼主| 发表于 2013-8-1 10:26:53 | 显示全部楼层
在写录入商品信息前,回顾一下基础知识--> 几个常用库函数
以下内容摘自百度百科
函数fopen
函数简介
函数功能:打开一个文件
函数原型:FILE * fopen(const char * path,const char * mode);
相关函数:open,fclose,fopen_s[1],_wfopen
所需库:<stdio.h>
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。
一般而言,打开文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。
参数说明:
参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读写数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
at+ 打开一个叫string的文件,a表示append,就是说写入处理的时候是接着原来文件已有内容写入,不是从头写入覆盖掉,t表示打开文件的类型是文本文件,+号表示对文件既可以读也可以写。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库以二进制模式打开文件。如果不加b,表示默认加了t,即rt,wt,其中t表示以文本模式打开文件。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。
有些C编译系统可能不完全提供所有这些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,读者注意所用系统的规定。

2

主题

17

回帖

0

积分

新手上路

积分
0
 楼主| 发表于 2013-8-1 10:27:40 | 显示全部楼层
函数名
feof
功 能
检测流上的文件结束符

2

主题

17

回帖

0

积分

新手上路

积分
0
 楼主| 发表于 2013-8-1 10:28:08 | 显示全部楼层
简介
函数原型:
size_t fread ( void   *buffer,  size_t size,  size_t count,  FILE *stream) ;
功 能:
从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功返回 0。
参 数:
buffer
用于接收数据的内存地址,大小至少是size*count字节.
size
单个元素的大小,单位是字节
count
元素的个数,每个元素是size字节.
stream
输入流
返回值:
实际读取的元素个数.如果返回值与count不相同,则可能文件结尾或发生错误.
从ferror和feof获取错误信息或检测是否到达文件结尾.

2

主题

17

回帖

0

积分

新手上路

积分
0
 楼主| 发表于 2013-8-1 10:28:40 | 显示全部楼层
函数名: fclose()
功 能: 关闭一个流。注意:使用fclose()函数就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区。
用 法: int fclose(FILE *stream);
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

果子博客
扫码关注微信公众号

Archiver|手机版|小黑屋|风叶林

GMT+8, 2026-2-1 19:38 , Processed in 0.154513 second(s), 21 queries .

Powered by 风叶林

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表