0;

}

else printf("没有该条件的选项!\n");

return 0;

}

void incharge(int a,int b) //交换函数。

{

struct stu t;

t=pro[a];

pro[a]=pro[b];

pro[b]=t;

}

void het(int m,int n,int c) //快排函数

{ if(m>n) return;

int i=m-1;

for(int j=m;jnum,p->num);

strcpy(q->name,p->name);

for(int j=0;j<3;j++)

q->score[j]=p->score[j];

q->sum=p->sum;

}

void remove() //删除个人信息函数

{ int b;

char tag[10];

if(N==0){

printf("记录表为空!\n");

return;

}

b=lookout();

if(b)

{

printf("是否要删除(y/n):");

gets(tag);

if(tag[0]=='y'||tag[0]=='Y')

{

N--;

for(int j=b;j<=N;j++)

copyrecored(&pro[j+1],&pro[j]);

printf("删除成功!\n");

falg=0;

}

else printf("删除失败!\n");

}

}

void change() //修改个人信息函数

{ int m,k,f;

if(N==0)

{printf("记录表为空!\n");return;}

k=lookout();

if(k)

{

printf("1.学号 2.姓名 3科目成绩 4.全部修改 0.退出\n请输入要修改的信息:");

scanf("%d",&f);

switch(f)

{

case 1:printf("请重新输入学号:");

scanf("%s",&pro[k].num );falg=0;break;

case 2:getchar();

printf("请重新输入姓名:");

scanf("%s",&pro[k].name);falg=0;break;

case 3:printf("0.语文 1.数学 2.英语\n请选择科目:");

scanf("%d",&m);

if(m==0||m==1||m==2)

{

printf("请输入%s成绩:",classname[m]);

scanf("%f",&pro[k].score[m]);

falg=0;

}

else printf("输入无效!\n");

pro[k].sum=pro[k].score[0]+pro[k].score[1]+pro[k].score[2];

break;

case 4:newsect(k);break;

default:printf("修改失败!"); break;

}

}

}

void save() //文件保存函数

{

FILE *fp;

char fname[30];

if(N==0)

{

printf("没有记录可存!\n");return;

}

loop:printf("请输入要存入的文件(直接回车保存在默认文件中):");

gets(fname);

if(strlen(fname)==0)

strcpy(fname,"stu_info");

if((fp=fopen(fname,"wb"))==NULL){

printf("不能存入文件!\n");goto loop;

}

printf(" 文件保存中....\n");

for(int i=1;i<=N;i++)

if((fwrite(&pro[i],sizeof(STU),1,fp))==0)

{printf("保存失败!\n");break;}

fclose(fp);

printf("文件已保存!\n");

falg=1;

}

void loadrecords() //读取文件函数

{

FILE *fp;

void abc(int s);

char fname[10];

int c;

struct stu records[100];

printf("请输入要打开的文件名(直接回车打开默认文件):");

gets(fname);

if(strlen(fname)==0)

strcpy(fname,"stu_info");

if((fp=fopen(fname,"rb"))==NULL)

{

printf("文件打不开!\n");return;

}

printf("1.覆盖新建的信息 2.添加到新的信息中 3.查看保存的信息\n请选择:");

scanf("%d",&c);

if(c==3){

printf("\n┏┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┓\n");

printf("┃学号 姓名 总成绩 语文 数学 英语 ┃ \n");

for(int i=0;fread(&records[i],sizeof(STU),1,fp)!=0;i++)

{

printf("┃%-12s% -11s% -9.1f ",records[i].num ,records[i].name,records[i].sum );

for(int j=0;j<3;j++)

printf(j==2?"%-5.1f":"%-8.1f",records[i].score [j]);

printf(" ┃\n");

}

printf("\n┗┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┛\n");

}

if(c==1){

abc(0);

for( N=1;fread(&pro[N],sizeof(STU),1,fp)!=0;N++);

N--; //跳出循环,N实际比得到人数要大一,故要减一。

falg=0;

fclose(fp);

showlist();

}

if(c==2){falg=0;

for(++N;fread(&pro[N],sizeof(STU),1,fp)!=0;N++)

if(N>arrysize){

pro=(STU*)realloc(pro,sizeof(STU)*(arrysize+size)); //超出内存,就分配新的内存。

}

arrysize+=size;

N--; //跳出循环,N实际比得到人数要大一,故要减一。

fclose(fp);

showlist();

}

}

void abc(int s) //信息保存判断函数 s代表要进行的相应操作。

{ char v[10];

if(N!=0&&falg!=1)

{

printf("新建信息尚未保存!,继续将会使新建的信息消失,");

printf("是否先保存(y/n):");

while(1){

gets(v);

if(v[0]=='y'||v[0]=='Y') {save();break;}

if(v[0]=='n'||v[0]=='N') break;

else printf("输入有误!请重新输入:");

}

}

if(s==1){

printf("请输入统计人的个数:");

scanf("%d",&N);

gets(v); //消除违规数据。

for(int i=1;i<=N;i++)

newsect(i);

}

else return;

}

void main() //主函数

{ char v[10];

int choice,c;

pro=(STU*)malloc(size*sizeof(STU));

if(pro==NULL)

{

printf("内存分配出错!\n");

return;

}

printf("\t\t\t\t学生成绩管理系统\n\n");

do

{ choice=-1;

printf("\n0.新建\t\t1.添加\t\t\t2.查找\t3.删除\n4.列表输出\t5.排序\t\t\t6修改\n7.文件保存\t8.读取保存的记录文件\t9退出\n请选择相应的操作:");

scanf("%d",&choice);

gets(v); //消除违规数据,防止变成死循环

switch(choice)

{case 0:abc(1);break;

case 1:++N;newsect(N);break;

case 2:lookout();break;

case 3:remove();break;

case 6:change();het(1,N,1);break;

case 5:if(N==0){printf("记录为空!\n");break;}

else {printf("1.按成绩降序 2.按成绩升序 3.按学号升序 4.按学号降序\n请选择相应功能:");

scanf("%d",&c);het(1,N,c);}

case 4:showlist();break;

case 7:save();break;

case 8:loadrecords();break;

case 9:abc(0);printf("谢谢使用!\n");break;

default:printf("选择无效!\n");break;

}

}

while(choice!=9);

}

