c语言课程设计(食堂刷卡)_c语言完结篇课程设计
c语言课程设计(食堂刷卡)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言完结篇课程设计”。
#include “stdafx.h” #include #include #include #include #include #include #include #define MAX 100 #define Stu struct student int Num;CComPtr pVoice;HRESULT hr;Stu { char name[10];//学生姓名
int kh;//学生卡号
char bm[33];//学生卡编码
float cash;//金额
float xf;//消费 };void menu();void _10_2(Stu*);void Register(Stu*);void CZ();void XF();void Award();void Tj();int InitVoice(){ CComPtr pEnum;CComPtr pVoiceToken;int i;::CoInitialize(NULL);if(FAILED(hr=SpEnumTokens(SPCAT_VOICES,L“Language=804”,NULL,&pEnum)))
return 0;for(i=0;i
{
pVoiceToken.Release();
pEnum->Next(1, &pVoiceToken, NULL);} if(FAILED(hr=pVoice.CoCreateInstance(CLSID_SpVoice)))
return 0;if(FAILED(hr = pVoice->SetVoice(pVoiceToken)))
return 0;return 1;} void ReleaseVoice(){ pVoice.Release();CoUninitialize();} void Speak(char *Txt){ CSpDynamicString s(Txt);pVoice->Speak(s,0,0);} void main()
{ menu();} void menu()//主菜单 { Stu strStu;char ch;loop:
system(“cls”);
printf(“ *********************************n”);
printf(“ * 1: 卡登记 * n”);
printf(“ * 2: 饭卡充值 * n”);
printf(“ * 3: 食堂消费 * n”);
printf(“ * 4: 有奖消费 * n”);
printf(“ * 5: 财务统计 * n”);
printf(“ * 6: 退出 * n”);
printf(“ *********************************n”);
printf(“ n”);
printf(“ 请选择输入选项[123456]:>”);if(!InitVoice())return;Speak(“请 选 择 输 入 选 项”);ReleaseVoice();
while(ch=getch())
{
switch(ch)
{
case '1': Register(&strStu);goto loop;
case '2': CZ();
case '3': XF();
case '4': Award();
case '5': Tj();
case '6': exit(0);
}
} goto loop;} void Register(Stu *a)//卡登记 { FILE *fp;system(“cls”);a->xf=0;printf(“**********卡登记***************n”);if(!InitVoice())
return;Speak(“卡登记”);ReleaseVoice();printf(“输入姓名:”);if(!InitVoice())
return;Speak(“输入姓名”);ReleaseVoice();scanf(“%s”,a->name);printf(“输入卡号:”);if(!InitVoice())
return;Speak(“输入卡号”);ReleaseVoice();
scanf(“%d”,&a->kh);printf(“输入初始金额:”);if(!InitVoice())
return;Speak(“输入初始金额”);ReleaseVoice();scanf(“%f”,&a->cash);_10_2(a);printf(“你的二进制卡编码是:%s”,a->bm);if(!InitVoice())
return;Speak(“你的二进制卡编码是”);ReleaseVoice();if(!InitVoice())
return;Speak(a->bm);ReleaseVoice();if((fp=fopen(“stu.txt”,“a”))==NULL){
printf(“ERRORn”);
exit(0);} fprintf(fp,“%st%dt%st%.2ft%.2f”,a->name,a->kh,a->bm,a->cash,a->xf);fputc('n',fp);fclose(fp);} void _10_2(Stu*a)//10 进制转2进制 { int n,i,t=1;n=a->kh;getchar();for(a->bm[0]='1',i=1;n;i++){
a->bm[i]=n%2+48;
n/=2;
if(a->bm[i]=='1')t++;} if(t%2==1)a->bm[31]='1';else a->bm[31]='0';for(i;i
a->bm[i]='0';a->bm[32]=' ';} void CZ()//饭卡充值 { FILE *fp;char bm[33];Stu strshare[MAX];float cash;int nNum=0,i;system(“cls”);printf(“**************饭卡充值**************n”);if(!InitVoice())
return;Speak(“饭卡充值”);ReleaseVoice();printf(“请输入你的卡编码:”);if(!InitVoice())
return;Speak(“请输入你的卡编码”);ReleaseVoice();gets(bm);if((fp=fopen(“stu.txt”,“r”))==NULL){
printf(“ERRORn”);
exit(0);} while(!feof(fp)){
fscanf(fp,“%s%*c%d%*c%s%*c%f%*c%f%*c”,strshare[nNum].name,&strshare[nNum].kh,strshare[nNum].bm,&strshare[nNum].cash,&strshare[nNum].xf);
nNum++;} nNum--;fclose(fp);for(i=0;i
if(strcmp(strshare[i].bm,bm)==0)
{
printf(“请输入充值金额:”);if(!InitVoice())return;Speak(“请输入充值金额”);ReleaseVoice();
scanf(“%f”,&cash);
strshare[i].cash+=cash;if((fp=fopen(“stu.txt”,“w”))==NULL)
{
printf(“ERRORn”);exit(0);
}
for(i=0;i
fprintf(fp,“%st%dt%st%.2ft%.2fn”,strshare[i].name,strshare[i].kh,strshare[i].bm,strshare[i].cash,strshare[i].xf);
fclose(fp);
menu();
} } if(i>=nNum){
printf(“你尚未登记!n”);if(!InitVoice())
return;Speak(“你尚未登记”);ReleaseVoice();menu();} menu();} void XF()// 卡消费 { FILE *fp;char bm[33];Stu strshare[MAX];
float xf;int nNum=0,i;system(“cls”);printf(“**************食堂消费**************n”);if(!InitVoice())
return;Speak(“食堂消费”);ReleaseVoice();printf(“请输入你的卡编码:”);if(!InitVoice())
return;Speak(“请输入你的卡编码”);ReleaseVoice();gets(bm);if((fp=fopen(“stu.txt”,“r”))==NULL){
printf(“ERRORn”);
exit(0);} while(!feof(fp)){
fscanf(fp,“%s%*c%d%*c%s%*c%f%*c%f%*c”,strshare[nNum].name,&strshare[nNum].kh,strshare[nNum].bm,&strshare[nNum].cash,&strshare[nNum].xf);
nNum++;} nNum--;fclose(fp);for(i=0;i
if(strcmp(strshare[i].bm,bm)==0)
{
printf(“请输入消费金额:”);if(!InitVoice())return;Speak(“请输入消费金额”);ReleaseVoice();
scanf(“%f”,&xf);
strshare[i].xf+=xf;
strshare[i].cash-=strshare[i].xf;if((fp=fopen(“stu.txt”,“w”))==NULL)
{
printf(“ERRORn”);exit(0);
}
for(i=0;i
fprintf(fp,“%st%dt%st%.2ft%.2fn”,strshare[i].name,strshare[i].kh,strshare[i].bm,strshare[i].cash,strshare[i].xf);
fclose(fp);
menu();
} } if(i>=nNum){
printf(“你尚未登记!n”);if(!InitVoice())return;
Speak(“你尚未登记”);ReleaseVoice();
menu();} menu();} void Award()//有奖消费 { FILE *fp;Stu strshare[MAX],*p[MAX],*temp=NULL;int nNum=0,i,j;system(“cls”);printf(“********有奖消费****************n”);if(!InitVoice())return;Speak(“有奖消费”);ReleaseVoice();if((fp=fopen(“stu.txt”,“r”))==NULL){
printf(“ERROR!n”);
exit(0);} while(!feof(fp)){
fscanf(fp,“%s%*c%d%*c%s%*c%f%*c%f%*c”,strshare[nNum].name,&strshare[nNum].kh,strshare[nNum].bm,&strshare[nNum].cash,&strshare[nNum].xf);
nNum++;} nNum--;fclose(fp);for(i=0;i
p[i]=&strshare[i];for(i=0;i
for(j=0;j
if(p[j]->xf
xf)
{
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
} for(i=0;i
p[i]->cash+=(p[i]->xf)/100*5;printf(“今日大胃王:n”);if(!InitVoice())return;Speak(“今日大胃王”);ReleaseVoice();for(i=0;i
printf(“%st%dt%st%.2ft%.2fn”,p[i]->name,p[i]->kh,p[i]->bm,p[i]->cash,p[i]->xf);if((fp=fopen(“stu.txt”,“w”))==NULL){
printf(“ERROR!n”);
exit(0);} for(i=0;i
fprintf(fp,“%st%dt%st%.2ft%.2fn”,strshare[i].name,strshare[i].kh,strshare[i].bm,strshare[i].cash,strshare[i].xf);fclose(fp);menu();} void Tj()//财务统计 { FILE *fp;Stu strshare[MAX];int nNum=0,i;float total=0,ave;system(“cls”);printf(“*******校方统计****************n”);if(!InitVoice())return;Speak(“校方统计”);ReleaseVoice();if((fp=fopen(“stu.txt”,“r”))==NULL){
printf(“ERROR!n”);
exit(0);} while(!feof(fp)){
fscanf(fp,“%s%*c%d%*c%s%*c%f%*c%f%*c”,strshare[nNum].name,&strshare[nNum].kh,strshare[nNum].bm,&strshare[nNum].cash,&strshare[nNum].xf);
nNum++;} nNum--;fclose(fp);for(i=0;i
total+=strshare[i].xf;ave=total/nNum;printf(“今日消费总额:%.2fn学生平均消费水平:%.2fn”,total,ave);}