请大神帮忙看一下
(1) 数据录入功能: 对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运算。综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%; 如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*.15%+卷面成绩*70% .
实得学分的计算: 采用等级学分制.
综合成绩在90-100之间 ,应得学分=学分*100% 综合成绩在80-90之间 ,应得学分=学分*80%
综合成绩在70-80之间 ,应得学分=学分*75% 综合成绩在60-70之间 ,应得学分=学分*60%
综合成绩在60以下 ,应得学分=学分*0%
(2)查询功能:分为学生基本情况查询和成绩查询两种
A:学生基本情况查询:
A1----输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。
A2---输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。
B:成绩查询:
B1:输入一个学号时,查询出此生的所有课程情况,格式如下:
学 号:xx 姓 名:xxxxx
课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx
课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx
课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx
… … … … ……… … …
共修:xx科,实得总学分为: xxx
(3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。
(4 ) 排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
#include <stdio.h>
#include <stdlib.h>
#include<windows.h>
#include<conio.h>
int stuNum=0;
void menu();//主页面菜单;
void loadtxt();//导入学生名单 ,学号需小于九位 ,导入的txt文件里,请以学生姓名加上学生学号的格式
void displayStuds();//显示学生名单
void inputStusScore();//录入学生的成绩
void SearchStu();//按学号查找学生成绩
void ScoreSortup();//按成绩排序 ,升序
void ScoreSortdown();//降序
void del();//删除学生
void sava();//保存到txt文档
struct StudentStyle
{
char StudentName[10];
int StudentId;
int StudentScore;
};
struct StudentStyle stus[100];
int main()
{ int t;
int i;
menu();//显示菜单
scanf("%d",&t);
system("cls");//清屏
while(1)
{ switch(t)
{ case 0:exit(0);
case 1: loadtxt();break;
case 2: displayStuds();break;
case 3: inputStusScore();break;
case 4: SearchStu(); break;
case 5: ScoreSortup();break;
case 6: ScoreSortdown() ;break;
case 7: del() ;break;
case 8: sava(); break;
default:printf("\n输入错误,请检查后重新输入\n");
}
system("pause");//暂停
getchar();//接收回车键
menu();//再次显示菜单
scanf("%d",&t);
system("cls");
}
return 0;
}
void menu()
{ system("cls");
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); //获取控制台的句柄
printf("\n\n\n\n\n");
printf("\t\t|---------------------学生成绩管理系统-------------------|\n");
printf("\t\t|\t 0. 离开 |\n");
printf("\t\t|\t 1. 导入学生名单 (名单内请以姓名加上学号的格式) |\n");
printf("\t\t|\t 2. 显示学生名单 |\n");
printf("\t\t|\t 3. 输入学生成绩 |\n");
printf("\t\t|\t 4. 查找某个学生的信息 |\n");
printf("\t\t|\t 5. 按成绩降序排列学生名单 |\n");
printf("\t\t|\t 6. 按成绩升序排列学生名单 |\n");
printf("\t\t|\t 7. 删除某个学生的信息 |\n");
printf("\t\t|\t 8. 保存到txt文档(若无指定文件系统自动新建) |\n");
printf("\t\t|--------------------------------------------------------|\n\n");
}
void loadtxt()
{
//1.确定文件名
char fileName[100];
printf("请输入包含学生名单的文件名,要求文本文件,包含学号、姓名:\n");
//gets(fileName);//2.打开文件
scanf("%s",fileName);
FILE *fp;
int i;
int result=1;
fp = fopen(fileName,"r");//3. 读数据,保存到stu数组
if(fp==NULL)
{
printf("文件不存在,请检查后重试\n");
}
else {
for(i=0; result!=-1;i++)
{
result=fscanf(fp,"%s%d",stus[i].StudentName,&stus[i].StudentId);
//printf("%d ",result);
}
stuNum = i-1;
Sleep(1000);
system("color 7");
printf("导入成功!\n");
}
fclose(fp);
}
void displayStuds()
{
system("cls");
printf("姓名\t学号\n");
int i;
for(i=0;i<stuNum;i++)
{
printf("%s\t%d\n",stus[i].StudentName,stus[i].StudentId);
}
Sleep(1000);
system("color 2");
printf("显示成功!\n");
getch();
}
void inputStusScore()
{ system("cls");
printf("成绩录入\n");
int i;
for(i=0;i<stuNum;i++)
{
printf("%d\t%s\t成绩:",stus[i].StudentId,stus[i].StudentName);
scanf("%d",&stus[i].StudentScore);
}
Sleep(1000);
system("color 2");
printf("录入成功!\n");
getchar();
}
void SearchStu()
{
system("cls");
printf("请输入学生的学号:\n");
int i;
int stusid;
scanf("%d",&stusid);
for(i=0;i<stuNum;i++)
{
if(stus[i].StudentId==stusid)
{
printf("学号:%d\t姓名:%s\t成绩:%d\n",stus[i].StudentId,stus[i].StudentName,stus[i].StudentScore);
Sleep(2000);
system("color 2");
printf("查找成功!\n");
break;
}
else continue;
}
if(i>=stuNum){
Sleep(1000);
system("color 2");
printf("对不起,没有查到该同学的信息,请重试!\n");
}
getch();
}
void ScoreSortup()
{
system("cls");
printf("\n\n\n\n\n");
Sleep(1000);
printf("\t\t|---------------------成绩排序如下-------------------|\n");
int i;
int j;
struct StudentStyle temp;
for(i=0;i<stuNum-1;i++)
{
for(j=0;j<stuNum-1;j++)
{
if(stus[j].StudentScore<stus[j+1].StudentScore)
{
temp=stus[j];
stus[j]=stus[j+1];
stus[j+1]=temp;
}
}
}
for(i=0;i<stuNum;i++)
{
printf("学号:%d\t姓名:%s\t成绩:%d\n",stus[i].StudentId,stus[i].StudentName,stus[i].StudentScore);
}
Sleep(1000);
system("color 2");
printf("排序已完成!\n");
getch();
}
void ScoreSortdown()
{
system("cls");
printf("\n\n\n\n\n");
Sleep(1000);
printf("\t\t|---------------------成绩排序如下-------------------|\n");
int i;
int j;
struct StudentStyle temp;
for(i=0;i<stuNum-1;i++)
{
for(j=0;j<stuNum-1;j++)
{
if(stus[j].StudentScore>stus[j+1].StudentScore)
{
temp=stus[j];
stus[j]=stus[j+1];
stus[j+1]=temp;
}
}
}
for(i=0;i<stuNum;i++)
{
printf("学号:%d\t姓名:%s\t成绩:%d\n",stus[i].StudentId,stus[i].StudentName,stus[i].StudentScore);
}
Sleep(1000);
system("color 2");
printf("排序已完成!\n");
getch();
}
void del()
{
system("cls");
int stusid;
char ch[2];
int i;
int j;
int t;
int stuNum1=stuNum;//全局变量赋值给局部变量
printf("请输入要删除的学生的学号:\n");
scanf("%d",&stusid);
for(i=0;i<stuNum;i++)
{
if(stus[i].StudentId==stusid){
printf("已经找到%s同学信息,是否删除?(y/n)\n",stus[i].StudentName);
break;
}
}
Sleep(1000);
system("color 2");
if(i>=stuNum){
printf("该同学信息不存在,即将返回主菜单");
Sleep(1000);
system("cls");
menu();
}
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)//判断是否删除
{
for(j=i;j<stuNum1;j++)
{
stus[j]=stus[j+1];
}
stuNum1--;
Sleep(1000);
system("color 2");
printf("删除成功\n");
getch();
}
else
Sleep(1000);
printf("即将返回主菜单");
Sleep(500);
system("cls");
Sleep(1000);
menu();
}
void sava()
{
char fileName[100];
printf("请输入保存的文件名以及路径:\n");
scanf("%s",fileName);
FILE *fp;
fp = fopen(fileName,"a+");
int i;
for(i=0;i<stuNum;i++)
{
fprintf(fp,"学号:%d\t姓名:%s\t成绩:%d\n",stus[i].StudentId,stus[i].StudentName,stus[i].StudentScore);
}
fclose(fp);
Sleep(1000);
system("color 2");
printf("保存成功\n");
getch();
}
能力就到这了真的写不动了,求大神指导一下