c语言课程设计学生饭卡管理系统.docx

上传人:b****3 文档编号:5920238 上传时间:2023-05-09 格式:DOCX 页数:25 大小:157.80KB
下载 相关 举报
c语言课程设计学生饭卡管理系统.docx_第1页
第1页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第2页
第2页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第3页
第3页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第4页
第4页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第5页
第5页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第6页
第6页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第7页
第7页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第8页
第8页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第9页
第9页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第10页
第10页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第11页
第11页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第12页
第12页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第13页
第13页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第14页
第14页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第15页
第15页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第16页
第16页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第17页
第17页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第18页
第18页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第19页
第19页 / 共25页
c语言课程设计学生饭卡管理系统.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言课程设计学生饭卡管理系统.docx

《c语言课程设计学生饭卡管理系统.docx》由会员分享,可在线阅读,更多相关《c语言课程设计学生饭卡管理系统.docx(25页珍藏版)》请在冰点文库上搜索。

c语言课程设计学生饭卡管理系统.docx

c语言课程设计学生饭卡管理系统

1.课程设计的目的

为了熟练掌握C语言的语法特点、及其数据结构,提高自身编写程序的能力。

通过课程设计实现理论知识与实际情况的结合,使所学知识能够在现实社会中起到一定的作用,防止所编写的程序脱离实际,让程序可以更好的发挥作用,以便减轻实际工作中所遇到的繁琐步骤,提高现实工作中的效率。

此外通过课程设计提高逻辑思考能力和解决实际问题的能力。

程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。

其次课程设计有利于治学态度的培养。

程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。

因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。

这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。

银行管理系统是商业市场不可缺少的部分。

随着管理信息系统的发展会计信息系统越来越显得很重要,在信息时代基于计算机科学和通信信息系统是企业竞争的核心资源,会计信息系统与企业产品、服务和管理息息相关。

此外人工管理纯在许多缺陷,效率低。

保密性差。

时间一长给查找。

更新和维护带来诸多不便。

而相比之下使用计算机进行文件信息管理上面的问题就不复存在了。

于是编写了一个银行管理程序是十分必要的。

本程序设计具有输入、查询、更新、统计和输出等功能,操作界面简洁美观,易于操作。

程序用了条件、循环、指针、结构体等知识点,综合了文件的打开和保存编写的。

可运用于小的管理软件。

软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足用户的需要。

 

2.设计方案论证

2.1设计思路

建立一个函数,用来保存学生的学号、姓名、电话号码、班级、餐卡余额、密码等信息,完成餐厅就餐卡的功能。

主函数可以调用六个子函数,分别完成添加用户、查询用户、充值、消费、删除用户、退出系统六个功能。

在主函数中可以1、2、3、4、5、6数字键分别可以执行某个功能模块。

主要功能模块即如图1所示:

图1.就餐卡主要功能模块

程序设计

①main()主函数:

主函数十分简洁,定义了本程序

用到的各个变量及函数,然后读取文件后进

入主菜单,显示函数各功能。

其运行的流程图如图2所示。

 

 

图2.就餐卡主函数运行流程图

②select()主菜单[1],主菜单链接各个分菜单,其功能即如图1所示。

addnewcard(),添加用户函数。

searchcard(),查询用户函数。

addbalance(),充值函数函数。

charge(),收费函数函数。

deletecard(),删除用户函数。

exit(0),退出系统函数。

 

用户可以键入相应数字进入各个功能的操作界面。

同时设置一个断点,即当返回值为“6”时运行exit(0)函数来结束程序,以免造成死循环。

其运行流程图如图3所示。

 

Y

 

 

图3.就餐卡菜单函数流程图

 

③newrecord()添加用户菜单。

餐厅管理人员可以按需要根据提示来直接添加学生用户,每次添加完毕系统会询问“是否继续添加?

(Y/N)”当返回值为“n”或不是系统要求输入数值时,系统自动保存数据并返回主菜单。

④searchcard()查询用户[2]。

在主菜单输入“2”时自动进入查询学生信息,每次当输入卡号不存在时系统自动警告没有该用户。

查询结束按任意键返回主菜单。

其流程图如图4所示。

