#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
typedef struct student
{
char id[20];//学号
char name[10];//姓名
char sex[10];//性别
char bothdate[20];//出生年月
char jor[20];//专业
char like[50];//爱好
int sore;//成绩
float money;//消费记录
}student;
student soredata[200];//存蓄成绩数据
student moneydata[200];//存储消费金额数据
int snum;//成绩数据个数
int mnum;//消费数据个数
void SorePrintf(student p)
{
printf("--------------------------------------------\n");
printf("学号:%s 姓名:%s 性别: %s\n",p.id,p.name,p.sex);
printf("出生年月:%s 专业:%s 爱好: %s\n",p.bothdate,p.jor,p.like);
printf("成绩: %d\n",p.sore);
printf("--------------------------------------------\n");
}
void MoneyPrintf(student p)
{
printf("--------------------------------------------\n");
printf("学号:%s 姓名:%s 性别: %s\n",p.id,p.name,p.sex);
printf("出生年月:%s 专业:%s 爱好: %s\n",p.bothdate,p.jor,p.like);
printf("消费额: %.1f\n",p.money);
printf("--------------------------------------------\n");
}
void read()//读文件数据
{
//文件
FILE *fp;
//以读的方式打开文件
fp=fopen("score.txt","r");
if(fp==NULL)
{
printf("打开文件失败!\n");
return;
}
snum =0;
while(!feof(fp))
{
//读文件数据到数组
fscanf(fp,"%s%s%s",soredata[snum].id,soredata[snum].name,soredata[snum].sex);
fscanf(fp,"%s%s%s",soredata[snum].bothdate,soredata[snum].jor,soredata[snum].like);
fscanf(fp,"%d",&soredata[snum].sore);
snum++;//个数加1
}
//关闭文件
fclose(fp);
//以读的方式打开文件
fp=fopen("money.txt","r");
if(fp==NULL)
{
printf("打开文件失败!\n");
return;
}
mnum =0;
while(!feof(fp))
{
//读文件数据到数组
fscanf(fp,"%s%s%s",moneydata[mnum].id,moneydata[mnum].name,moneydata[mnum].sex);
fscanf(fp,"%s%s%s",moneydata[mnum].bothdate,moneydata[mnum].jor,moneydata[mnum].like);
fscanf(fp,"%f",&moneydata[mnum].money);
mnum++;//个数加1
}
//关闭文件
fclose(fp);
}
void SaveScore()//保存数据
{
//文件
FILE *fp;
int i;
//以读的方式打开文件
fp=fopen("score.txt","w");
if(fp==NULL)
{
printf("打开文件失败!\n");
exit(0);
}
for(i=0;i<snum-1;i++)
{
fprintf(fp,"%s %s %s ",soredata[i].id,soredata[i].name,soredata[i].sex);
fprintf(fp,"%s %s %s ",soredata[i].bothdate,soredata[i].jor,soredata[i].like);
fprintf(fp,"%d\n",soredata[i].sore);
}
fprintf(fp,"%s %s %s ",soredata[i].id,soredata[i].name,soredata[i].sex);
fprintf(fp,"%s %s %s ",soredata[i].bothdate,soredata[i].jor,soredata[i].like);
fprintf(fp,"%d",soredata[i].sore);
//关闭文件
fclose(fp);
}
void SaveMoney()//保存数据
{
//文件
FILE *fp;
int i;
//以读的方式打开文件
fp=fopen("money.txt","w");
if(fp==NULL)
{
printf("打开文件失败!\n");
exit(0);
}
for(i=0;i<mnum-1;i++)
{
fprintf(fp,"%s %s %s ",moneydata[i].id,moneydata[i].name,moneydata[i].sex);
fprintf(fp,"%s %s %s ",moneydata[i].bothdate,moneydata[i].jor,moneydata[i].like);
fprintf(fp,"%.1f\n",moneydata[i].money);
}
fprintf(fp,"%s %s %s ",moneydata[i].id,moneydata[i].name,moneydata[i].sex);
fprintf(fp,"%s %s %s ",moneydata[i].bothdate,moneydata[i].jor,moneydata[i].like);
fprintf(fp,"%.1f",moneydata[i].money);
//关闭文件
fclose(fp);
}
void AddScore()
{
printf("请输入学号:");
scanf("%s",soredata[snum].id);
printf("请输入姓名:");
scanf("%s",soredata[snum].name);
printf("请输入性别:");
scanf("%s",soredata[snum].sex);
printf("请输入出生年月(2000-02):");
scanf("%s",soredata[snum].bothdate);
printf("请输入专业:");
scanf("%s",soredata[snum].jor);
printf("请输入爱好:");
scanf("%s",soredata[snum].like);
printf("请输入成绩:");
scanf("%d",&soredata[snum].sore);
snum++;//加1
SaveScore();
printf("添加成功\n");
printf("任意键回到菜单....\n");
getch();
}
void AddMoney()
{
printf("请输入学号:");
scanf("%s",moneydata[mnum].id);
printf("请输入姓名:");
scanf("%s",moneydata[mnum].name);
printf("请输入性别:");
scanf("%s",moneydata[mnum].sex);
printf("请输入出生年月(2000-02):");
scanf("%s",moneydata[mnum].bothdate);
printf("请输入专业:");
scanf("%s",moneydata[mnum].jor);
printf("请输入爱好:");
scanf("%s",moneydata[mnum].like);
printf("请输入消费金额:");
scanf("%f",&moneydata[mnum].money);
mnum++;
SaveMoney();
printf("添加成功\n");
printf("任意键回到菜单....\n");
getch();
}
void FindScore()//查询
{
int i;
char id[20];
printf("请输入需要查询的学号:\n");
scanf("%s",id);
for(i =0;i<snum;i++)
{
if(strcmp(soredata[i].id,id) == 0)
{
printf("查找到的信息如下:\n");
SorePrintf(soredata[i]);
printf("任意键回到菜单....\n");
getch();
return;
}
}
printf("信息不存在\n");
printf("任意键回到菜单....\n");
getch();
}
void FindMoney()//查询
{
int i;
char id[20];
printf("请输入需要查询的学号:\n");
scanf("%s",id);
for(i =0;i<mnum;i++)
{
if(strcmp(moneydata[i].id,id) == 0)
{
printf("查找到的信息如下:\n");
MoneyPrintf(moneydata[i]);
printf("任意键回到菜单....\n");
getch();
return;
}
}
printf("信息不存在\n");
printf("任意键回到菜单....\n");
getch();
}
void FixScore()//修改
{
int i;
char id[20];
printf("请输入需要修改的学号:\n");
scanf("%s",id);
for(i =0;i<snum;i++)
{
if(strcmp(soredata[i].id,id) == 0)
{
printf("修改前信息如下:\n");
SorePrintf(soredata[i]);
printf("请输入修改后的成绩:\n");
scanf("%d",&soredata[i].sore);
SaveScore();//保存
printf("修改成功");
printf("任意键回到菜单....\n");
getch();
return;
}
}
printf("信息不存在\n");
printf("任意键回到菜单....\n");
getch();
}
void FixMoney()//修改
{
int i;
char id[20];
printf("请输入需要修改的学号:\n");
scanf("%s",id);
for(i =0;i<mnum;i++)
{
if(strcmp(moneydata[i].id,id) == 0)
{
printf("查找到的信息如下:\n");
MoneyPrintf(moneydata[i]);
printf("请输入修改后的消费金额:\n");
scanf("%f",&moneydata[i].money);
SaveMoney();//保存
printf("修改成功\n");
printf("任意键回到菜单....\n");
getch();
return;
}
}
printf("信息不存在\n");
printf("任意键回到菜单....\n");
getch();
}
void DeleScore()//删除
{
int i;
char id[20];
printf("请输入需要删除的学号:\n");
scanf("%s",id);
for(i =0;i<snum;i++)
{
if(strcmp(soredata[i].id,id) == 0)
{
printf("删除信息如下:\n");
SorePrintf(soredata[i]);
for(;i<snum;i++)
{
soredata[i] = soredata[i+1];
}
snum--;
SaveScore();
printf("删除成功\n");
printf("任意键回到菜单....\n");
getch();
return;
}
}
printf("信息不存在\n");
printf("任意键回到菜单....\n");
getch();
}
void DeleMoney()//删除
{
int i;
char id[20];
printf("请输入需要删除的学号:\n");
scanf("%s",id);
for(i =0;i<mnum;i++)
{
if(strcmp(moneydata[i].id,id) == 0)
{
printf("删除信息如下:\n");
MoneyPrintf(moneydata[i]);
for(;i<mnum;i++)
{
moneydata[i] = moneydata[i+1];
}
mnum--;
SaveMoney();//保存
printf("删除成功\n");
printf("任意键回到菜单....\n");
getch();
return;
}
}
printf("信息不存在\n");
printf("任意键回到菜单....\n");
getch();
}
void ShowScore()
{
int i;
int total=0;
for(i =0;i<snum;i++)
{
SorePrintf(soredata[i]);
total = total + soredata[i].sore;//计算总成绩
}
printf("总成绩:%d\n",total);
printf("任意键回到菜单....\n");
getch();
}
void ShowMoney()
{
int i;
float total=0;
for(i =0;i<mnum;i++)
{
MoneyPrintf(moneydata[i]);
total = total + moneydata[i].money;//计算总成绩
}
printf("总消费金额:%.1f\n",total);
printf("任意键回到菜单....\n");
getch();
}
void ScoreMenu()
{
char ch;
system("cls");
printf("**************************************\n");
printf("** 欢迎来到学生成绩模块 **\n");
printf("** **\n");
printf("** 1.添加信息 **\n");
printf("** **\n");
printf("** 2.查询信息 **\n");
printf("** **\n");
printf("** 3.修改信息 **\n");
printf("** **\n");
printf("** 4.删除信息 **\n");
printf("** **\n");
printf("** 5.显示所有 **\n");
printf("** **\n");
printf("** 6.返回上一层 **\n");
printf("** **\n");
printf("** 7.退出系统 **\n");
printf("** **\n");
printf("**************************************\n");
printf("请输入序号: ");
//输入选择
scanf("%c",&ch);
switch(ch){
case '1':
AddScore();
break;
case '2':
FindScore();
break;
case '3':
FixScore();
break;
case '4':
DeleScore();
break;
case '5':
ShowScore();
break;
case '6':
return;
break;
case '7':
exit(0);
break;
default:
break;
}
ScoreMenu();
}
void MoneyMenu()
{
char ch;
system("cls");
printf("**************************************\n");
printf("** 欢迎来到学生消费管理模块 **\n");
printf("** **\n");
printf("** 1.添加信息 **\n");
printf("** **\n");
printf("** 2.查询信息 **\n");
printf("** **\n");
printf("** 3.修改信息 **\n");
printf("** **\n");
printf("** 4.删除信息 **\n");
printf("** **\n");
printf("** 5.显示所有 **\n");
printf("** **\n");
printf("** 6.返回上一层 **\n");
printf("** **\n");
printf("** 7.退出系统 **\n");
printf("** **\n");
printf("**************************************\n");
printf("请输入序号: ");
//输入选择
scanf("%c",&ch);
switch(ch){
case '1':
AddMoney();
break;
case '2':
FindMoney();
break;
case '3':
FixMoney();
break;
case '4':
DeleMoney();
break;
case '5':
ShowMoney();
break;
case '6':
return;
break;
case '7':
exit(0);
break;
default:
break;
}
MoneyMenu();
}
void Menu()
{
char ch;
system("cls");
printf("**************************************\n");
printf("** 欢迎来到学生信息系统 **\n");
printf("** **\n");
printf("** 1.成绩管理模块 **\n");
printf("** **\n");
printf("** 2.消费管理模块 **\n");
printf("** **\n");
printf("** 3.退出系统 **\n");
printf("** **\n");
printf("**************************************\n");
printf("请输入序号: ");
//输入选择
scanf("%c",&ch);
switch(ch){
case '1':
ScoreMenu();
break;
case '2':
MoneyMenu();
break;
case '3':
exit(0);
break;
default:
break;
}
Menu();
}
int main()
{
read();
Menu();
while(1);
}