永发信息网

高分求c语言程序设计

答案:2  悬赏:10  手机版
解决时间 2021-05-12 00:16

学生选课管理程序

改程序的主要功能包括

1.学生选课信息的添加(包括学生学号,课程名称,学分)

2.学生选课信息的删除

3.学生选课信息的查询(查询每个学生的选课信息,每个学生选课的总学分,选具体某们课程<课程名输入>的学生名单)

实现思路

个人信息用结构体定义,解决的方案可以用结构体数组,或是链表作为临时数据处理,用文件来存储数据.注意数据定义的数据类型,用函数实现相应的功能,然后再主程序中调用,程序运行的时候用菜单选择功能,比如.

添加个人信息----按数字键1

修改个人信息----按数字键2

........

最佳答案

刚好前几天我写了学生成绩管理系统,在VC++6.0上没有问题,晕,程序太长了发不上来,楼主把你的邮箱号告诉我,我发到你邮箱里去

全部回答

#include <stdio.h> #include <stdlib.h> #include <string.h>

struct student { char name[60]; char ID[7]; int score; };

int dq(struct student st[]); void xianshi(); void bc(struct student st[]); void add(); void select(); void zz(); void chazhao(); void xhcz(); void xmcz(); void del(); void xmsc(); void xhsc(); void tj(); void px(); void bjg(); void xg(); void xhxg(); void xmxg(); void bca(); void fh(); struct student st[300]; //这个数组用来保存所有的学生信息 和文件里面的一致 int Number=0; //记录总的学生人数 也就是数组/文件里面的学生人数 void main() { int choose=0; FILE *fp=NULL; char yesorno; if((fp=fopen("C://student.dat","rb"))==NULL) { printf("\n=========>提示:文件不存在,是否要创建一个?(y/n)\n"); scanf("%c",&yesorno); if(yesorno=='y'||yesorno=='Y') { //这里仅为了建立文件 fp=fopen("C://student.dat","wb"); fclose(fp); } else exit(0); } else { Number=dq(st); //要是文件只能够已经有数据 将数据初始化到数组中 } system("cls"); while(true) { xianshi(); printf("\t\t====>请选择:"); scanf("%d",&choose); system("cls"); switch(choose) { case 0: exit(0); //退出 break; case 1: add(); fh();//增加学生成绩 break; case 2: select(); fh();//查看学生成绩 break; case 3: chazhao(); fh();// 查找 break; case 4: del(); fh();//删除 break; case 5: tj(); fh();//统计 break; case 6: px(); fh();//排序 break; case 7: bjg(); fh();//输出不及格 break; case 8: xg(); fh();//修改 break; case 9:zz(); fh();//作者 break; case 10:bca(); fh();//保存 break; default: break; } fflush(stdin); getchar(); system("cls"); } } void bca() { printf("\t=====程序在运行时已自动保存.....\n"); } void fh() { printf("\t===>按Enter键返回主菜单\n"); } void xg() //修改学生信息 { int way=0; printf("请选择修改查找方式\n"); printf("1 按姓名查找修改\n"); printf("2 按学号查找修改\n"); scanf("%d",&way); switch(way) { case 1: xmxg(); break; case 2: xhxg(); break; default: printf("输入有误,结束!\n"); break; } }

//按姓名修改 void xmxg() { FILE *fp=NULL; char name[60]; int i=0; int changeIndex=0; int index=0; printf("请输入要修改的学生姓名:"); scanf("%s",name); for (i=0;i<Number;i++) { if (strcmp(name,st[i].name)) { changeIndex=i; //保存要修改的人的下标 } break; } printf("\t姓名\t学号\t成绩\n"); printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score); printf("请重新输入该学生信息"); printf("姓名:"); scanf("%s",st[changeIndex].name); printf("学号:"); scanf("%s",st[changeIndex].ID); printf("成绩:"); scanf("%d",&st[changeIndex].score);

//信息修改后重新更新文件里面的数据 以保持数据一致性 fp=fopen("C://student.dat","wb"); for (i=0;i<Number;i++) { fwrite(&st[i],sizeof(struct student),1,fp); } fclose(fp); }

