#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define LEN 15
#define N 10
struct score
{
int ID;//学号//
char cn;//课程编号//
char ct;//课程名称//
int credit;//学分//
int up;//平时成绩//
int ter;//实验成绩//
int qpg;//卷面成绩//
double cp;//综合成绩//
double tac;//实得学分//
};
struct stu
{
const char *ID;//学号//
char name;//姓名//
int tel;//电话号码//
const char *tdn;//宿舍号码//
char sex;//性别//
};
void help();
void sort(score s2[]);
void menu();
void readfile();
void writefile();
void del(stu s1[],score s2[]);
void seek(stu s1[],score s2[]);
int main()
{
void readfile();
void writefile();
while(1)
{
menu();
}
system("pause");
return 0;
}
void menu()
{
int num;
stu s1[LEN];
score s2[LEN];
printf(" \n\n \n\n");
printf("*******学生信息管理系统********\n");
printf("*****欢迎使用学生信息管系统****\n");
printf("-------------------------------\n");
printf("***** 系统功能菜单 *****\n");
printf("-------------------------------\n");
printf("* 1.系统帮助 * * 2.查询 **\n");
printf("*******************************\n");
printf("* 3.排序 * * 4.删除 ****\n");
printf("*******************************\n");
printf("* 5.退出系统 *\n");
printf("***************\n");
printf("-------------- --------------\n");
printf("请选择功能编号\n");
scanf_s("%d",&num);
switch (num)
{
case 1:help();break;
case 2:seek(s1,s2);break;
case 3:sort(s2);break;
case 4:del(s1,s2);break;
case 5:
num=0;
printf("即将退出系统!\n");
break;
default:("请在1-5之间选择\n");
}
}
void readfile(char *fname,stu s[])
{
FILE *fp;
int j=0;
fp=fopen("D:\\A.txt","r");
if(fp==NULL);
fscanf_s(fp,"%s %s %s %d %s\n",&s[j].ID,&s[j].name,&s[j].sex,&s[j].tel,&s[j].tdn);
while(fp!=0)
{
j++;
fscanf_s(fp,"%s %s %s %d %s\n",&s[j].ID,&s[j].name,&s[j].sex,&s[j].tel,&s[j].tdn);
}
fclose(fp);
}
void writefile(char *fame,score s[])
{
printf("请输入新建文件名\n");
scanf("%s","D://B.TXT");
FILE *fp;
int i;
fp=fopen("D://B.TXT","w");
if(fp==0);
{
printf("文件打开失败!\n");
}
for(i=0;i<N;i++)
{
if(s[i].ter<0)
{
s[i].cp=s[i].up*0.3+s[i].qpg*0.7;
}
else
{
s[i].cp=s[i].up*0.15+s[i].ter*0.15+s[i].qpg*0.7;
}
if(s[i].cp<60) {s[i].tac=s[i].tac*0;}
if(s[i].cp>=60&&s[i].cp<70) {s[i].tac=s[i].tac*0.6;}
if(s[i].cp>=70&&s[i].cp<=80) {s[i].tac=s[i].tac*0.75;}
if(s[i].cp>=80&&s[i].cp<90) {s[i].tac=s[i].tac*0.8;}
if(s[i].cp>=90&&s[i].cp<100) {s[i].tac=s[i].tac;}
}
for(i=0;i<N;i++)
{
fprintf(fp,"%-4d%-4c%-4s%-4lf%-4d%-4d%-4d%-4lf%-4lf\n",&s[i].ID,&s[i].cn,s[i].ct,&s[i].credit,&s[i].up,&s[i].ter,&s[i].qpg,&s[i].cp,&s[i].tac);
printf("%-4d%-4c%-4s%-4lf%-4d%-4d%-4d%-4lf%-4lf\n",&s[i].ID,&s[i].cn,s[i].ct,&s[i].credit,&s[i].up,&s[i].ter,&s[i].qpg,&s[i].cp,&s[i].tac);
}
fclose(fp);
}
void seek(stu s1[],score s2[])
{
int i,flag,k=0,item=0;
double s=0;
char t1[LEN+1];
char t2[LEN+1];
printf("**** 查询菜单 ****\n");
printf("---------------------\n");
printf("----1.按学号查询----\n");
printf("---- 2.按姓名查询----\n");
printf("-----3.按宿舍查询----\n");
printf("-----4.成绩查询------\n");
printf("-----5.退出本菜单----\n");
printf("---------------------\n");
printf("请选择子菜单编号\n");
scanf_s("%d",&item);
flag=0;
switch(item)
{
case 1:
printf("请输入要查询学生学号\n");
scanf_s("%s",t1);
for (i = 0; i<N; i++)
{
if (strcmp(t1,s1[i].ID) == 0)
{
flag = 1;
printf("学生学号\t学生姓名\t性别\t宿舍号码\t电话号码\n");
printf("--------------------------------------------------------------------\n");
printf("%s\t%s\t%s\t%d\t%d\n", s1[i].ID,s1[i].name,s1[i].sex,s1[i].tdn,s1[i].tel);
break;
}
}
if (0 == flag)
{
printf("该学号不存在!\n");break;
}
case 2:
printf("请输入要查询的学生的姓名:\n");
scanf_s("%s", t1);
for (i = 0; i<N; i++)
if (strcmp(s1[i].ID, "t1") == 0)
{
flag = 1;
printf("学生学号\t学生姓名\t性别\t宿舍号码\t电话号码\n");
printf("--------------------------------------------------------------------\n");
printf("%s\t%s\t%s\t%d\t%d\n", s1[i].ID,s1[i].name,s1[i].sex,s1[i].tdn,s1[i].tel);
}
if (0 == flag)
printf("该姓名不存在!\n"); break;
case 3:
printf("请输入要查询学生宿舍号码\n");
scanf_s("%s",t2);
for (i = 0; i<N; i++)
if (strcmp(s1[i].tdn, t2) == 0)
{
flag = 1;
printf("学生学号\t学生姓名\t性别\t宿舍号码\t电话号码\n");
printf("--------------------------------------------------------------------\n");
printf("%s\t%s\t%s\t%d\t%d\n", s1[i].ID,s1[i].name,s1[i].sex,s1[i].tdn,s1[i].tel);
}
if (0 == flag)
printf("该宿舍号码不存在!\n"); break;
case 4:
printf("请输入要查询学生的学号\n");
scanf_s("%s",s1);
printf("请输入要查询学生学号\n");
scanf_s("%s",t1);
for (i = 0; i<N; i++)
if (strcmp(t1,s1[i].ID) == 0)
{
printf("学 号:%6d姓 名:%6s\n",s2[i].ID,s1[i].name);
printf("课程编号:%6d课程名称:%6s\n",s2[i].cn,s2[i].ct);
k++;
s=s+s2[i].ct;
}
printf("共修:%d科,实得总学分为:%lf",k,s);
if(0==flag)
printf("该学号不存在!\n"); break;
case 5:
flag=0;
printf("即将退出本菜单!\n"); break;
default: printf("请在1-5之间输入\n"); break;
}
}
void help()
{
printf("\n0.欢迎使用系统帮助!\n");
printf("\n1.初次进入系统后,请先录入学生信息;\n");
printf("\n2.按照菜单提示键入数字代号;\n");
printf("\n4.谢谢您的使用!\n");
}
void del(stu s1[],score s2[])
{
int i=0,flag = 0;
int j;
int n=15;
char t1[LEN + 1];
printf("请输入要删除学生的学号:\n");
scanf_s("%s", t1);
for (i = 0; i < N; i++){
if (strcmp(s1[i].ID, t1) == 0){
flag = 1;
//要删除学生后面的学生往前移一位
for (j = i; j < N - 1; j++){
s1[j] = s1[j + 1];
s2[j]=s2[j+1];
}
}
}
//查找失败
if (0 == flag){
printf("该学号不存在!!!\n");
}
if (1 == flag)
{
printf("删除成功!!!");
//删除成功,学生人数减1
n--;
}
system("pause");
}
void sort(score s2[])
{
int i,k,index;
score temp;
for(k=0;k<N-1;k++)
{
index=k;
for(i=k+1;i<N;i++)
if(s2[i].tac<s2[index].tac)
index=i;
if(index!=k)
{
temp=s2[index];
s2[index]=s2[i];
s2[i]=temp;
}
printf("学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得学分");
for(i=0;i<N;i++)
{
printf("%d %c %s %f %d %d %d %f %f\n",s2[i].ID,s2[i].cn,s2[i].ct,s2[i].credit,s2[i].up,s2[i].ter,s2[i].qpg,s2[i].cp,s2[i].tac);
}
}
}
报错信息呢,总有报错吧
if(fp==NULL); ---- if语句后面你加个分号干啥?加了就完全两回事了,下一行语句会始终运行的
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632