c语言课程设计学生成绩簿,c语言课程设计—学生成绩管理系统相关推荐

  1. 学生成绩统计c语言课程设计,学生成绩管理系统-C语言课程设计

    记一次课程设计作业 学生成绩管理系统#include #include #include #include /* 学生成绩管理系统介绍 2017C语言课程设计  202160936 1.支持将数据保存 ...

  2. c语言else if设计一个成绩表,c语言 学生成绩管理系统设计学生成绩信息包括:学号,姓名,三门课程成绩(数学、英语和计算机)等。主要功能:(1) 计算各...

    共回答了9个问题采纳率:88.9% 希望对你有所帮助. #include"stdio.h" #include"stdlib.h" #include"s ...

  3. C语言课程设计学生籍贯信息,C语言课程设计 学生籍贯信息记录簿设计.doc

    C语言与程序设计课程设计 学生籍贯信息记录簿设计 学 院 信息工程 班 级 物联1301班 学 号 131408119 姓 名 滕玲 一.设计目的 该软件主要是编辑一个学生籍贯信息记录簿记录每个学生信 ...

  4. 求两门成绩平均c语言,数据结构课的作业 要求用链表实现学生的学号 姓名 两门课的成绩 同时求出课程的平均成绩...

    数据结构课的作业 要求用链表实现学生的学号 姓名 两门课的成绩 同时求出课程的平均成绩 关注:69  答案:2  mip版 解决时间 2021-02-04 09:43 提问者孤城古巷 2021-02- ...

  5. c语言求三门课程的平均成绩,C语言求三个学生四门课每个学生的平均成绩和每门课的平均成绩,并存入cx.txt中...

    C语言求三个学生四门课每个学生的平均成绩和每门课的平均成绩,并存入cx.txt中 # 求平均成绩 ```c #includestdio.h #includestring.h void input(fl ...

  6. (C语言)有10个学生,每个学生的数据包括学号,姓名,3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号,姓名,3门课程成绩,平均分数)

    有10个学生,每个学生的数据包括学号,姓名,3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号,姓名,3门课程成绩,平均分数) #define _C ...

  7. 【C语言习题】有3个学生,上4门课程,要求输入全部学生的各门课成绩,并分别求出每门课的平均成绩(用二维数组编程)

    题目内容:有3个学生,上4门课程,要求输入全部学生的各门课成绩,并分别求出每门课的平均成绩.[要求:使用二维数组存学生成绩,行:学生,列:单科成绩] 输入样例: 输出样例:第1门课的平均成绩是:76. ...

  8. c语言综合程序设计省市邮政编码,《C语言程序设计课程设计报告》_课程教学大纲...

    <<C语言程序设计课程设计报告>_课程教学大纲>由会员分享,可在线阅读,更多相关<<C语言程序设计课程设计报告>_课程教学大纲(6页珍藏版)>请在人人文 ...

  9. 上海应用技术学院c语言实验报告5,上海应用技术学院课程设计报告

    <上海应用技术学院课程设计报告>由会员分享,可在线阅读,更多相关<上海应用技术学院课程设计报告(14页珍藏版)>请在人人文库网上搜索. 1.上海应用技术学院课程设计报告课程名称 ...

最新文章

  1. 3.5 集束搜索的误差分析-深度学习第五课《序列模型》-Stanford吴恩达教授
  2. [Asp.net]站点地图SiteMap
  3. linux常见基本命令
  4. 硬件模块化开发的例子:LD3320语音模块与Source Insight的使用
  5. java打乱一组正序数字,Leetcode︱4.Median of Two Sorted Arrays寻找两个正序数组的中位数.java...
  6. Docker 拉取镜像慢解决
  7. ubuntu新建一个账户并将其加入sudo用户组
  8. 问题四十七:怎么用ray tracing画superellipsoid (2)
  9. Tomcat内存设置方法(转载并实践)
  10. python做算法题_Python 笔试常见基础算法题
  11. 阿斯克码表ACSII对照表
  12. 公有云Docker镜像P2P加速之路:安全篇
  13. 最全UnityHub下载链接Unity2022~2017各版本+Unity5.x【间歇性更新】
  14. 三步骤快速开发 iOS资讯类App
  15. 传奇单机版批量修改爆率. 把所有物品爆率都改成1/10, 需要的话可以自己改更高....
  16. 1.TPC-C测试工具一——TPC-C简介
  17. 将字符串中的中文转为拼音(java)
  18. 2021-09-10 网安实验-XCTF真题实战之密码学
  19. 图解关于路由器限速设置的具体方法
  20. fstat、stat和lstat用法

热门文章

  1. centos7.x设置nginx开机自启动
  2. POJ 3422 Kaka's Matrix Travels
  3. 接口测试基础一--HTTP请求
  4. VS Code编写html(2)
  5. Oracle-BPM安装详解
  6. var obj = eval(result); 解析json
  7. android app启动过程
  8. JavaScript中一个对象如何继承另外一个对象
  9. 如何判断一颗二叉树为完全二叉树
  10. Leetcode-1156 Swap For Maximum Repeated Substring(单字符重复子串的最大长度)