一.头文件部分
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
二.结构体
typedef struct student
{
char id[20];//学号
char name[10];//姓名
char sex[10];//性别
char bothdate[20];//出生年月
char jor[20];//专业
char like[50];//爱好
int yuwen; // 语文
int shuxue;// 数学
int waiyu; // 外语
int sore;//个人总成绩
float money;//消费记录
}student;
三. 函数声明
1. void SorePrintf(student p) // 查询学生信息时的输出内容
2. void MoneyPrintf(student p) // 查询学生消费时的输出内容
3. void read()//读文件数据
4. void SaveScore()//保存数据
5. void SaveMoney()//保存数据
6. void AddScore() //录入学生信息函数
7. void AddMoney() //录入学生消费信息
8. void FindScore()//(1)查询学生成绩信息
9. void FindMoney()//查询学生消费信息
10. void FindMoney()//查询学生消费信息
11. void FixScore() //(1)修改学生成绩信息
12. void FixMoney()//(2)修改学生消费信息
13. void DeleScore()//(1)删除成绩信息模块中学生信息
14. void DeleMoney()//(2)删除消费信息模块中学生信息
15. void SortScore() //学生成绩排名模块
16. void ShowScore() //展示学生信息
17. void ShowMoney() //计算总消费
18. void ScoreMenu() //学生成绩模块菜单
19. void MoneyMenu() //学生消费管理模块菜单
20. void Menu() //主菜单
五. 主函数
int main()
{
read(); //读取部分
Menu(); //菜单部分
while(1);
}
六. 代码实现
/*
一:项目名称:《学生综合管理系统》
二:项目需求 :1. 学生信息管理系统: (1)学生成绩排名模块 √
(2)修改学生信息模块 √
(3)删除学生信息模块 √
(4)查询学生信息模块 √
(5)录入学生信息模块 √
(6)显示所有学生信息 √
2. 学生消费管理信息系统: (1) 录入学生消费信息模块 √
(2) 查询学生消费信息模块 √
(3) 删除学生消费信息模块 √
(4) 显示学生消费信息模块 √
(5) 修改学生消费信息模块 √
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
//#include <dos.h>
#include <windows.h>
#define LEN sizeof(struct student)
typedef struct student
{
char id[20];//学号
char name[10];//姓名
char sex[10];//性别
char bothdate[20];//出生年月
char jor[20];//专业
char like[50];//爱好
int yuwen; // 语文
int shuxue;// 数学
int waiyu; // 外语
int sore;//个人总成绩
float money;//消费记录
}student;
student soredata[200];//存蓄成绩数据
student moneydata[200];//存储消费金额数据
int snum=0;//成绩数据个数
int mnum=0;//消费数据个数
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 数学成绩:%d 外语成绩:%d\n",p.yuwen,p.shuxue,p.waiyu);
p.sore=p.yuwen+p.shuxue+p.waiyu;
printf("个人总成绩: %d\n",p.sore);
printf("--------------------------------------------\n");
// printf("总人数=%d",snum);
}
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%d%d%d",&soredata[snum].yuwen,&soredata[snum].shuxue,&soredata[snum].waiyu,&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 %d %d ",soredata[i].yuwen,soredata[i].shuxue,soredata[i].waiyu);
soredata[i].sore=soredata[i].yuwen+soredata[i].shuxue+soredata[i].waiyu;
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);
soredata[i].sore=soredata[i].yuwen+soredata[i].shuxue+soredata[i].waiyu;
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].yuwen);
printf("请输入数学成绩:");
scanf("%d",&soredata[snum].shuxue);
printf("请输入外语成绩:");
scanf("%d",&soredata[snum].waiyu);
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()//(1)查询学生成绩信息
{
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()//(1)修改学生成绩信息
{
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()//(2)修改学生消费信息
{
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()//(1)删除成绩信息模块中学生信息
{
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()//(2)删除消费信息模块中学生信息
{
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 SortScore() //学生成绩排名模块
{
FILE *fp;
student t;
int i=0,j=0;
fp=fopen("score.txt","r+");
if(snum==0){
printf("文件中没有记录!\n");
return ;
}
for(i=0;i<snum-1;i++){
for(int j=i+1;j<snum;j++){
if(soredata[i].sore<soredata[j].sore){
t=soredata[i];
soredata[i]=soredata[j];
soredata[j]=t;
}
}
}
for(i=0;i<snum;i++){
// if(fwrite(&soredata[i],LEN,1,fp)!=1)
// {
printf("第%d名:\n",i+1);
SorePrintf(soredata[i]);
getch();
// }
}
fclose(fp);
printf("保存成功!\n");
}
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("** **\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("** 8.退出系统 **\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':
SortScore(); //成绩排名
break;
case '6':
ShowScore();
break;
case '7':
return;
break;
case '8':
exit(0);
break;
default:
break;
}
ScoreMenu();
}
void MoneyMenu() //学生消费管理模块菜单
{
char ch;
system("cls");
printf("**************************************\n");
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("** **\n");
printf("** 1.成绩管理模块 **\n");
printf("** **\n");
printf("** 2.消费管理模块 **\n");
printf("** **\n");
printf("** 3.退出系统 **\n");
printf("** **\n");
printf("**************************************\n");
system("color C");
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);
}
七. 效果实现