用到的知识点
- 文件操作,fopen,fclose,fprintf,fscanf,fread,fwirte函数等
- 链表操作,头插法,尾插法,增删节点
- window.h里system(color XX),用来美化黑框框
函数原型:int system (const char* command);功 能: 发出一个DOS命令,用于执行系统命令
颜色属性由两个十六进制数字指定 – 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一
我写的是药品管理系统,比较好的方面是我分成了三个端,每个端实现的功能的不相同,软件管理端对应一个地区的某品牌总负责人,分药店管理端供当地加盟该药店的商家使用,用户端对应顾客。比较新颖的地方有顾客端客户买药品时候可以获得一个随机的六位数取货码,记录购买时间可供查看等等。
可以实现
1.总药店对加盟药店的管理;
2.加盟药店对药品的增添、删除、修改、排序等功能;
3.客户端对药品提前预定,持取货码到加盟药店领取药品的功能。
功能函数的调用关系图
几个比较容易错的点:
1.隐藏密码的实现
int Hidden_password(char str[NUMBER] ) //隐藏密码
{
char input_password[NUMBER] = {'\0'}; // 防止里面本身残留垃圾
int i;
char ch;
fflush(stdin);
for(i = 0 ; i < NUMBER ; ){
ch = getch();
if ( (ch == '\b') && (i == 0 ) ){
;
}
else if ( (ch == '\b') && i != 0 ){
putchar('\b');
putchar(' ');
putchar('\b');
i--;
}
else if( ( i == NUMBER - 1 ) && ( ch != '\r') ){ // 超过NUMBER位,出错
printf("\n 很抱歉,密码需要小于等于20位... \n");
getch();
return 1 ;
}
else if( ch == '\r'){
break;
}
else{
input_password[i] = ch;
i++;
printf("*");
}
}
strcpy(str, input_password);
return 0;
}
2获取购买/本地时间
void acquisition_time(void)//获取时间并写入
{
FILE *fp;
if( (fp = fopen(STR,"a+") ) == NULL ){
printf(" 文件打开失败\n");
exit(EXIT_FAILURE);
}
time_t timep;
struct tm *p;
time (&timep);
p=gmtime(&timep);
fprintf(fp,"%d-",1900+p->tm_year);/*获取当前年份,从1900开始,所以要加1900*/
fprintf(fp,"%d-",1+p->tm_mon);/*获取当前月份,范围是0-11,所以要加1*/
fprintf(fp,"%d-",p->tm_mday);/*获取当前月份日数,范围是1-31*/
fprintf(fp,"%d-",8+p->tm_hour);/*获取当前时,这里获取西方的时间,刚好相差八个小时*/
fprintf(fp,"%d-",p->tm_min); /*获取当前分*/
fprintf(fp,"%d\n",p->tm_sec); /*获取当前秒*/
fclose(fp);
}
3获取6位随机数
int Get_the_pick_up_code(void) // 100000-999999
{
int rad = 0; //随机数
srand(time(NULL));
rad = rand()%900000+100000; //获得随机数
return rad;
}
代码一共一千多行,有点多,我删了,需要的留下邮箱= =