
以前用java编程,数据一般是保留在数据库的,这下数据在文件里了,晕了,高手帮下忙,万分谢谢了,,,
以前用java编程,数据一般是保留在数据库的,这下数据在文件里了,晕了,高手帮下忙,谢谢了,谢谢了,,编程环境要求使用VC++6.0问题是:假设有文件C:\f11.txt...
以前用java编程,数据一般是保留在数据库的,这下数据在文件里了,晕了,高手帮下忙,谢谢了,谢谢了,,
编程环境要求使用VC++6.0
问题是:假设有文件C:\f11.txt,其中保存着一批学生的3门考试成绩,第一个数据为学号,每位学生一行,格式如下:
001 67.5 86.5 33
002 90 98 66
003 60 69 80
……
编写程序实现功能:
a、 把这个文件的全部数据复制到新文件C:\f11a.txt中去,在C:\f11a.txt中每位学生的3门成绩后面增加一项平均成绩,5项数据之间用制表符或者空格符分隔。
b、 接收用户从键盘输入的学号,查询文件C:\f11a.txt,找到和用户输入学号相同的一行学生信息,并且输出该行学生信息。 展开
编程环境要求使用VC++6.0
问题是:假设有文件C:\f11.txt,其中保存着一批学生的3门考试成绩,第一个数据为学号,每位学生一行,格式如下:
001 67.5 86.5 33
002 90 98 66
003 60 69 80
……
编写程序实现功能:
a、 把这个文件的全部数据复制到新文件C:\f11a.txt中去,在C:\f11a.txt中每位学生的3门成绩后面增加一项平均成绩,5项数据之间用制表符或者空格符分隔。
b、 接收用户从键盘输入的学号,查询文件C:\f11a.txt,找到和用户输入学号相同的一行学生信息,并且输出该行学生信息。 展开
2个回答
展开全部
同求答案,顺便问下,lz是不是哈工研究生的入学题???
自己做了一半,拷给你。。。
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
char id[3];
float score [3];
float rank;
}Student;
int main ()
{
Student s;
FILE * fp;
fp=fopen("C:\\f11.txt","r+");
if (!fp)
{
printf("file cannot be opened");
exit(1);
}
fscanf(fp,"%s%f%f%f",&s.id,&s.score[0],&s.score[1],&s.score[2]);
//fprintf(stdout,"%g",s.score[2]);
FILE * fw;
fw=fopen("c:\\f11a.txt","wb+");
if (!fw)
{
printf("file cannot be opened");
exit(1);
}
while(!feof(fp))
{
s.rank=(s.score[0]+s.score[1]+s.score[2])/3;
fprintf(fw,"%s\t%.1f\t%.1f\t%.1f\t%.1f\n",s.id,s.score[0],s.score[1],s.score[2],s.rank);
fscanf(fp,"%s%f%f%f",&s.id,&s.score[0],&s.score[1],&s.score[2]);
}
fclose(fw);
fclose (fp);
printf("please view c:\\f11a.txt;\n");
return 0;
}
自己做了一半,拷给你。。。
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
char id[3];
float score [3];
float rank;
}Student;
int main ()
{
Student s;
FILE * fp;
fp=fopen("C:\\f11.txt","r+");
if (!fp)
{
printf("file cannot be opened");
exit(1);
}
fscanf(fp,"%s%f%f%f",&s.id,&s.score[0],&s.score[1],&s.score[2]);
//fprintf(stdout,"%g",s.score[2]);
FILE * fw;
fw=fopen("c:\\f11a.txt","wb+");
if (!fw)
{
printf("file cannot be opened");
exit(1);
}
while(!feof(fp))
{
s.rank=(s.score[0]+s.score[1]+s.score[2])/3;
fprintf(fw,"%s\t%.1f\t%.1f\t%.1f\t%.1f\n",s.id,s.score[0],s.score[1],s.score[2],s.rank);
fscanf(fp,"%s%f%f%f",&s.id,&s.score[0],&s.score[1],&s.score[2]);
}
fclose(fw);
fclose (fp);
printf("please view c:\\f11a.txt;\n");
return 0;
}
追问
是研究生的入学题,但不是哈工呢
追答
是哪个学校的啊???怎么都类似的么??第二问应该不难了,稍微会点的。就可以了自己写了。
BOOL SearchStu(FILE * fp, char id[3])
{
Student s;
fp=fopen("C:\\f11a.txt","r");
if (!fp)
{
printf("File cannot be opened");
exit(1);
}
while (!feof(fp))
{
fscanf(fp,"%s%f%f%f%f",&s.id,&s.score[0],&s.score[1],&s.score[2],&s.rank);
if(!(strcmp(s.id,id)))
{
printf("%s\t%.1f\t%.1f\t%.1f\t%.1f\n",s.id,s.score[0],s.score[1],s.score[2],s.rank);
return TRUE;
}
}
fclose(fp);
printf("Don't have this student!\n");
return FALSE;
}
main函数里 小小的加几句,我就不加了,作业我做完了,分也该给我吧。。
展开全部
这是一部分。仅支持a功能
如果想支持b功能,就用在类sdf中声明一个集合成员变量
并且新建一个student类。
集合成员变量声明如下:
ArrayList<Student> students;
import java.util.*;
import java.io.*;
public class sdf {
String filename1="E://f11.txt";
String filename2="f11a.txt";
BufferedReader reader;
StringTokenizer token;
PrintWriter writer;
public sdf() {
init();
}
public void init(){
try {
reader=new BufferedReader(new InputStreamReader(new FileInputStream(filename1)));
writer=new PrintWriter(new File(filename2));
String line=null;
while((line=reader.readLine())!=null){
token=new StringTokenizer(line," ");
if(token.countTokens()==4){
String t1=token.nextToken();
String t2=token.nextToken();
String t3=token.nextToken();
String t4=token.nextToken();
writer.println(t1+" "+t2+" "+t3+" "+" "+t4+" "+((Double.parseDouble(t2)+Double.parseDouble(t3)+Double.parseDouble(t4))/3));
}else {
System.out.println("文件格式不对,应该每一行有四个数字");
System.exit(0);
}
}
writer.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String args[]){
sdf k=new sdf();
}
}
如果想支持b功能,就用在类sdf中声明一个集合成员变量
并且新建一个student类。
集合成员变量声明如下:
ArrayList<Student> students;
import java.util.*;
import java.io.*;
public class sdf {
String filename1="E://f11.txt";
String filename2="f11a.txt";
BufferedReader reader;
StringTokenizer token;
PrintWriter writer;
public sdf() {
init();
}
public void init(){
try {
reader=new BufferedReader(new InputStreamReader(new FileInputStream(filename1)));
writer=new PrintWriter(new File(filename2));
String line=null;
while((line=reader.readLine())!=null){
token=new StringTokenizer(line," ");
if(token.countTokens()==4){
String t1=token.nextToken();
String t2=token.nextToken();
String t3=token.nextToken();
String t4=token.nextToken();
writer.println(t1+" "+t2+" "+t3+" "+" "+t4+" "+((Double.parseDouble(t2)+Double.parseDouble(t3)+Double.parseDouble(t4))/3));
}else {
System.out.println("文件格式不对,应该每一行有四个数字");
System.exit(0);
}
}
writer.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String args[]){
sdf k=new sdf();
}
}
追问
谢谢您呢,要是给全就好了呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询