会员积分管理系统.docx
- 文档编号:26866533
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:23
- 大小:261.37KB
会员积分管理系统.docx
《会员积分管理系统.docx》由会员分享,可在线阅读,更多相关《会员积分管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
会员积分管理系统
#include"stdio.h"/*头文件名*/
#include"string.h"
#include"malloc.h"
#defineLENsizeof(structmessage_vip)/*一个结构体数组元素的长度*/
#definenumsubs4/*年份数目*/
typedefstructmessage_vip/*结构体定义*/
{
charnumber[6];
charname[20];
charsex[4];
floatyear[numsubs];
floatscore;
floataverage;
intindex;
}vip;
externintnumhuis;/*会员数目*/
externvip*pointer;/*指向结构体数组*/
externintlens;
intmenu_select();/*函数声明*/
intopenfile(viphui[]);
intfindrecord(viphuiy[]);
intwritetotext(viphuiy[]);
voidwelcome();
voiddisplay1();
voidshowtable();
voidsort(viphui[]);
voiddeleterecord(viphui[],inti);
voidaddrecord(viphuiy[]);
voiddisplay(viphuiy[],intn1,intn2);
voidamendrecord(viphuiy[]);
voidcount(viphuiy[]);
voidsortnum(viphuiy[]);
voidsortnum2(viphuiy[]);
voidsortname(viphuiy[]);
voidsortname2(viphuiy[]);
voidsortcount(viphuiy[]);
voidsortcount2(viphuiy[]);
voidstatistic(viphuiy[]);
voiddisplay1();
#include"stdio.h"
intmenu_select()/*界面显示*/
{
charc;
printf("\n\n");
printf("|1.增加会员记录5.统计信息|\n");
printf("|2.查询会员记录6.打开文件|\n");
printf("|3.修改会员记录7.保存文件|\n");
printf("|4.会员纪录排序8.显示记录|\n");
printf("|0.退出系统|\n");
printf("\n\n");
printf("请选择(0-8):
");
c=getchar();
getchar();
return(c-'0');
}
#include"stdio.h"
intfindrecord(viphuiy[])/*查找信息*/
{
charstr[2];
inti,num;
if(numhuis==0)
{
printf("没有可被查找的记录\n");
return-1;
}
else
{
printf("请输入编号:
");
gets(str);
for(i=0;i<=numhuis;i++)
if(strcmp(str,huiy[i].number)==0)
{
display(huiy,i,i);
break;
}
if(i>numhuis)
{
printf("没有查找所要的信息。
\n");
return-1;
}
returni;
}
}
#include"stdio.h"
intopenfile(viphui[])/*保存文件*/
{
inti=0,j;
FILE*fp;
charfilename[20],str[2];
if(numhuis!
=0)
{
printf("已经有记录存在,是否保存?
(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(hui);
}
printf("请输入文件名:
");
gets(filename);
numhuis=0;
if((fp=fopen(filename,"rb+"))==NULL)
{
printf("无法打开该文件\n");
return(-1);
}
fscanf(fp,"%d",&numhuis);
fgetc(fp);
while(i { fscanf(fp,"%s",hui[i].number); fscanf(fp,"%s",hui[i].name); fscanf(fp,"%s",hui[i].sex); for(j=0;j fscanf(fp,"%f",&hui[i].year[j]); fscanf(fp,"%f",&hui[i].score); fscanf(fp,"%f",&hui[i].average); fscanf(fp,"%d",&hui[i].index); i++; } fclose(fp); printf("文件读取成功\n"); printf("是否显示纪录? (y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y') display(hui,0,numhuis-1); return(0); } #include"stdio.h" voidsort(viphuiy[])/*排序文件*/ { inti,j=0; charstr[5]; vip*p; p=huiy; if(numhuis==0) { printf("没有可供查询的记录! "); } while (1) { for(i=0;;i++) { printf("请输入查询方式: "); printf("(直接输入回车则结束查询操作)\n"); printf("1.按照编号\t"); gets(str); if(strlen(str)==0)break; if(str[0]=='1') { printf("请输入排序次序: \n"); printf("1.升序排列\t"); printf("2.降序排列\n"); gets(str); if(str[0]=='1') sortnum2(p); else sortnum(p); display(huiy,0,numhuis-1); } elseprintf("请输入1"); printf("是否退出排序? (y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y')break; } return; } } voidsortnum(viphuiy[]) { inti,j; viptemp; vip*p; p=huiy; for(i=0;i for(j=0;j { if(strcmp(huiy[j+1].number,huiy[j].number)>0) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } } voidsortnum2(viphuiy[]) { inti,j; viptemp; vip*p; p=huiy; for(i=0;i for(j=0;j { if(strcmp(huiy[j].number,huiy[j+1].number)>0) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } } #include"stdio.h" voidstatistic(viphuiy[])/*输出统计信息*/ { inti,j=0,k=0; charc1,str[2]; floataverage[numsubs],sum=0; if(numhuis==0) printf("没有可被查找的记录\n"); else { while (1) { printf("下面将统计积分\n"); printf("请选择你要统计哪年的积分1.12年\t2.13年\t3.14年\t4.15年\n"); c1=getchar(); printf("\t一共有个%d记录\n",numhuis);/*总共记录数*/ switch(c1) { case'1': for(i=0;i { sum+=huiy[i].year[0]; if(huiy[j].year[0] } average[0]=sum/numhuis; printf("\t积分12年的最高分: \n");/*最高分*/ printf("\t\t编号: %s姓名: %s分数: %.2f\n", huiy[j].number,huiy[j].name,huiy[j].year[0]); break; case'2': for(i=0;i { sum+=huiy[i].year[1]; if(huiy[j].year[1] } average[1]=sum/numhuis; printf("\t积分13年的最高分: \n");/*最高分*/ printf("\t\t编号: %s姓名: %s分数: %.2f\n", huiy[j].number,huiy[j].name,huiy[j].year[1]); break; case'3': for(i=0;i { sum+=huiy[i].year[2]; if(huiy[j].year[2] } average[2]=sum/numhuis; printf("\t积分14年的最高分: \n");/*最高分*/ printf("\t\t编号: %s姓名: %s分数: %.2f\n", huiy[j].number,huiy[j].name,huiy[j].year[2]); break; case'4': for(i=0;i { sum+=huiy[i].year[3]; if(huiy[j].year[3] } average[3]=sum/numhuis; printf("\t积分15年的最高分: \n");/*最高分*/ printf("\t\t编号: %s姓名: %s分数: %.2f\n", huiy[j].number,huiy[j].name,huiy[j].year[3]); break; default: printf("输入错误! 请输入1~4之间的数\n"); } sum=0; getchar(); printf("是否继续进行统计? (y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y'); elsebreak; } } } #include"stdio.h" intwritetotext(viphuiy[])/*将所有记录写入文件*/ { inti=0,j; FILE*fp; charfilename[20]; printf("输入文件名称: "); gets(filename); fp=fopen(filename,"w"); fprintf(fp,"%d\n",numhuis); while(i { fprintf(fp,"%s%s%s",huiy[i].number,huiy[i].name,huiy[i].sex); for(j=0;j fprintf(fp,"%f",huiy[i].year[j]); fprintf(fp,"%f%f%d",huiy[i].score,huiy[i].average,huiy[i].index); i++; } fclose(fp); printf("已成功存储! \n"); display(huiy,0,numhuis-1); numhuis=0; return0; } #include"stdio.h" voidwelcome() { printf("\t*************************************************************\n"); } voidshowtable() { printf("---------------------------------------------------------------------------------------\n"); printf("编号\t\t姓名\t性别\t12年\t13年\t14年\t15年\t总分\t\n"); printf("---------------------------------------------------------------------------------------\n"); } voiddisplay(viphuiy[],intn1,intn2) { inti; showtable();/*显示表头*/ for(i=n1;i<=n2;i++) printf("%s\t\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t\n", huiy[i].number,huiy[i].name,huiy[i].sex,huiy[i].year[0], huiy[i].year[1],huiy[i].year[2],huiy[i].year[3],huiy[i].year[4],huiy[i].score,huiy[i].average,huiy[i].index); /*通过循环输出数据*/ } voiddisplay1() { printf("\n\n"); getchar(); } #include"stdio.h" #include voidamendrecord(viphuiy[]) { charpassword[10]; again: printf("请输入密码: "); scanf("%s",password); if(strcmp(password,"123")==0) { printf("密码确认\n"); printf("请修改! \n"); } else { printf("密码不正确,请重新输入\n"); gotoagain; } charstr[5];/*供用户输入*/ inti=-1,j; if(numhuis==0)/*没有记录返回*/ printf("没有可供修改的记录! "); while(i<0) { i=findrecord(huiy); if(i>=0) { printf("要删除这个会员的信息吗? (y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y') { deleterecord(huiy,i); count(huiy); } else { printf("确定要修改这个会员的信息吗? (y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y') { printf("下面请重新输入会员的信息: \n"); printf("请输入编号: \n"); gets(huiy[i].number); printf("请输入姓名: \n"); gets(huiy[i].name); printf("请输入性别(男/女1/0): \n"); gets(str); if(str[0]=='0') strcpy(huiy[i].sex,"女"); else strcpy(huiy[i].sex,"男"); huiy[i].score=0; printf("请按顺序输入积分: "); for(j=0;j { scanf("%f",&huiy[i].year[j]); huiy[i].score+=huiy[i].year[j]; } getchar(); huiy[i].average=huiy[i].score/numsubs; } count(huiy); } display(huiy,0,numhuis-1); } printf("是否继续进行其他修改? (y/n)\n"); gets(str); if(str[0]=='y'||str[0]=='Y') i=-1; elsei=1; } } voiddeleterecord(viphui[],inti)/*删除信息*/ { intj; while(i>=0) { for(j=i;j hui[j]=hui[j+1]; numhuis--; printf("删除成功! \n"); } } voidcount(viphuiy[]) { inti,j; for(i=0;i { huiy[i].index=1; for(j=0;j if(huiy[j].score>huiy[i].score) huiy[i].index++; } } #include"stdio.h" voidaddrecord(viphuiy[]) { inti=0,j,num; charstr[4]; printf("请输入增加的会员信息条目数: "); scanf("%d",&num); if(i==0) numhuis=num; elsenumhuis+=num; if(numhuis>lens) { lens+=50; pointer=(vip*)realloc(pointer,lens*LEN); } printf("请输入会员信息: \n"); for(;i { getchar(); printf("请输入编号: \n"); gets(pointer[i].number); printf("请输入姓名: \n"); gets(pointer[i].name); printf("请输入性别(男/女1/0): "); gets(pointer[i].sex); if(pointer[i].sex[0]=='0')strcpy(pointer[i].sex,"女"); elsestrcpy(pointer[i].sex,"男"); printf("请输入各年积分: (按12年,13年,14年,15年的顺序): \n"); huiy[i].score=0; for(j=0;j { scanf("%f",&huiy[i].year[j]);/*计算总分*/ huiy[i].score+=huiy[i].year[j]; } } count(huiy);/*附名次*/ display(huiy,0,numhuis-1); getchar(); } #include"stdio.h" intnumhuis; intlens; vip*pointer; voidmain() { inti=1; charstr[2]; lens=100; pointer=(vip*)malloc(lens*LEN);/*分配内存*/ numhuis=0; welcome();/*欢迎界面*/ while(i>0) { i=menu_select();/*控制菜单*/ switch(i) { case1: addrecord(pointer);break;/*增加会员信息*/ case2: findrecord(pointer);break;/*查询会员信息*/ case3: amendrecord(pointer);break;/*修改会员信息*/ case4: sort(pointer);break;/*会员信息排序*/ case5: statistic(pointer);break;/*统计信息*/ case6: openfile(pointer);break;/*打开文件*/ case7: writetotext(pointer);break;/*保存文件*/ case8: display(pointer,0,numhuis-1);break;/*显示记录*/ case0: if(numhuis! =0)printf("是否保存当前记录? (y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y') writetotext(pointer); i=-1;break;/*退出系统*/ default: printf("请输入数字0~8: \n");i=1;/*输入错误*/ } } printf("\t\t欢迎再次使用本系统。 \n\n"); display1(); } 程序结果如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 会员 积分 管理 系统