行动起来! 2020-12-08 11:18 采纳率: 0%
浏览 18

数据结构 学生宿舍管理系统的费用管理,哪位大神能帮我看看有什么问题吗?不能读入文件

#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;
}

  • 写回答

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位数码管静态显示