啊哈磊_编程从这里起步
标题: 编制一个学生的选课及学籍管理程序!急!求大神帮助!谢谢! [打印本页]
作者: 磐屹 时间: 2018-12-27 23:24
标题: 编制一个学生的选课及学籍管理程序!急!求大神帮助!谢谢!
【问题描述】
现有若干个班级的学生,进行下学期课程的选课,假设已经通过文件储存了选课内容的数据库,数据库中包括n门课(课程内容由学生自己定)
第i门课程能接纳的学生数为10×i,i为课程的序号,即第一门课能接纳的学生数为10×1,第二门课为10×2,...... 依此类推,每门课的学分数分别为
1、2、3、4、5、6、7,现要求每一个学生至少选3门课,最多不超过5门。
【实现提示】
(1)显示课程内容供学生选择,并能进行选课的操作。
(2)随着学生选课工作的进行,动态更新数据库的内容,显示各科剩余学位。
(3)进行学生的最少选课量和最多选课量的控制。
(4)显示所有学生的选课的结果。
(5)把学生所选的课按学分总积分由小到大排列,同样学分按姓名的英文字母排序。
(6)学生总人数和选课数量由程序自动控制
(7)选课情况需存入文件,能从文件读取并显示。
【测试数据】
自定模拟数据
作者: 龙耀 时间: 2019-1-1 17:07
这个用C太麻烦了,还是用C++或者Python吧……(个人推荐Python)
作者: MKing 时间: 2019-1-26 10:27
- #include<stdio.h>
- #include<stdlib.h>
- #include<conio.h>
- #include<dos.h>
- #include<string.h>
- #define LEN sizeof(struct student)
- #define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n"
- #define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum
- float Felec,Fexpe,Frequ;
- struct student/*定义学生成绩结构体*/
- {
- int num;/*学号*/
- char name[15];/*姓名*/
- double elec;/*选修课*/
- double expe;/*实验课*/
- double requ;/*必修课*/
- double sum;/*总分*/
- };
- struct student stu[50];/*定义结构体数组*/
- void in();/*录入学生成绩信息*/
- void show();/*显示学生信息*/
- void order();/*按总分排序*/
- void del();/*删除学生成绩信息*/
- void modify();/*修改学生成绩信息*/
- void menu();/*主菜单*/
- void insert();/*插入学生信息*/
- void total();/*计算总人数*/
- void search();/*查找学生信息*/
- int main()/*主函数*/
- {
- int n;
- menu();
- scanf("%d",&n);/*输入选择功能的编号*/
- while(n)
- {
- switch(n)
- {
- case 1:
- in();
- break;
- case 2:
- search();
- break;
- case 3:
- del();
- break;
- case 4:
- modify();
- break;
- case 5:
- insert();
- break;
- case 6:
- order();
- break;
- case 7:
- total();
- break;
- default:break;
- }
- getch();
- menu();/*执行完功能再次显示菜单界面*/
- scanf("%d",&n);
- }
- }
- void in()/*录入学生信息*/
- {
- int i,m=0;/*m是记录的条数*/
- char ch[2];
- FILE *fp;/*定义文件指针*/
- if((fp=fopen("data","ab+"))==NULL)/*打开指定文件*/
- {
- printf("can not open\n");
- return 0;
- }
- while(!feof(fp))
- {
- if(fread(&stu[m] ,LEN,1,fp)==1)
- m++;/*统计当前记录条数*/
- }
- fclose(fp);
- if(m==0)
- printf("No record!\n");
- else
- {
- system("cls");
- show();/*调用show函数,显示原有信息*/
- }
- if((fp=fopen("data","wb"))==NULL)
- {
- printf("can not open\n");
- return 0;
- }
- for(i=0;i<m;i++)
- fwrite(&stu[i] ,LEN,1,fp);/*向指定的磁盘文件写入信息*/
- printf("please input(y/n):");
- scanf("%s",ch);
- if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
- {
- printf("please input per centum:");
- printf("\nelective:");
- scanf("%f",&Felec);
- printf("\nexperiment:");
- scanf("%f",&Fexpe);
- printf("\nrequired course:");
- scanf("%f",&Frequ);
- }
- while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要录入新信息*/
- {
- printf("number:");
- scanf("%d",&stu[m].num);/*输入学生学号*/
- for(i=0;i<m;i++)
- if(stu[i].num==stu[m].num)
- {
- printf("the number is existing,press any to continue!");
- getch();
- fclose(fp);
- return 0;
- }
- printf("name:");
- scanf("%s",stu[m].name);/*输入学生姓名*/
- printf("elective:");
- scanf("%lf",&stu[m].elec);/*输入选修课成绩*/
- printf("experiment:");
- scanf("%lf",&stu[m].expe);/*输入实验课成绩*/
- printf("required course:");
- scanf("%lf",&stu[m].requ);/*输入必修课成绩*/
- stu[m].sum=stu[m].elec*Felec+stu[m].expe*Fexpe+stu[m].requ*Frequ;/*计算出总成绩*/
- if(fwrite(&stu[m],LEN,1,fp)!=1)/*将新录入的信息写入指定的磁盘文件*/
- {
- printf("can not save!");
- getch();
- }
- else
- {
- printf("%s saved!\n",stu[m].name);
- m++;
- }
- printf("continue?(y/n):");/*询问是否继续*/
- scanf("%s",ch);
- }
- fclose(fp);
- printf("OK!\n");
- }
- void show()
- {
- FILE *fp;
- int i,m=0;
- fp=fopen("data","ab+");
- while(!feof(fp))
- {
- if(fread(&stu[m] ,LEN,1,fp)==1)
- m++;
- }
- fclose(fp);
- printf("number name elective experiment required sum\t\n");
- for(i=0;i<m;i++)
- {
- printf(FORMAT,DATA);/*将信息按指定格式打印*/
- }
- }
- void menu()/*自定义函数实现菜单功能*/
- {
- system("cls");
- printf("\n\n\n\n\n");
- printf("\t\t|---------------------STUDENT-------------------|\n");
- printf("\t\t|\t 0. exit |\n");
- printf("\t\t|\t 1. input record |\n");
- printf("\t\t|\t 2. search record |\n");
- printf("\t\t|\t 3. delete record |\n");
- printf("\t\t|\t 4. modify record |\n");
- printf("\t\t|\t 5. insert record |\n");
- printf("\t\t|\t 6. order |\n");
- printf("\t\t|\t 7. number |\n");
- printf("\t\t|-----------------------------------------------|\n\n");
- printf("\t\t\tchoose(0-7):");
- }
- void order()/*自定义排序函数*/
- {
- FILE *fp;
- struct student t;
- int i=0,j=0,m=0;
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("can not open!\n");
- return 0;
- }
- while(!feof(fp))
- if(fread(&stu[m] ,LEN,1,fp)==1)
- m++;
- fclose(fp);
- if(m==0)
- {
- printf("no record!\n");
- return 0;
- }
- for(i=0;i<m-1;i++)
- for(j=i+1;j<m;j++)/*双重循环实现成绩比较并交换*/
- if(stu[i].sum<stu[j].sum)
- {
- t=stu[i];
- stu[i]=stu[j];
- stu[j]=t;
- }
- if((fp=fopen("data","wb"))==NULL)
- {
- printf("can not open\n");
- return 0;
- }
- for(i=0;i<m;i++)/*将重新排好序的内容重新写入指定的磁盘文件中*/
- if(fwrite(&stu[i] ,LEN,1,fp)!=1)
- {
- printf("%s can not save!\n");
- getch();
- }
- fclose(fp);
- printf("save successfully\n");
- }
- void del()/*自定义删除函数*/
- {
- FILE *fp;
- int snum,i,j,m=0;
- char ch[2];
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("can not open\n");
- return 0;
- }
- while(!feof(fp))
- if(fread(&stu[m],LEN,1,fp)==1)
- m++;
- fclose(fp);
- if(m==0)
- {
- printf("no record!\n");
- return 0;
- }
- printf("please input the number:");
- scanf("%d",&snum);
- for(i=0;i<m;i++)
- if(snum==stu[i].num)
- break;
- if(i==m)
- {
- printf("can not find");
- getchar();
- return 0;
- }
- printf("find the student,delete?(y/n)");
- scanf("%s",ch);
- if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要进行删除*/
- {
- for(j=i;j<m;j++)
- stu[j]=stu[j+1];/*将后一个记录移到前一个记录的位置*/
- m--;/*记录的总个数减1*/
- printf("delete successfully!\n");
- }
- if((fp=fopen("data","wb"))==NULL)
- {
- printf("can not open\n");
- return 0;
- }
- for(j=0;j<m;j++)/*将更改后的记录重新写入指定的磁盘文件中*/
- if(fwrite(&stu[j] ,LEN,1,fp)!=1)
- {
- printf("can not save!\n");
- getch();
- }
- fclose(fp);
-
- }
- void search()/*自定义查找函数*/
- {
- FILE *fp;
- int snum,i,m=0;
- char ch[2];
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("can not open\n");
- return 0;
- }
- while(!feof(fp))
- if(fread(&stu[m],LEN,1,fp)==1)
- m++;
- fclose(fp);
- if(m==0)
- {
- printf("no record!\n");
- return 0;
- }
- printf("please input the number:");
- scanf("%d",&snum);
- for(i=0;i<m;i++)
- if(snum==stu[i].num)/*查找输入的学号是否在记录中*/
- {
- printf("find the student,show?(y/n)");
- scanf("%s",ch);
- if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
- {
- printf("number name elective experiment required sum\t\n");
- printf(FORMAT,DATA);/*将查找出的结果按指定格式输出*/
- break;
- }
- else
- return 0;
- }
- if(i==m)
- printf("can not find the student!\n");/*未找到要查找的信息*/
- }
- void modify()/*自定义修改函数*/
- {
- FILE *fp;
- int i,j,m=0,snum;
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("can not open\n");
- return 0;
- }
- while(!feof(fp))
- if(fread(&stu[m],LEN,1,fp)==1)
- m++;
- if(m==0)
- {
- printf("no record!\n");
- fclose(fp);
- return 0;
- }
- printf("please input the number of the student which do you want to modify!\n");
- scanf("%d",&snum);
- for(i=0;i<m;i++)
- if(snum==stu[i].num)/*检索记录中是否有要修改的信息*/
- break;
- if(i<m)
- {
- printf("find the student!you can modify!\n");
- printf("please input per centum:");
- printf("\nelective:");
- scanf("%f",&Felec);
- printf("\nexperiment:");
- scanf("%f",&Fexpe);
- printf("\nrequired course:");
- scanf("%f",&Frequ);
- printf("name:\n");
- scanf("%s",stu[i].name);/*输入名字*/
- printf("\nelective:");
- scanf("%lf",&stu[i].elec);/*输入选修课成绩*/
- printf("\nexperiment:");
- scanf("%lf",&stu[i].expe);/*输入实验课成绩*/
- printf("\nrequired course:");
- scanf("%lf",&stu[i].requ);/*输入必修课成绩*/
- stu[i].sum=stu[i].elec*Felec+stu[i].expe*Fexpe+stu[i].requ*Frequ;
- }
- else
- {
- printf("can not find!");
- getchar();
- return 0;
- }
- if((fp=fopen("data","wb"))==NULL)
- {
- printf("can not open\n");
- return 0;
- }
- for(j=0;j<m;j++)/*将新修改的信息写入指定的磁盘文件中*/
- if(fwrite(&stu[j] ,LEN,1,fp)!=1)
- {
- printf("can not save!");
- getch();
- }
- fclose(fp);
- }
- void insert()/*自定义插入函数*/
- {
- FILE *fp;
- int i,j,k,m=0,snum;
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("can not open\n");
- return 0;
- }
- while(!feof(fp))
- if(fread(&stu[m],LEN,1,fp)==1)
- m++;
- if(m==0)
- {
- printf("no record!\n");
- fclose(fp);
- return 0;
- }
- printf("please input position where do you want to insert!(input the number)\n");
- scanf("%d",&snum);/*输入要插入的位置*/
- for(i=0;i<m;i++)
- if(snum==stu[i].num)
- break;
- for(j=m-1;j>i;j--)
- stu[j+1]=stu[j];/*从最后一条记录开始均向后移一位*/
- printf("now please input the new information.\n");
- printf("number:");
- scanf("%d",&stu[i+1].num);
- for(k=0;k<m;k++)
- if(stu[k].num==stu[i+1].num&&k!=i+1)
- {
- printf("the number is existing,press any to continue!");
- getch();
- fclose(fp);
- return 0;
- }
- printf("please input per centum:");
- printf("\nelective:");
- scanf("%f",&Felec);
- printf("\nexperiment:");
- scanf("%f",&Fexpe);
- printf("\nrequired course:");
- scanf("%f",&Frequ);
- printf("name:\n");
- scanf("%s",stu[i+1].name);
- printf("\nelective:");
- scanf("%lf",&stu[i+1].elec);
- printf("\nexperiment:");
- scanf("%lf",&stu[i+1].expe);
- printf("\nrequired course:");
- scanf("%lf",&stu[i+1].requ);
- stu[i+1].sum=stu[i+1].elec*Felec+stu[i+1].expe*Fexpe+stu[i+1].requ*Frequ;
- if((fp=fopen("data","wb"))==NULL)
- {
- printf("can not open\n");
- return 0;
- }
- for(k=0;k<=m;k++)
- if(fwrite(&stu[k] ,LEN,1,fp)!=1)/*将修改后的记录写入磁盘文件中*/
- {
- printf("can not save!");
- getch();
- }
- fclose(fp);
- }
- void total()
- {
- FILE *fp;
- int m=0;
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("can not open\n");
- return 0;
- }
- while(!feof(fp))
- if(fread(&stu[m],LEN,1,fp)==1)
- m++;/*统计记录个数即学生个数*/
- if(m==0)
- {
- printf("no record!\n");
- fclose(fp);
- return 0;
- }
- printf("the class are %d students!\n",m);/*将统计的个数输出*/
- fclose(fp);
- }
复制代码
作者: MKing 时间: 2019-1-26 10:29
- #include<stdio.h>
- #include<stdlib.h>
- #include<conio.h>
- #include<dos.h>
- #include<string.h>
- #define LEN sizeof(struct student)
- #define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n"
- #define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum
- float Felec,Fexpe,Frequ;
- struct student/*定义学生成绩结构体*/
- {
- int num;/*学号*/
- char name[15];/*姓名*/
- double elec;/*选修课*/
- double expe;/*实验课*/
- double requ;/*必修课*/
- double sum;/*总分*/
- };
- struct student stu[50];/*定义结构体数组*/
- void in();/*录入学生成绩信息*/
- void show();/*显示学生信息*/
- void order();/*按总分排序*/
- void del();/*删除学生成绩信息*/
- void modify();/*修改学生成绩信息*/
- void menu();/*主菜单*/
- void insert();/*插入学生信息*/
- void total();/*计算总人数*/
- void search();/*查找学生信息*/
- int main()/*主函数*/
- {
- int n;
- menu();
- scanf("%d",&n);/*输入选择功能的编号*/
- while(n)
- {
- switch(n)
- {
- case 1:
- in();
- break;
- case 2:
- search();
- break;
- case 3:
- del();
- break;
- case 4:
- modify();
- break;
- case 5:
- insert();
- break;
- case 6:
- order();
- break;
- case 7:
- total();
- break;
- default:break;
- }
- getch();
- menu();/*执行完功能再次显示菜单界面*/
- scanf("%d",&n);
- }
- }
- void in()/*录入学生信息*/
- {
- int i,m=0;/*m是记录的条数*/
- char ch[2];
- FILE *fp;/*定义文件指针*/
- if((fp=fopen("data","ab+"))==NULL)/*打开指定文件*/
- {
- printf("哎呀 打不开呀\n");
- return 0;
- }
- while(!feof(fp))
- {
- if(fread(&stu[m] ,LEN,1,fp)==1)
- m++;/*统计当前记录条数*/
- }
- fclose(fp);
- if(m==0)
- printf("没有学生!\n");
- else
- {
- system("cls");
- show();/*调用show函数,显示原有信息*/
- }
- if((fp=fopen("data","wb"))==NULL)
- {
- printf("哎呀 打不开呀\n");
- return 0;
- }
- for(i=0;i<m;i++)
- fwrite(&stu[i] ,LEN,1,fp);/*向指定的磁盘文件写入信息*/
- printf("请输入读入信息(Y/N):");
- scanf("%s",ch);
- if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
- {
- printf("请输入课程所占百分比:");
- printf("\n选修课:");
- scanf("%f",&Felec);
- printf("\n实验课:");
- scanf("%f",&Fexpe);
- printf("\n必修课:");
- scanf("%f",&Frequ);
- }
- while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要录入新信息*/
- {
- printf("学号:");
- scanf("%d",&stu[m].num);/*输入学生学号*/
- for(i=0;i<m;i++)
- if(stu[i].num==stu[m].num)
- {
- printf("此号码已存在!按任意键退出");
- getch();
- fclose(fp);
- return 0;
- }
- printf("姓名:");
- scanf("%s",stu[m].name);/*输入学生姓名*/
- printf("选修课:");
- scanf("%lf",&stu[m].elec);/*输入选修课成绩*/
- printf("实验课:");
- scanf("%lf",&stu[m].expe);/*输入实验课成绩*/
- printf("必修课:");
- scanf("%lf",&stu[m].requ);/*输入必修课成绩*/
- stu[m].sum=stu[m].elec*Felec+stu[m].expe*Fexpe+stu[m].requ*Frequ;/*计算出总成绩*/
- if(fwrite(&stu[m],LEN,1,fp)!=1)/*将新录入的信息写入指定的磁盘文件*/
- {
- printf("无法读入!");
- getch();
- }
- else
- {
- printf("%s 录入成功!\n",stu[m].name);
- m++;
- }
- printf("继续吗(Y/N):");/*询问是否继续*/
- scanf("%s",ch);
- }
- fclose(fp);
- printf("OK!\n");
- }
- void show()
- {
- FILE *fp;
- int i,m=0;
- fp=fopen("data","ab+");
- while(!feof(fp))
- {
- if(fread(&stu[m] ,LEN,1,fp)==1)
- m++;
- }
- fclose(fp);
- printf("number name elective experiment required sum\t\n");
- printf("学号 姓名 选修课 实验课 必修课 总和\t\n");
- for(i=0;i<m;i++)
- {
- printf(FORMAT,DATA);/*将信息按指定格式打印*/
- }
- }
- void menu()/*自定义函数实现菜单功能*/
- {
- system("cls");
- 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|-----------------------------------------------|\n\n");
- printf("\t\t\t选择功能(0-7):");
- }
- void order()/*自定义排序函数*/
- {
- FILE *fp;
- struct student t;
- int i=0,j=0,m=0;
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("哎呀 打不开呀!\n");
- return 0;
- }
- while(!feof(fp))
- if(fread(&stu[m] ,LEN,1,fp)==1)
- m++;
- fclose(fp);
- if(m==0)
- {
- printf("没有记录!\n");
- return 0;
- }
- for(i=0;i<m-1;i++)
- for(j=i+1;j<m;j++)/*双重循环实现成绩比较并交换*/
- if(stu[i].sum<stu[j].sum)
- {
- t=stu[i];
- stu[i]=stu[j];
- stu[j]=t;
- }
- if((fp=fopen("data","wb"))==NULL)
- {
- printf("哎呀 打不开呀\n");
- return 0;
- }
- for(i=0;i<m;i++)/*将重新排好序的内容重新写入指定的磁盘文件中*/
- if(fwrite(&stu[i] ,LEN,1,fp)!=1)
- {
- printf("%s 出问题了!\n");
- getch();
- }
- fclose(fp);
- printf("刷新录入成功\n");
- }
- void del()/*自定义删除函数*/
- {
- FILE *fp;
- int snum,i,j,m=0;
- char ch[2];
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("哎呀 打不开呀\n");
- return 0;
- }
- while(!feof(fp))
- if(fread(&stu[m],LEN,1,fp)==1)
- m++;
- fclose(fp);
- if(m==0)
- {
- printf("未查询到记录!\n");
- return 0;
- }
- printf("请输入删除学生序号:");
- scanf("%d",&snum);
- for(i=0;i<m;i++)
- if(snum==stu[i].num)
- break;
- if(i==m)
- {
- printf("哎呀 找不到");
- getchar();
- return 0;
- }
- printf("找到该学生 是否删除?(y/n)");
- scanf("%s",ch);
- if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要进行删除*/
- {
- for(j=i;j<m;j++)
- stu[j]=stu[j+1];/*将后一个记录移到前一个记录的位置*/
- m--;/*记录的总个数减1*/
- printf("删除成功!\n");
- }
- if((fp=fopen("data","wb"))==NULL)
- {
- printf("哎呀 打不开呀\n");
- return 0;
- }
- for(j=0;j<m;j++)/*将更改后的记录重新写入指定的磁盘文件中*/
- if(fwrite(&stu[j] ,LEN,1,fp)!=1)
- {
- printf("出问题了!\n");
- getch();
- }
- fclose(fp);
-
- }
- void search()/*自定义查找函数*/
- {
- FILE *fp;
- int snum,i,m=0;
- char ch[2];
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("哎呀 打不开呀\n");
- return 0;
- }
- while(!feof(fp))
- if(fread(&stu[m],LEN,1,fp)==1)
- m++;
- fclose(fp);
- if(m==0)
- {
- printf("哎呀 找不到!\n");
- return 0;
- }
- printf("请输入查找学生的学号:");
- scanf("%d",&snum);
- for(i=0;i<m;i++)
- if(snum==stu[i].num)/*查找输入的学号是否在记录中*/
- {
- printf("已找到 是否输出结果?(y/n)");
- scanf("%s",ch);
- if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
- {
- printf("number name elective experiment required sum\t\n");
- printf("学号 姓名 选修课 实验课 必修课 总和\t\n");
- printf(FORMAT,DATA);/*将查找出的结果按指定格式输出*/
- break;
- }
- else
- return 0;
- }
- if(i==m)
- printf("哎呀 找不到该学生!\n");/*未找到要查找的信息*/
- }
- void modify()/*自定义修改函数*/
- {
- FILE *fp;
- int i,j,m=0,snum;
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("哎呀 打不开呀\n");
- return 0;
- }
- while(!feof(fp))
- if(fread(&stu[m],LEN,1,fp)==1)
- m++;
- if(m==0)
- {
- printf("哎呀 找不到!\n");
- fclose(fp);
- return 0;
- }
- printf("请输入你想修改学生的学号!\n");
- scanf("%d",&snum);
- for(i=0;i<m;i++)
- if(snum==stu[i].num)/*检索记录中是否有要修改的信息*/
- break;
- if(i<m)
- {
- printf("找到该学生!请修改!\n");
- printf("请输入课程所占百分比:");
- printf("\n选修课:");
- scanf("%f",&Felec);
- printf("\n实验课:");
- scanf("%f",&Fexpe);
- printf("\n必修课:");
- scanf("%f",&Frequ);
- printf("姓名:\n");
- scanf("%s",stu[i].name);/*输入名字*/
- printf("\n选修课:");
- scanf("%lf",&stu[i].elec);/*输入选修课成绩*/
- printf("\n实验课:");
- scanf("%lf",&stu[i].expe);/*输入实验课成绩*/
- printf("\n必修课:");
- scanf("%lf",&stu[i].requ);/*输入必修课成绩*/
- stu[i].sum=stu[i].elec*Felec+stu[i].expe*Fexpe+stu[i].requ*Frequ;
- }
- else
- {
- printf("哎呀 找不到!");
- getchar();
- return 0;
- }
- if((fp=fopen("data","wb"))==NULL)
- {
- printf("哎呀 打不开呀\n");
- return 0;
- }
- for(j=0;j<m;j++)/*将新修改的信息写入指定的磁盘文件中*/
- if(fwrite(&stu[j] ,LEN,1,fp)!=1)
- {
- printf("出问题了!");
- getch();
- }
- fclose(fp);
- }
- void insert()/*自定义插入函数*/
- {
- FILE *fp;
- int i,j,k,m=0,snum;
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("哎呀 打不开呀\n");
- return 0;
- }
- while(!feof(fp))
- if(fread(&stu[m],LEN,1,fp)==1)
- m++;
- if(m==0)
- {
- printf("没有信息!\n");
- fclose(fp);
- return 0;
- }
- printf("请输入你想插入学生的学号\n");
- scanf("%d",&snum);/*输入要插入的位置*/
- for(i=0;i<m;i++)
- if(snum==stu[i].num)
- break;
- for(j=m-1;j>i;j--)
- stu[j+1]=stu[j];/*从最后一条记录开始均向后移一位*/
- printf("请输入相关信息.\n");
- printf("学号:");
- scanf("%d",&stu[i+1].num);
- for(k=0;k<m;k++)
- if(stu[k].num==stu[i+1].num&&k!=i+1)
- {
- printf("输入错误!");
- getch();
- fclose(fp);
- return 0;
- }
- printf("找到该学生!请修改!\n");
- printf("请输入课程所占百分比:");
- printf("\n选修课:");
- scanf("%f",&Felec);
- printf("\n实验课:");
- scanf("%f",&Fexpe);
- printf("\n必修课:");
- scanf("%f",&Frequ);
- printf("姓名:\n");
- scanf("%s",stu[i].name);/*输入名字*/
- printf("\n选修课:");
- scanf("%lf",&stu[i].elec);/*输入选修课成绩*/
- printf("\n实验课:");
- scanf("%lf",&stu[i].expe);/*输入实验课成绩*/
- printf("\n必修课:");
- scanf("%lf",&stu[i].requ);/*输入必修课成绩*/
- stu[i+1].sum=stu[i+1].elec*Felec+stu[i+1].expe*Fexpe+stu[i+1].requ*Frequ;
-
-
- if((fp=fopen("data","wb"))==NULL)
- {
- printf("打不开呀\n");
- return 0;
- }
- for(k=0;k<=m;k++)
- if(fwrite(&stu[k] ,LEN,1,fp)!=1)/*将修改后的记录写入磁盘文件中*/
- {
- printf("上传失败!");
- getch();
- }
- fclose(fp);
- }
- void total()
- {
- FILE *fp;
- int m=0;
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("哎呀 打不开呀\n");
- return 0;
- }
- while(!feof(fp))
- if(fread(&stu[m],LEN,1,fp)==1)
- m++;/*统计记录个数即学生个数*/
- if(m==0)
- {
- printf("没有记录!\n");
- fclose(fp);
- return 0;
- }
- printf("班级内有 %d 个学生!\n",m);/*将统计的个数输出*/
- fclose(fp);
- }
复制代码
中文版
欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) |
Powered by Discuz! X3.2 |