食堂饭卡管理系统源代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include
#include
#include
#include
#include
struct record
{
char cardnumber[10];
char name[20];
char phone[20];
char classn[40];
char password[10];
int balance;
}
student[500];
int num=0; /*外部变量num为文件中的纪录数 */
FILE *fp;
void select(); /* 主菜单 */
void writetofile();
void addnewcard(); /*添加用户*/
void searchcard(); /*查询用户*/
void readfile(); /*读取文件*/
void deletecard(); /*删除用户*/
void addbalance(); /* 充值 */
void password(); /* 密码 */
void charge(); /* 收费 */
void main() /* 主函数 */
{
readfile(); /*读取文件*/
while (1)
{
select(); /* 主菜单 */
}
}
void readfile() /*导入文件,打开欢迎进入界面*/
{
if((fp=fopen("student.bin","rb"))==NULL)
{
if ((fp=fopen("student.bin","wb"))==NULL)
{
exit(0);
}
else
{
getch();
return;
}
exit(0);
}
fseek(fp,0,2);
if (ftell(fp)>0) /*文件非空*/
{
rewind(fp);
for (num=0;!feof(fp) && fread(&student[num],sizeof(struct record),1,fp);num++);
return;
}
}
void select() /* 主菜单 */
{
char choic;
system("cls");
printf("\n\t\t******************** 主菜单 ********************");
printf("\n\t\t*********** 1-添加用户 2-查询用户 ************");
printf("\n\t\t*********** 3- 充 值 4- 消 费 ************");
printf("\n\t\t*********** 5-删除用户 6-保存文件 ************");
printf("\n\t\t************7-退出系统**************************");
printf("\n\t\t************************************************");
printf("\n\t\t请选择:");
choic=getch();
switch (choic)
{
case '1':addnewcard();break;
case '2':searchcard();break;
case '3':addbalance();break;
case '4':charge();break;
case '5':deletecard();break;
case '6':writetofile();break;
case '7':exit(0);
default:select();
}
}
void addnewcard() /*添加用户*/
{
printf("\n\t\t*************** 请输入学生信息 ***************\n");
printf("\n\t\t输入学号:");
scanf("%s",&student[num].cardnumber);
printf("\n\t\t输入姓名:");
scanf("%s",&student[num].name);
printf("\n\t\t输入电话号码:");
scanf("%s",&student[num].phone);
printf("\n\t\t输入班级:");
scanf("%s",&student[num].classn);
printf("\n\t\t输入密码:");
scanf("%s",&student[num].password);
printf("\n\t\t输入添加金额:");
scanf("%d",&student[num].balance);
num++;
printf("\n\t\t是否继续添加?(Y/N):");
if (getch()=='y')
addnewcard();
return;
}
void searchcard() /*查询用户 */
{

int mark=0;
int i;
int a=0;
char cardnumber[10];
printf("\n\t\t***************** 按学号查找 *****************\n");
printf("\n\t\t请输入学号:");
scanf("%s",cardnumber);
for(i=0;i{
if (strcmp(student[i].cardnumber,cardnumber)==0)
{
printf("\n\t\t************** 以下是您查找的学生信息 **********");
printf("\n\t\t学号: %s",student[i].cardnumber);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t电话: %s",student[i].phone);
printf("\n\t\t班级: %s",student[i].classn);
printf("\n\t\t余额: %d",student[i].balance);
printf("\n\t\t密码: %s",student[i].password);
printf("\n\t\t************************************************");
printf("\n\t\t按任意键返回主菜单:");
mark++;
getch();
return;
}
}
if (mark==0)
{
printf("\n\t\t没有改学生的信息");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
void addbalance() /*充值*/
{
int i;
int m;
int a=0;
char cardnumber[10];
printf("\n\t\t*************** 按学号添加金额 ***************\n");
printf("\n\t\t请输入学号:");
scanf("%s",cardnumber);
for(i=0;i{
if (strcmp(student[i].cardnumber,cardnumber)==0)
{
printf("\n\t\t************* 以下是您所选择学生信息 ***********");
printf("\n\t\t学号: %s",student[i].cardnumber);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t电话: %s",student[i].phone);
printf("\n\t\t班级: %s",student[i].classn);
printf("\n\t\t余额: %d",student[i].balance);
printf("\n\t\t密码: %s",student[i].password);
printf("\n\t\t************************************************");
printf("\n\t\t是否添加金额?(y/n)");
if (getch()=='y')
{
printf("\n\t\t请输入你要添加金额:");
scanf("%d",&m);
printf("\t\t确认添加%d元给%s(y/n)?",m,student[i].name);
if (getch()=='y') {student[i].balance=student[i].balance+m;}
printf("\n\t\t添加金额成功");
}
printf("\n\t\t******** 以下是您选择学生添加金额后信息 ********");
printf("\n\t\t学号: %s",student[i].cardnumber);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t电话: %s",student[i].phone);
printf("\n\t\t班级: %s",student[i].classn);
printf("\n\t\t余额: %d",student[i].balance);
printf("\n\t\t密码: %s",student[i].password);
printf("\n\t\t************************************************");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
}
void charge() /*收费*/
{
int i;
int k;
int a=0;
char cardnumber[10];
printf("\n\t\t***************** 按学号扣费 *****************\n");
printf("\n\t\t请输入学号:");
scanf("%s",cardnumber);
for(i=0;i{
if (strcmp(stude

nt[i].cardnumber,cardnumber)==0)
{
printf("\n\t\t************** 以下是您选择学生信息 ************");
printf("\n\t\t学号: %s",student[i].cardnumber);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t电话: %s",student[i].phone);
printf("\n\t\t班级: %s",student[i].classn);
printf("\n\t\t余额: %d",student[i].balance);
printf("\n\t\t密码: %s",student[i].password);
printf("\n\t\t************************************************");
printf("\n\t\t是否扣除金额?(y/n)");
if (getch()=='y')
{
printf("\n\t\t请输入你要扣除金额:");
scanf("%d",&k);
printf("\t\t确认扣除%d元给%s?(y/n)",k,student[i].name);
if (getch()=='y')
{
student[i].balance=student[i].balance-k;
}
printf("\n\t\t扣除金额成功");
}
printf("\n\t\t****** 以下是您所选择学生扣除金额后信息 ********");
printf("\n\t\t学号: %s",student[i].cardnumber);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t电话: %s",student[i].phone);
printf("\n\t\t班级: %s",student[i].classn);
printf("\n\t\t余额: %d",student[i].balance);
printf("\n\t\t密码: %s",student[i].password);
printf("\n\t\t************************************************");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
}
void deletecard() /*删除用户*/
{
int i,j;
int deletemark=0;
char cardnumber[10];
printf("\n\t\t请输入要删除学生学号:");
scanf("%s",cardnumber);
if(num==0)
{
printf("\n\t\t对不起,文件中无任何纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
for (i=0;i{
if (strcmp(student[i].cardnumber,cardnumber)==0)
{
printf("\n\t\t以下是您要删除的学生纪录:");
printf("\n\t\t学号: %s",student[i].cardnumber);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t电话: %s",student[i].phone);
printf("\n\t\t班级: %s",student[i].classn);
printf("\n\t\t余额: %d",student[i].balance);
printf("\n\t\t密码: %s",student[i].password);
printf("\n\t\t是否删除?(y/n)");
if (getch()=='y')
{
printf("\n\n\t\t!!!退还 %d 元给%s.!!!\n\n",student[i].balance,student[i].name);
for (j=i;jstudent[j]=student[j+1];
num--;
deletemark++;
printf("\n\t\t删除成功");
printf("\n\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletecard();
return;
}
else
return;
}
continue;
}
if (deletemark==0)
{
printf("\n\t\t没有该同学的纪录");
printf("\n\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletecard();
return;
}
}
void writetofile() /*保存文件*/
{
int i;
if ((

fp=fopen("student.bin","wb"))==0)
{
printf("\n\t\t文件打开失败");
}
for (i=0;i{
if (fwrite(&student[i],sizeof(struct record),1,fp)!=1)
{
printf("\n\t\t写入文件错误!\n");
}
}
fclose(fp);
printf("\n\t\t餐卡系统文件已保存");
printf("\n\t\t按任意键退出程序\n\t\t");
exit(0);
}

相关文档
最新文档