void xhxg()//按学号修改 { FILE *fp=NULL; char id[60]; int i=0; int changeIndex=0; int index=0; printf("请输入要修改的学生学号:"); scanf("%s",id); for (i=0;i<Number;i++) { if (strcmp(id,st[i].ID)) { changeIndex=i; //保存要修改的人的下标 } break; } printf("\t姓名\t学号\t成绩\n"); printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score); printf("请重新输入该学生信息"); printf("姓名:"); scanf("%s",st[changeIndex].name); printf("学号:"); scanf("%s",st[changeIndex].ID); printf("成绩:"); scanf("%d",&st[changeIndex].score); //信息修改后重新更新文件里面的数据 以保持数据一致性 fp=fopen("C://student.dat","wb"); for (i=0;i<Number;i++) { fwrite(&st[i],sizeof(struct student),1,fp); } fclose(fp); printf("\t=======>修改成功\n"); }

void bjg() //输出不及格人数 { int i=0; printf("以下是不及格:\n"); printf("\t姓名\t学号\t成绩\n"); for (i=0;i<Number;i++) { if (st[i].score<60) { printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score); } } }

void px()//排序 { struct student temp; int wantNUmber=0; int i=0; int j=0; for(i=0;i<Number-1;i++) { for(j=i;j<Number-1;j++) { if(st[j].score>st[j+1].score) { temp=st[j]; st[j]=st[j+1]; st[j+1]=temp; } } } printf("你想输出前几名的成绩:"); scanf("%d",&wantNUmber); if (wantNUmber>Number) { wantNUmber=Number; }

printf("\t姓名\t学号\t成绩\n"); for(i=0;i<wantNUmber;i++) { printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score); } }

void tj()//统计 { int i=0; double sum=0.0; for(i=0;i<Number;i++) { sum+=st[i].score; } printf("全班总分为:%f\n",sum); printf("平均分为:%f\n",sum/Number); }

void del()//删除 { int n=0; printf("1 按姓名删除\n"); printf("2 按学号删除\n"); scanf("%d",&n); switch(n) { case 1: xmsc(); break; case 2: xhsc(); break; } }

void xmsc()//按姓名删除 { FILE *fp=NULL; char name[60]; int i=0; int j=0; printf("请输入要删除的学生姓名:"); scanf("%s",name); for(i=0;i<Number;i++) { if (strcmp(name,st[i].name)==0) //如果查找到就删除 { for (j=i;j<Number-1;j++) { st[j]=st[j+1]; } Number--; } }

//将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了 fp=fopen("C://student.dat","wb"); for (i=0;i<Number;i++) { fwrite(&st[i],sizeof(struct student),1,fp); } fclose(fp); printf("删除成功;\n"); }

void xhsc()//按学号删除 { FILE *fp=NULL; char id[60]; int i=0; int j=0; printf("请输入要删除的学生学号:"); scanf("%s",id); for(i=0;i<Number;i++) { if (strcmp(id,st[i].ID)==0) //如果查找到就删除 { for (j=i;j<Number-1;j++) { st[j]=st[j+1]; } Number--; } } //将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了 fp=fopen("C://student.dat","wb"); for (i=0;i<Number;i++) { fwrite(&st[i],sizeof(struct student),1,fp); } fclose(fp); printf("删除成功;\n"); }

void chazhao()//查找学生 { int n=0; printf("1 按姓名查找\n"); printf("2 按学号查找\n"); scanf("%d",&n); switch(n) { case 1: xmcz(); break; case 2: xhcz(); break; default: printf("输入有误,结束!\n"); break; } }

void xhcz()//按学号查找 { char id[7]; int i=0; printf("请输入要查找学生学号:"); scanf("%s",id); system("cls"); printf("\t姓名\t学号\t成绩\n"); for (i=0;i<Number;i++) { if (strcmp(id,st[i].ID)==0) { printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score); } } }

