#include<stdio.h>
#include<string.h>
#define M 1000
typedef struct students
{
char D_number[100];//学生所在寝室的宿舍号
char S_number[16];//学生学号
char S_name[31];//学生姓名
char S_sex[3];//学生性别
char S_class[31];//学生专业班级
char S_phone[20];//学生电话号码
int bed_number[3];// 床位
char S_cost1[100]; //住宿费
char S_cost2[200]; //网费
int D_fraction[100]; //学生所在寝室的卫生评分
char S_cost; //交费情况
}student;
//struct student s[M];
void mainMenu();
char key[20]="";
int Readfile(student s[]);
void search1(student s[] , int n, char key[]);
void outputToFile(student s[] , int n, char filename[],char mode[]);
void search2(student s[] , int n);
//读入文件学生信息
int Readfile(student s[])
{
FILE *fp=NULL;
int i=0;
student x;
char filename[20]="";
puts("请输入要打开的文件名: ");
gets(filename);
fp=fopen(filename,"r");
if(fp==NULL)
{
printf("文件打开失败!");//exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%d:%s%s%s%s%s%s%d%s%s%d%s",i+1,x.D_number,x.S_number,x.S_name,x.S_sex,x.S_class,x.S_phone,x.bed_number,x.S_cost1,
x.S_cost2,x.D_fraction,x.S_cost);
s[i]=x;
i++;
}
printf("已经读入学生信息\n");
fclose(fp);
return (i-1);
}
//将学生信息保存到文件
void outputToFile(student s[] , int n,char filename[],char mode[ ])
{
FILE *fp = NULL;
student x;
int i;
fp=fopen(filename,mode);
if(fp==NULL)
{
printf("file open falsed!");
}
for(i=0;i<n;i++)
{
x = s[i];
fprintf(fp,"%s%s%s%s%s%s%d%s%s%d%s",x.D_number,x.S_number,x.S_name,x.S_sex,x.S_class,x.S_phone,x.bed_number,x.S_cost1,
x.S_cost2,x.D_fraction,x.S_cost);
}
fclose(fp);
}
//按照学号查找学生费用并输出
void search1(student s[] , int n, char key[])
{
student x;
student t[50];
Readfile(s);
int i=0,k=0;
while(i<n)
{
x = s[i];
if(strcmp(key,x.S_number)==0)
{
printf("%d:%s%s%s%s%s%s%d%s%s%d%s",i+1,x.D_number,x.S_number,x.S_name,x.S_sex,x.S_class,x.S_phone,x.bed_number,x.S_cost1,
x.S_cost2,x.D_fraction,x.S_cost);
if(strcmp(x.S_cost,"1")==0)
printf("住宿费和网费已交 \n");
else printf("住宿费 %s和网费 %s未交",x.S_cost1,x.S_cost2);
}
break;
t[k] = x;
i++;
k++;
}
outputToFile(t,k,"charge.txt","w"); // 将查询结果保存到文件
}
//查询并输出未交费人名单
void search2(student s[],int n)
{
student x;
student g[M] ;
int i,b=0;
for(i=0;i<n;i++)
{
x = s[i];
if(strcmp("0",x.S_cost)==0)
{
printf(" %d:%s%s%s%s%s%s%d%s%s%d%s",i+1,x.D_number,x.S_number,x.S_name,x.S_sex,x.S_class,x.S_phone,x.bed_number,x.S_cost1,
x.S_cost2,x.D_fraction,x.S_cost);
}
g[b]=x;
b++;
}
outputToFile(g,b,"uncharge.txt","w"); // 将查询结果保存到文件
}
int main( )
{
student s[M];
int n=0; //实际学生人数
n=Readfile(s);
//printAll(s,n);
puts("请输入:学生学号");
gets(key);
search1(s,n,key);
search2(s,n);
return 0;
}
数据结构 学生宿舍管理系统的费用管理,哪位大神能帮我看看有什么问题吗?不能读入文件
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- wlj1234 2020-12-08 15:07关注
可能是文件路径问题,如果只输入文件名,VS调试模式下搜索的路径是工程目录下的文件,直接运行exe程序,搜索的是exe所在的目录!
解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何提取全民K歌没下载过但播放过很多次的音频?
- ¥15 树莓派运行detect.py
- ¥15 pdfplumber提起文本内容如何过滤水印内容
- ¥15 kingbase容器启动失败,sudo:/bin/sudo must be owned by uid 0 and have the setuid bit set
- ¥20 黑神话悟空调用机械硬盘导致卡顿
- ¥15 vue中使用antv-x6
- ¥15 qt编译失败,环境变量已加,但还是报错
- ¥15 用顺序表实现学生信息的管理: 学生类(Student):学号(no)、姓名(name)、分数(double),对学生信息进行存取、插入、删除、查找操作,给出代码和运行结果图。
- ¥15 minted包显示缩进符的问题
- ¥15 根据图片连接电路51单片机proteus汇编语言仿真4位数码管静态显示