学生成绩管理系统、食堂饭卡系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“食堂饭卡管理系统”。
一、实验目的1.进一步熟悉数据类型、运算符、表达式、程序控制结构。2.掌握数组和动态链表的熟练使用.3.掌握指针的使用。4.掌握结构体的使用。5.学会使用函数。
6.以上知识的综合练习完成学生成绩管理系统、食堂饭卡终端系统代码的编写。7.要求实验前打印有代码的实验报告,实验课结束后交有手写修改笔记的实验报告。
二、实验环境:(硬件环境、软件环境)
1.windows 7操作系统
2.VC++编译器
三、实验过程:(内容、操作步骤、结果等)
内容一:学生成绩管理系统
需求:
建立一个学生成绩管理系统,实现对学生成绩的查询管理等操作.1.该系统可以使用管理员身份登录或者普通用户登录。2.只有管理员具有录入学生信息的权利。
3.管理员登录后有”显示全部学生信息”、”查询信息(通过名字或者学号查询)”、”排序成绩(可按 各科成绩或者平均成绩排序)”、”通过输入学生学号修改学生信息”、”删除学生”、”添加学生”、”保存信息”等功能。
4.普通用户登录有”显示全部学生信息”、”根据学号查询学生信息”。“按成绩排序”等功能。
系统代码:
#include #include #include typedef struct Student { int number;
char name[20];
float yuwen;
float shuxue;
float yingyu;
float average;}Student;Student stu[100];int stulength;char filename[50]=“student.txt”;
void savefile(){ FILE *fp;
Student *p;
int i;1
p=stu;
fp=fopen(filename,“wb”);
if(fp==NULL)
{ printf(“打开文件失败!n”);
return;
}
for(i=0;i
{ if(fwrite(p,sizeof(Student),1,fp)!=1)
printf(“保存信息失败!n”);
p++;
}
fclose(fp);} void xianshi(){ Student *p;
int i;
p=stu;
for(i=0;i
{ printf(“学号:%d 姓名:%s 语文成绩:%.2f 数学成绩:%.2f 绩:%.2fn”,p->number,p->name,p->yuwen,p->shuxue,p->yingyu,p->average);
p++;
} }
void addbyhand(){ Student *p;
int i,n;
p=stu;
printf(“请输入需要添加学生的人数:n”);
scanf(“%d”,&n);
for(i=0;i
{ printf(“请输入学号:n”);
scanf(“%d”,&(p->number));
printf(“请输入姓名n”);
scanf(“%s”,p->name);
printf(“请输入语文成绩n”);
scanf(“%f”,&(p->yuwen));
printf(“请输入数学成绩n”);
scanf(“%f”,&(p->shuxue));
printf(“请输入英语成绩n”);
scanf(“%f”,&(p->yingyu));
p->average=(p->yuwen+p->shuxue+p->yingyu)/3;
p++;
}
stulength=n;
savefile();
英语成绩:%.2f 平均成} void addbyfile(){ FILE *fp;
Student *p;
int i=0;
p=stu;
fp=fopen(filename,“rb”);
if(fp==NULL)
{ printf(“打开文件失败n”);
return;
}
while(fread(p,sizeof(Student),1,fp)==1)
{
i++;
p++;
}
fclose(fp);
stulength=i;}
void chaxun(){ int i,xz,n;
char m[20];
Student *p;
p=stu;
printf(“1->按学号查询n2->按姓名查询n”);
scanf(“%d”,&xz);
if(xz==1)
{
printf(“请输入查询的学号n”);
scanf(“%d”,&n);
for(i=0;i
{ if(p->number==n)
{ printf(“学号:%d 姓名:%s 语文成绩:%.2f 数学成绩:%.2f 绩:%.2fn”,p->number,p->name,p->yuwen,p->shuxue,p->yingyu,p->average);
break;
}
p++;
}
if(i==stulength)
printf(“没有找到该学生的信息n”);
}
if(xz==2)
{ printf(“请输入查询的姓名n”);
scanf(“%s”,&m);
for(i=0;i
{ if(strcmp(p->name,m)==0)
{ printf(“学号:%d 姓名:%s 语文成绩:%.2f 数学成绩:%.2f
英语成绩:%.2f 英语成绩:%.2f 平均成平均成绩:%.2fn”,p->number,p->name,p->yuwen,p->shuxue,p->yingyu,p->average);
break;
}
p++;
}
if(i==stulength)
printf(“没有找到该学生的信息n”);
} }
void paixu(){ int i,j,xz;
Student m;
printf(“1->按平均成绩排序n2->按语文成绩排序n3->按数学成绩排序n4->按英语成绩排序n”);
scanf(“%d”,&xz);
if(xz==1)
{ for(i=0;i
for(j=i+1;j
if(stu[i].average
{ m=stu[i];
stu[i]=stu[j];
stu[j]=m;
}
for(i=0;i
printf(“学号:%d 姓名:%s 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f 绩:%.2fn”,stu[i].number,stu[i].name,stu[i].yuwen,stu[i].shuxue,stu[i].yingyu,stu[i].average);
}
if(xz==2)
{ for(i=0;i
for(j=i+1;j
if(stu[i].yuwen
{ m=stu[i];
stu[i]=stu[j];
stu[j]=m;
}
for(i=0;i
printf(“学号:%d 姓名:%s 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f 绩:%.2fn”,stu[i].number,stu[i].name,stu[i].yuwen,stu[i].shuxue,stu[i].yingyu,stu[i].average);
}
if(xz==3)
{ for(i=0;i
for(j=i+1;j
if(stu[i].shuxue
{ m=stu[i];
stu[i]=stu[j];
stu[j]=m;
平均成平均成
}
for(i=0;i
printf(“学号:%d 姓名:%s 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f 平均成绩:%.2fn”,stu[i].number,stu[i].name,stu[i].yuwen,stu[i].shuxue,stu[i].yingyu,stu[i].average);
}
if(xz==4)
{ for(i=0;i
for(j=i+1;j
if(stu[i].yingyu
{ m=stu[i];
stu[i]=stu[j];
stu[j]=m;
}
for(i=0;i
printf(“学号:%d 姓名:%s 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f 绩:%.2fn”,stu[i].number,stu[i].name,stu[i].yuwen,stu[i].shuxue,stu[i].yingyu,stu[i].average);
} }
void tianjia(){ int i,n;
Student *p;
p=stu+stulength;
printf(“请输入需要添加学生信息的个数n”);
scanf(“%d”,&n);
for(i=stulength;i
{ printf(“请输入学号:n”);
scanf(“%d”,&p->number);
printf(“请输入姓名n”);
scanf(“%s”,p->name);
printf(“请输入语文成绩n”);
scanf(“%f”,&p->yuwen);
printf(“请输入数学成绩n”);
scanf(“%f”,&p->shuxue);
printf(“请输入英语成绩n”);
scanf(“%f”,&p->yingyu);
p->average=(p->yuwen+p->shuxue+p->yingyu)/3;
p++;
}
stulength=stulength+n;
savefile();}
void shanchu(){ Student *p,*q;
int i,n,m=0;
平均成
p=stu;
q=stu;
printf(“请输入要删除学生的学号:n”);
scanf(“%d”,&n);
for(i=0;i
{ if(p->number==n)
{ q=q+1;
m=1;
}
*p=*q;
p++;
q++;
}
if(m==1)
stulength--;
else
printf(“请输入正确的学号!n”);
savefile();}
void xiugai(){ int i,n;
Student *p;
p=stu;
printf(“请输入需要修改的学号:n”);
scanf(“%d”,&n);
for(i=0;i
{ if(p->number==n)
{
printf(“请输入语文成绩n”);
scanf(“%f”,&p->yuwen);
printf(“请输入数学成绩n”);
scanf(“%f”,&p->shuxue);
printf(“请输入英语成绩n”);
scanf(“%f”,&p->yingyu);
p->average=(p->yuwen+p->shuxue+p->yingyu)/3;
break;
}
p++;
}
if(i==stulength)
printf(“请输入正确的学号!n”);
savefile();} void administroter(){ int xz;
while(1)
{ printf(“1->添加n2->删除n3->排序n4->查询n5->显示n6->修改n0->退出n”);
scanf(“%d”,&xz);
switch(xz)
{ case 0:return;
case 1:tianjia();break;
case 2:shanchu();break;
case 3:paixu();break;
case 4:chaxun();break;
case 5:xianshi();break;
case 6:xiugai();break;
}
} }
void student(){ int xz;
while(1)
{ printf(“1->排序n2->查询n3->显示n0->退出n”);
scanf(“%d”,&xz);
switch(xz)
{ case 0:return;
case 1:paixu();break;
case 2:chaxun();break;
case 3:xianshi();break;
}
} }
int main(){ int xz;
addbyfile();
if(stulength==0)
addbyhand();
while(1)
{ printf(“**********欢迎登陆成绩管理系统**********n”);
printf(“1->管理员登陆n2->学生登录n0->退出n”);
scanf(“%d”,&xz);
switch(xz)
{ case 0:return 0;
case 1:administroter();
case 2:student();
}
} } 7
内容二:食堂饭卡终端系统
需求:1.饭卡有编号、姓名、余额、状态四个属性。
2.系统实现:添加饭卡,通过编号查询饭卡余额,通过姓名查询饭卡余额,饭卡充值,消费,挂失饭卡,饭卡解锁(消除挂失恢复正常状态),删除饭等功能。
系统代码:
#include #include #include
typedef struct Fanka {
int kh;
char name[20];float yu_e;char state;
struct Fanka *next;}Fanka;
Fanka *fankahead;int fankalenth;char filename[50]=“E:fanka.txt”;
void savefile(){
FILE *fp;
Fanka *p;int i=0;p=fankahead;fp=fopen(filename,“wb”);
if(fp==NULL){ printf(“打开文件失败!n”);
return;
} while(p!=NULL){ if(fwrite(p,sizeof(Fanka),1,fp)!=1)
printf(“保存信息失败!n”);
p=p->next;
i++;}
fclose(fp);}
void addbyhand(){
Fanka *p,*rear;
int i,n;printf(“请输入需要添加饭卡的个数:n”);
scanf(“%d”,&n);
for(i=0;i
printf(“请输入卡号:n”);
scanf(“%d”,&p->kh);
printf(“请输入姓名:n”);
scanf(“%s”,&p->name);
printf(“请输入初始余额:n”);
scanf(“%f”,&p->yu_e);
p->state='1';
if(i==0)
{ fankahead=p;
rear=p;
}
else
{ rear->next=p;
rear=p;
} }
rear->next=NULL;
fankalenth=n;savefile();}
void addbyfile(){
FILE *fp;
Fanka *p,*rear;int i=0;char c;fp=fopen(filename,“rb”);if(fp==NULL){
printf(“打开文件失败,请先建立文件!n”);
return;} if(fscanf(fp,“%c”,&c)==EOF)
addbyhand();else {
p=(Fanka *)malloc(sizeof(Fanka));
fseek(fp,0,SEEK_SET);
while(fread(p,sizeof(Fanka),1,fp)==1){ i++;
if(i==1)
{
fankahead=p;
rear=p;
}
else
{ rear->next=p;
rear=p;
}
p=(Fanka *)malloc(sizeof(Fanka));}
fclose(fp);
rear->next=NULL;
fankalenth=i;} }
void xianshi(){ Fanka *p;
p=fankahead;
while(p!=NULL)
{
if(p->state=='1')
printf(“%d %s %f 正常n”,p->kh,p->name,p->yu_e);
else
printf(“%d %s %f 挂失n”,p->kh,p->name,p->yu_e);
p=p->next;
} }
void chaxun(){
int n,m;
char na[20];
Fanka *p;p=fankahead;printf(“请选择查询的方式:
1、按卡号查询。
2、按姓名查询n”);
scanf(“%d”,&n);if(n==1)
{
printf(“请输入查询的卡号n”);
scanf(“%d”,&m);
while(p!=NULL)
{ if(p->kh==m)
{ if(p->state=='1')
printf(“%d %s %f 正常n”,p->kh,p->name,p->yu_e);
else
printf(“%d %s %f 挂失n”,p->kh,p->name,p->yu_e);
break;
}
p=p->next;
}
if(p==NULL)
printf(“没有找到该卡号的信息!n”);
}
if(n==2){ printf(“请输入查询的姓名n”);
scanf(“%s”,na);
while(p!=NULL)
{ if(p->name==na)
{
if(p->state=='1')
printf(“%d %s %f 正常n”,p->kh,p->name,p->yu_e);
else
printf(“%d %s %f 挂失n”,p->kh,p->name,p->yu_e);
break;
}
p=p->next;
}
if(p==NULL)
printf(“没有找到该卡号的信息!n”);} return;}
void guashi(){ int n;
Fanka *p;
p=fankahead;
printf(“请输入挂失的卡号!n”);
scanf(“%d”,&n);
while(p!=NULL)
{ if(p->kh==n)
{ p->state='0';
break;
}
p=p->next;
}
if(p==NULL)
printf(“此卡无效,请输入正确的卡号!n”);
savefile();}
void jiesuo(){ int n;
Fanka *p;
p=fankahead;
printf(“请输入解锁的卡号!n”);
scanf(“%d”,&n);
while(p!=NULL)
{ if(p->kh==n)
{ p->state='1';
break;
}
p=p->next;
}
if(p==NULL)
printf(“此卡无效,请输入正确的卡号!n”);
savefile();}
void chongzhi(){ int n;
float m;
Fanka *p;
p=fankahead;
printf(“请输入充值的卡号!n”);
scanf(“%d”,&n);
while(p!=NULL)
{ if(p->kh==n&&p->state=='1')
{ printf(“请输入充值的金额:n”);
scanf(“%f”,&m);
printf(“%d %s %f 正常n”,p->kh,p->name,p->yu_e+m);
break;
}
if(p->kh==n&&p->state=='0')
{
printf(“此卡已挂失,请解锁后再充值!n”);break;
}
p=p->next;
}
if(p==NULL)
printf(“此卡无效,请输入真确的卡号n”);
savefile();}
void xiaofei(){ int n;
float m;
Fanka *p;
p=fankahead;
printf(“请输入消费的卡号!n”);
scanf(“%d”,&n);
while(p!=NULL)
{ if(p->kh==n&&p->state=='1')
{ printf(“请输入消费的金额:n”);
scanf(“%f”,&m);
if(p->yu_e>m)
{
p->yu_e=p->yu_e-m;
printf(“%d %s %f 正常n”,p->kh,p->name,p->yu_e);
break;
}
else
{ printf(“余额不足,请充值后再消费!n”);
break;
}
}
if(p->kh==n&&p->state=='0')
{
printf(“此卡已挂失,请解锁后再消费!n”);break;
}
p=p->next;
}
if(p==NULL)
printf(“此卡无效,请输入正确的卡号n”);
savefile();}
void shanchu(){ int n,i=0;
Fanka *p;
p=fankahead;
printf(“请输入删除饭卡的卡号n”);
scanf(“%d”,&n);
if(fankahead->kh==n)
fankahead=p->next;
while(p->next!=NULL)
{ if(p->next->kh!=n)
p=p->next;
else
p->next=p->next->next;
}
fankalenth--;
savefile();} void tianjia(){
Fanka *p,*q;
p=fankahead;
while(p->next!=NULL){p=p->next;}
q=(Fanka *)malloc(sizeof(Fanka));printf(“请输入卡号:n”);
scanf(“%d”,&q->kh);
printf(“请输入姓名:n”);
scanf(“%s”,&q->name);
printf(“请输入初始余额:n”);
scanf(“%f”,&q->yu_e);
q->state='1';
p->next=q;
q->next=NULL;
savefile();
fankalenth++;} int studentlogin(){ int xz;while(1){ system(“CLS”);
printf(“1->显示全部饭卡信息n2->查询饭卡信息n3->饭卡挂失n4->消费n0->退出n”);
scanf(“%d”,&xz);
switch(xz){ case 0:return 0;
case 1:xianshi();break;
case 2:chaxun();break;
case 3:guashi();break;
case 4:xiaofei();break;}
system(“PAUSE”);} return 0;}
int administratorlogin(){ int xz;
while(1)
{ system(“CLS”);printf(“1->显示n2->添加饭卡n3->饭卡解锁n4->饭卡充值n5->删除饭卡n0->退出n”);scanf(“%d”,&xz);
switch(xz){ case 0:return 0;
case 1:xianshi();break;
case 2:tianjia();break;
case 3:jiesuo();break;
case 4:chongzhi();break;
case 5:shanchu();break;}
system(“PAUSE”);}
return 0;
} int main(){
int xz;
addbyfile();
while(1)
{ system(“CLS”);
printf(“************欢迎登陆食堂饭卡管理系统************n”);
printf(“请选择用户登陆身份:n1->管理员登陆n2->学生登陆n0->退出n”);
scanf(“%d”,&xz);
switch(xz)
{ case 0:return 0;
case 1:administratorlogin();break;
case 2:studentlogin();break;
}
system(“PAUSE”);
} return 0;}
食堂饭卡管理系统3人 基本功能:(1)发卡:学生员工持有效证件到管理处缴押金,办理就餐卡,操作人员将相关内容写入卡中,并自动产生编号,持卡人员再预交一定金额款项即可进行就餐。 (2) 存......
//*学生成绩管理系统*//#include#define N 3struct student{int no;char name[20];float english;float computer;float math;float average;};void getcla(struct student......
篇一:xx有限公司就餐卡申请表XX 有限公司就餐卡申请表编号:000018填表日期: 年 月 日1、就餐卡发放分类:属集团员工的发放临时就餐卡,其余外协单位一律发放白卡。2、申请表:信......
07:学生成绩管理系统【项目背景】随着多媒体技术和网络通信技术的发展,基于Internet的学生成绩管理系统作为一种全新的教学手段,越来越受到人们的关注。学生成绩管理系统是指利......
目录目 录摘要 .......................................................................................错误!未定义书签。 Abstract .......................................