void xmcz()//按姓名查找 { char name[7]; int i=0; printf("请输入要查找学生姓名:"); scanf("%s",name); system("cls"); printf("\t姓名\t学号\t成绩\n"); for (i=0;i<Number;i++) { if (strcmp(name,st[i].name)==0) { printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score); } } }

void zz() { printf("\t**********************************************************\n\n"); printf("\t^^^^^^^^^^ 武汉工程大学邮电与信息工程学院 ^^^^^^^^^^\n\n"); printf("\t^^^^^^^^^ 07网络与安全管理2班 ^^^^^^^^^\n\n"); printf("\t^^^^^^^^ 易樊制作 ^^^^^^^^\n\n"); printf("\t^^^^^^^^^ 禁止CTRL+C 谢谢合作 ^^^^^^^^^\n\n"); printf("\t^^^^^^^^^^ QQ:895115828\n\n"); printf("\t**********************************************************\n\n"); }

void select()//查看学生 { int i=0; printf("以下是全部学生成绩\n"); printf("\t姓名\t学号\t成绩\n"); for(i=0;i<Number;i++) { printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score); } }

void add()//增加学生 { int numberTemp=0; int i=0; struct student temp; //临时保存信息 printf("请输入要增加学生成绩个数:"); scanf("%d",&numberTemp); for(i=0;i<numberTemp;i++) { printf("输入第%d个同学信息\n",i+1); printf("姓名:"); scanf("%s",temp.name); printf("学号:"); scanf("%s",temp.ID); printf("成绩:"); scanf("%d",&temp.score); st[Number++]=temp; //将刚添加的写入到数组 bc(&temp); //将刚添加的写入到文件

} printf("添加成功\n"); }

void bc(struct student *st) { FILE *fp=NULL; fp=fopen("C://student.dat","ab+"); fwrite(st,sizeof(struct student),1,fp); fclose(fp); }

int dq(struct student st[]) { FILE *fp=NULL; int i=0; fp=fopen("C://student.dat","rb"); while(fread(&st[i],sizeof(struct student),1,fp)) i++; fclose(fp); return i; }

void xianshi() { printf("\t*****************************************************************\n"); printf("\t* *\n"); printf("\t* 学生成绩管理系统 *\n"); printf("\t* *\n"); printf("\t* [1] 增加学生成绩 [2] 查看学生成绩 *\n"); printf("\t* [3] 查找学生成绩 [4] 删除学生成绩 *\n"); printf("\t* [5] 统计(总成绩和平均分) [6] 输出前N名学生成绩 *\n"); printf("\t* [7] 输出不及格人数 [8] 修改学生信息 *\n"); printf("\t* [9] 关于作者 [10] 保存数据 *\n"); printf("\t* [0] 退出系统 *\n"); printf("\t*****************************************************************\n"); }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
南拳妈妈在恶作剧之吻里。唱的有那些歌?
避孕药保险吗
迅雷5不能设置杀毒软件
这个歌叫什么名字呀
描写母亲白发的段落,描写母亲白发的句子
这些事要我好难过…
360怎么恢复之前取消的插件
去新加坡公立学校留学
为什么我还是不想结婚呢?
坟前栽松树有什么讲究,父母的坟地最好栽几棵
丝路英雄四川 7区 谁有联盟 收下我
八年级的 文言文 有什么??? 速度 答,,
和中国结有关的诗句,用是因为...是因为...更
郑州到濮阳多久,郑州至濮阳油田有多少公里最
真三国无双5在官渡怎么刷马啊
推荐资讯
网站问题求解
谁能告诉我为什么相爱容易相处难的问题啊
手机流量控制可靠吗?
我的QB为什么没有了
带涵字的美好古诗词,求文学大神,求一句带瑜
QQ号被盗怎么找回来啊
不在为别人着想的句子,形容彼此感情很好,为对
很早以前人好像都不穿衣服的耶!不知是谁发明
怎么这么热呢!为什么这么热!怎样让自己快速
淘宝密码忘记了怎么办啊
集成显卡。我电脑没以前画面清晰啦,有点不流
安卓系统手机怎么升级,手机如何升级系统
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?