⑤addbalance()、charge(),充值/收费模块[3]。

这两个模块十分相似餐厅管理人员只要输入所要充值学生的学号,就可以对相应学生充值或者扣除相应金额,操作十分简单。

充值或扣费结束后系统自动显示操作后该学生信息并自动保存。

餐卡充值运行流程图如图5所示。

收费流程图类似充值,不再重复。

⑥deletecard()删除用户模块[5]。

餐卡管理人员可以通过该模块选择删除需要注销的就餐卡。

如果餐卡内余额不为零,系统则提示返还相应金额给学生。

 

图4.查询用户流程图

 

图5.充值流程图

.源程序

#include<>

#include<>

#include<>

#include<>

#include<>

structrecord

{

charcardnumber[10];

charname[20];

charphone[20];

charclassn[40];

charpassword[10];

intbalance;

}

student[500];

intnum=0;/*外部变量num为文件中的纪录数*/

FILE*fp;

voidselect();/*主菜单*/

voidaddnewcard();/*添加用户*/

voidsearchcard();/*查询用户*/

voidreadfile();/*读取文件*/

voiddeletecard();/*删除用户*/

voidaddbalance();/*充值*/

voidpassword();/*密码*/

voidcharge();/*收费*/

voidmain()/*主函数*/

{

readfile();/*读取文件*/

while

(1)

{

select();/*主菜单*/

}

}

voidreadfile()/*导入文件,打开欢迎进入界面*/

{

if((fp=fopen("","rb"))==NULL)

{

if((fp=fopen("","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(structrecord),1,fp);num++);

return;

}

}

voidselect()/*主菜单*/

{

charchoic;

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************************************************");

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':

exit(0);

default:

select();

}

}

voidaddnewcard()/*添加用户*/

{

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;

}

voidsearchcard()/*查询用户*/

{

intmark=0;

inti;

inta=0;

printf("\n\t\t*****************按学号查找*****************\n");

charcardnumber[10];

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;

}

}

voidaddbalance()/*充值*/

{

inti;

intm;

inta=0;

printf("\n\t\t***************按学号添加金额***************\n");

charcardnumber[10];

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;

}

}

}

voidcharge()/*收费*/

{

inti;

intk;

inta=0;

printf("\n\t\t*****************按学号扣费*****************\n");

charcardnumber[10];

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",&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;

}

}

}

voiddeletecard()/*删除用户*/

{

inti,j;

intdeletemark=0;

charcardnumber[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)==NULL)

{

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;j

student[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;

}

}

voidwritetofile()/*保存文件*/

{

inti;

if((fp=fopen("","wb"))==NULL)

{

printf("\n\t\t文件打开失败");

}

for(i=0;i

{

if(fwrite(&student[i],sizeof(structrecord),1,fp)!

=1)

{

printf("\n\t\t写入文件错误!

\n");

}

}

fclose(fp);

printf("\n\t\t餐卡系统文件已保存");

printf("\n\t\t按任意键退出程序\n\t\t");

exit(0);

}

 

3.设计结果与分析

①在MicrosoftVisualC++软件中输入源程序,在没有提示错误的情况下编译,生成相应的后缀为“”的可执行文件。

双击文件,可以看到如图6所示的界面。

图6.运行程序进入的主菜单界面

运行主函数时,首先调用readfile()读取文件[2],读取成功后运行select()主菜单函数,打开主菜单函数界面。

函数使用switch语句实现各功能模块的转移。

用getch()来获取餐厅工作人员的选择数据,分别调用相应的自定义函数。

从而实现对各个函数的调用。

②在输入“1”后会提示“请输入学生信息”这时餐厅管理人员可以根据需要按照提示分别输入学生的学号、姓名、电话号码、班级、密码及充值金额。

输入完毕后系统自动提示是不是继续添加学生信息。

其运行效果图如图7所示。

图7.添加用户界面

这一函数实现了对字符串赋值的功能[3]。

系统提示餐厅管理人员输入相应信息,然后用scanf函数获取输入数据。

每次输入结束后,系统输出询问是否继续添加的信息,然后执行if语句,如果返回值是“y

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 判决书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2