【学生成绩管理系统】 大二c语言作业
几年前写的了,只能在命令行窗口运行,虽然比较挫,还是有一定参考价值...
#include <cstdio> #include <conio.h> #include <iostream> #include <process.h> #include <stdlib.h> #include <algorithm> #include <cstring> #include <cmath> #define N 5 ; using namespace std; void log_in(); // 登录系统 void menu(); // 菜单 void input(); // 输入数据 void savecore(); // 保存数据 void loadscore(); // 读取文件 void stdavg(); // 求平均数的算法 void delete_(); // 删除一个已知学号的学生的全部信息,并选择是否排序 void passrate(); // 及格率 void variance(); // 均方差 void browse(); // 显示数据 void function(); // 个性设计模拟动态链表实现增加n个学生成绩并排序 void read(); // 以下四个函数为实现function功能的嵌套函数 void add(); void output(); void solve(); typedef struct student { int number; ]; float math; float english; float computer; float average; bool operator <(const struct student &a)const // c++的sort排序 { return average>a.average; } }STU; STU stu[N]; typedef struct func_ //个性化设计结构体 { ]; //姓名 int no; //学号 int score; //分数 }NODE; NODE node[maxn]; int top; int cmp(const func_ &a,const func_ &b) // c++中sort函数排序 { return a.score > b.score; } int main() { log_in(); menu(); ; } void log_in() { short i; ],key[]; cout << "欢迎进入教务综合管理系统登陆界面,请输入您的用户名和密码" << endl; cout << "初次登录用户名为yang,密码为grade_system " << endl; cout << endl; ) { cout << "please input the user's name:(中间请用_间隔)" << endl; cin >> name; cout << "please input your key(12 bits):" << endl; ;i<;i++) { key[i]=getch(); printf("*"); } key[i]='\0'; getch(); &&strcmp(key,)break; cout << "\nerror!" << endl; cout << "please input again!" <<endl; } cout << "great!wait a minute..." << endl ; system("cls"); } void menu() { char ch; ) { cout << " \t\t欢迎进入教务综合管理系统登陆界面!\n" <<endl; cout << " \t\t* * * * * * * * * * * * * * * * * * * * *" << endl; cout << " \t\t* \t Menu: \t*" << endl; cout << " \t\t* \t0. input \t*" << endl; cout << " \t\t* \t1. savecore \t*" << endl; cout << " \t\t* \t2. loadcore \t*" << endl; cout << " \t\t* \t3. delete \t*" << endl; cout << " \t\t* \t4. passrate \t*" << endl; cout << " \t\t* \t5. variance \t*" << endl; cout << " \t\t* \t6. grade chart \t*" << endl; cout << " \t\t* \t7. personality design \t*" << endl; cout << " \t\t* \t8. Exit \t*" << endl; cout << " \t\t* * * * * * * * * * * * * * * * * * * * *" <<endl; cout << "\t\t\t请选择对应序号: "; cin >> ch; switch(ch) { ':{input();break;}; ':{savecore();break;}; ':{loadscore();break;} ':{delete_();break;}; ':{passrate();break;}; ':{variance();break;}; ':{browse();break;}; ':{function();break;}; );}; default:cout << "input wrong,please input again!" <<endl; } getchar (); } } void input() { int i,j; struct student *p=stu; cout << "now please begin to input the student's data:" << endl; cout << "注意:学号为int型,姓名之间若有间隔一定用连接,分数之间加空格" << endl; cout << endl; ;i<N;i++) { j=i+; cout << "input" << ' ' << j << "'s number name and the score of the math english computer:" << endl; cin >> (p+i)->number; cin >> (p+i)->name; cin >> (p+i)->math; cin >> (p+i)->english; cin >> (p+i)->computer; } cout << "Now we have already input all the data!" << endl; } void savecore() { FILE *fp; struct student *q=stu; int i; char ch; getchar(); cout << "next,do you want to save file?(Y/N)" << endl; if((ch=getchar())=='Y') { if((fp=fopen("d:\\score.txt","w"))==NULL) { cout << "File open error!" << endl; exit(); } ;i<N;i++,q++) { ,fp)==) { ) { cout << "you have saved successfully!" << endl; cout << "press enter to continue" << endl; } } else cout << "file write wrong!" <<endl; } getchar(); fclose(fp); } } void loadscore() { FILE *fp; int i; char ch; getchar(); printf("do you want to open the file?(Y/N)\n"); if((ch=getchar())=='Y') { if((fp=fopen("d:\\score.txt","r"))==NULL) { cout << "File open error!" <<endl; exit(); } ;!feof(fp);i++) //测试文件是否结束 { fread(&stu[i],,fp); } //原型为unsigned fwrite(void *buffer,unsigned size,unsigned count,FILE *fp) cout << "you have loaded successfully!" << endl; cout << "press enter to continue" << endl; getchar(); fclose(fp); } } void browse() { stdavg(); sort(stu,stu+N); int i; ]={" ","Numb","Name","Math","Engl","Comp","Aver"}; printf("\n\n\nNow the chart of student's grade is as below:\n"); printf("***************************************************************************\n\t"); ;i<;i++) { printf("%s\t",chart[i]); } printf("\n"); ;i<N;i++) { printf(" \t%ds \t%.2f \t%.2f \t%.2f \t%.2f",stu[i].number,stu[i].name,stu[i].math, stu[i].english,stu[i].computer,stu[i].average); printf("\n"); } printf("\n"); printf("***************************************************************************\n"); } void stdavg() { int i; float s; ;i<N;i++) { s=; s+=stu[i].math+stu[i].english+stu[i].computer; stu[i].average=s/; } } void passrate() { ; int i; stdavg(); ;i<N;i++) { ) { count_++; } } s=count_/N*; cout << "the passrate is " << s << '%' << endl; cout << endl; } void read() { int n,i; top = ; cout << "请输入当前学生人数" << endl; cin >> n; cout << "请输入学生的名字,学号(这里默认为int),分数(中间用空格间隔)" << endl; ;i<n;i++) { scanf("%s %d %d",node[top].name,&node[top].no,&node[top].score); ) { top++; } } } void add() { cout << "please input:" << endl; cin >> node[top].name ; cin >> node[top].no; cin >> node[top].score; ) { top++; } } void output() { sort(node,node+top,cmp); ;i<top;i++) { printf("%s %d %d\n",node[i].name,node[i].no,node[i].score); } } void solve() { int judge; cout << "提示:" << endl; cout << "输入'0'结束" << endl; cout << "输入'1'增加学生操作" << endl; cout << "输入'2'输出及格学生当前排榜单" << endl; while(scanf("%d",&judge) && judge) { ) { add(); cout<<"\n提示:输入'0'结束\n输入'1'增加学生操作\n输入'2'输出及格学生当前排榜单\n"<<endl; } ) { cout <<"当下所有及格学生的排名情况如下\n" << endl; output(); cout<<"\n提示:输入'0'结束\n输入'1'增加学生操作\n输入'2'输出及格学生当前排榜单\n"<<endl; } } } void function() { cout << "现在我们进入综合的个性类学生成绩管理系统" << endl; cout << "本个性设计旨在仿照malloc的动态分配内存" << endl; cout << endl; read(); solve(); } void delete_() { int i,j,m; char ch; stdavg(); cout << "input the number you want to delete_:\n" << endl; cin >> m; getchar(); // cout << "numb" << '\t' << "name" << '\t' << "math" << '\t' << "endl" << '\t' << "comp" <<'\t' << "aver" <<endl; ;j<N;j++) { if(stu[j].number!=m) { cout << stu[j].number << '\t' <<stu[j].name << '\t' << stu[j].math << '\t' << stu[j].english << '\t' << stu[j].computer << '\t' << stu[j].average << endl; } } cout << "若之前进行过显示数据操作(即菜单中的第六项操作)则已经排序好,否则为输入顺序" << endl; cout << "do you want to sort the grade(Y/N) ?" << endl; ch=getchar(); struct student s; if(ch=='Y') { getchar(); if(stu[j].number!=m) { ;i<N-;i++) { ;j<N;j++) { if(stu[j].average>stu[i].average) { s=stu[i]; stu[i]=stu[j]; stu[j]=s; } } } } cout << "now the sorted chart is:" <<endl; cout << "numb" << '\t' << "name" << '\t' << "math" << '\t' << "endl" << '\t' << "comp" <<'\t' << "aver" <<endl; ;j<N;j++) { if(stu[j].number!=m) { cout << stu[j].number << '\t' <<stu[j].name << '\t' << stu[j].math << '\t' << stu[j].english << '\t' << stu[j].computer << '\t' << stu[j].average << endl; } } } cout <<"press enter to continue" << endl; } void variance() { ,sum=,sum_,var; int i; stdavg(); ;i<N;i++) { s=s+stu[i].average; } var=s/N; ;i<N;i++) { sum+=(stu[i].average-var)*(stu[i].average-var); } sum_= sum/N; cout << "the all student's average variance is :" << sum_ << endl; }
帮别人调试的另一个版本
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #define N 100 #define M 3 #define LEN 9 void menu(); void browse(); typedef struct student { ]; ]; int score[M]; double ave; }STU; STU stu[N]; int save(int n) { FILE *fp; int i; if((fp=fopen("tangjie.txt","wb"))==NULL) { printf("无法打开文件!\n任意键退出程序... ...\n"); getch(); ; } ;i<n;i++) ) ,fp)!=) printf("文件写入发生错误\n"); fclose(fp); ; } int load() { FILE *fp; int i; if((fp=fopen("tangjie.txt","rb"))==NULL) //以二进制读的方式打开 { printf("无法打开文件!\n任意键退出程序... ...\n"); //显示不能打开文件的信息 getch(); //预防闪屏 ; } ;!feof(fp);i++) fread(&stu[i],,fp); //将文件数据读入学生结构体 fclose(fp); ); //返回目前总的记录个数*/ } void printf_back() { int w; printf("\n\t操作成功!\n"); printf("\t请选择!\n\t1).立刻浏览全部数据\t2).返回:[ ]\b\b"); scanf("%d",&w); ) browse(); else menu(); } void printf_face() { printf("\n\t学号\t姓名\t\t 数学\t 英语 C语言 平均分\n"); } void average(int i) { int j,sum; ,j=;j<M;j++) sum+=stu[i].score[j]; stu[i].ave=sum*1.0/M; } void no_deal(int i) { int j,l,a; l=strlen(stu[i].num); if(l<LEN) { ;j<LEN;j++) { stu[i].num[j]=stu[i].num[a++]; } stu[i].num[i]='\0'; ;a<LEN-l;a++) stu[i].num[a]='; } if(l>LEN) stu[i].num[l]='\0'; } int no_input(int i,int n) { int j,k,w1; do{ w1=; printf("学号:\t\t 【%d位,低于%d位前面补0,长的截尾处理!】\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b",LEN,LEN); scanf("%s",stu[i].num); no_deal(i); ;stu[i].num[j]!='\0';j++) ') { puts("请输入0~9的数字!\n"); w1=; break; } ) ;k<n;k++) ) { puts("已存在!\n"); w1=; break; } } ); ; } int score_input(int i) { int j; ;j<M;j++) { printf(); scanf("%d",&stu[i].score[j]); } ; } void input(int i) { no_input(i,i); printf("姓名:"); scanf("%s",stu[i].name); score_input(i); average(i); } void printf_one(int i) { int j; printf("s %-14s",stu[i].num,stu[i].name); ;j<M;j++) printf("�",stu[i].score[j]); printf(" %9.2f\n",stu[i].ave); } void topput___() { printf("\n 记 录浏览 "); printf("\n--------------------------------------------------------------------------------\n"); } void puts___() { printf("\n\n--------------------------------------------------------------------------------\n"); } int modify_data(int i,int n) { int c,w1; do { puts("\n请选择修改项: =>\n\n1).学号\t2).姓名\t3).数学\t4).英语\t5).C语言\n6).重输所有分数\t7).重输所有记录\t8).取消并返回"); printf("请选择:[ ]\b\b"); scanf("%d",&c); || c<) { puts("\n选择错误"); getchar(); } } || c<); do { switch(c) { :no_input(i,n);break; :printf("姓名:");scanf("%s",stu[i].name);break; :printf(]);break; :printf(]);break; :printf(]);break; :score_input(i);break; :input(i);break; :menu(); } && c<) average(i); puts("\n现在:\n"); printf_face(); printf_one(i); //显示修改后的数据 printf("\n确定当前的决定?\n\n\t1).是 \t2).否\n\t3).不保存退出[ ]\b\b"); scanf("%d",&w1); }); return w1; //返回控制值 } void enter() { int i,n; system("CLS"); //引用外部清屏 printf("输入要记录的学生数:(1~%d)?\t['0'返回]:\n",N); scanf("%d",&n); //要输入的计入个数 ) menu(); //输 0 的时候返回 else { printf("\n\t开始输入...\n"); ;i<n;i++) { printf(); input(i); //调用输入函数 } ) save(n); //调用保存函数 printf_back(); } } int add() { int i,n,m,k; FILE *fp; system("CLS"); n=load(); //获得总记录的个数,并加载记录 printf("需要加入的学生人数:(0 ~ %d)?:",N-n); scanf("%d",&m); //输入要追加记录的个数 ) menu(); else { k=m+n; for(i=n;i<k;i++) { printf(); input(i); //调用输入函数 } if((fp=fopen("tangjie.txt","ab"))==NULL) { printf("文件无法打开!\n"); //显示不能打开文件的信息 getch(); ; } for(i=n;i<k;i++) ,fp)!=) printf("文件写入错误!\n"); fclose(fp); printf_back(); } ; } void modify() { struct student s; ,w1,w2=; n=load(); //获得总记录的个数,并加载记录 do { system("CLS"); k=-; topput___(); printf_face(); ;i<n;i++) printf_one(i); //调用显示一个记录的函数 puts___(); do { printf("\n\n输入要修改记录的学号! :\t"); ) //输入要修改数据的学号 menu(); ;i<n;i++) //查找要修改的数据 ) { k=i; //找到要修改的记录 s=stu[i]; } ) printf("\n\n不存在! 请重新输入"); }); printf_face(); //调用显示数据结构项目函数 printf_one(k); w1=modify_data(k,n); ) //代表确认修改 { printf("\n操作成功!\n\n决定修改其他信息吗?\n\n\t1).是的\t2).不!保存并返回\t[ ]\b\b"); scanf("%d",&w0); w2=; } else { w0=; ) stu[k]=s; } && w2==) save(n); }); menu(); //返回主菜单 } void del() { struct student s; ; system("CLS"); n=load(); //获得总记录的个数,并加载记录 do { system("CLS"); k=-; topput___(); printf_face(); ;i<n;i++) ) printf_one(i); //显示所有数据 puts___(); do { printf("\n\n输入你要删除记录的学号! NO.:\t"); ) menu(); ;i<n;i++) ) { k=i; s=stu[i]; } ) printf("\n\n不存在! 请重新输入!"); }); puts("\n"); printf_face(); printf_one(k); //显示要删除的记录 printf("\n确定?\n\t1).是 2).否 3).不保存退出[ ]\b\b"); scanf("%d",&c); ) { stu[k].ave=; printf("\n\n操作成功!\n\n要继续删数据吗?\n\t1).继续 2).返回主菜单\t[ ]\b\b"); scanf("%d",&w0); } ) w0=; //不删除直接返回 && c!=) save(n); }); menu(); } void browse() { int i,n; n=load(); //获得总记录的个数,并加载记录 system("CLS"); topput___(); printf_face(); ;i<n;i++) //循环输出所有学生的信息 printf_one(i); puts___(); printf("\n\t 这里一共有 %d 个记录!\n",n); printf("\n\t 输入任意键返回主菜单... ..."); getch(); menu(); } void search() { ,w2,w3,w4; struct student s; system("CLS"); n=load(); //获得总记录的个数,并加载记录 do { do { k=-; printf("\n\n输入你要查找记录的姓名:"); scanf("%s",s.name); printf_face(); ;i<n;i++) ) { k=i; printf_one(k); //考虑到同名的情况,可能输出不只一个,把所有的记录都查找一下 } ) //没找到相同的 { printf("\n\n不存在! 请重新输入!"); printf("\n\n继续?\n\t1).是\t 2).否 \t[ ]\b\b"); scanf("%d",&w1); } } && w1!=); w4=w3=; ) { printf("\n\n接着干什么?\n\t1).再次查找 2).修改 3).删除 4).返回主菜单 [ ]\b\b"); scanf("%d",&w2); switch(w2) { :w3=modify_data(k,n);break; : { printf("\n\n确定?\n\t1).是 2).否 \t[ ]\b\b"); scanf("%d",&w4); ) //表示确定删除 stu[k].ave=; break; } } || w4==) { save(n); printf("\n\n操作成功!"); printf("\n\n继续\n\t1).再次查找 2).返回 [ ]\b\b"); scanf("%d",&w2); } } }); menu(); } void order() { int i,j,k,n; struct student s; system("CLS"); //清屏 n=load(); //获得总记录的个数,并加载记录 ;i<n-;i++) { k=i; ;j<n;j++) if(stu[j].ave>stu[k].ave) //选择法排序,按平均分降序 k=j; s=stu[i]; stu[i]=stu[k]; stu[k]=s; } save(n); puts("\n\n"); printf_back(); } void menu() { int n,w1; do { system("CLS");; puts("\n\t\t\t\t学生信息管理系统\n"); puts("\t ------- 汤杰 \n"); puts("\t ************************ 主菜单 *********************\n\n"); puts("\t\t\t 1.学生信息及成绩录入"); puts("\t\t\t 2.添加信息"); puts("\t\t\t 3.修改信息"); puts("\t\t\t 4.删除信息"); puts("\t\t\t 5.输出统计结果"); puts("\t\t\t 6.查询信息"); puts("\t\t\t 7.成绩排序"); puts("\t\t\t 0.退出系统"); puts("\n\n\t ****************************************************\n"); printf("\t输入你的选择(0~7):[ ]\b\b"); scanf("%d",&n); || n>) { w1=; printf("\t你的选择不再 0 到 7 之间,按任意键重新输入!"); getch(); } else w1=; }); switch(n) { :enter();break; :add();break; :modify();break; :del();break; :browse();break; :search();break; :order();break; :exit();break; } } void main() { menu(); }
【学生成绩管理系统】 大二c语言作业的更多相关文章
- Java项目:学生成绩管理系统(二)
学生成绩管理系统(二):项目介绍 一.设计要求: 1.1 简单的图形界面登录功能. 1.2 对数据库的的信息的查询功能. 1.3 对数据库的的信息的修改功能. 1.4 对数据库的的信息的删除功能. 1 ...
- 从零开始的C程序设计大作业——学生成绩管理系统
前言 学生成绩管理系统可以说是C语言程序设计的结课的必备大作业了.花了些时间,费了些头发肝了下,完成了两个系统,一个是控制台版本的,另一个用easyx图形库进行了优化. 先放出完成后的演示图片占个坑. ...
- 第一次写C语言小程序,可以初步理解学生成绩管理系统的概念
1 成绩管理系统概述 1.1 管理信息系统的概念 管理信息系统(Management Information Systems,简称MIS),是一个不断发展的新型学科,MIS的定义随着科技的进步也在 ...
- [项目记录] 用c语言完成的一个学生成绩管理系统
一.要求: 学生成绩管理系统 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).使用链表编程实现如下菜单驱动的学生成绩管理系统. 从文件读入每个学生个人信 ...
- C语言项目:学生成绩管理系统
C语言项目:学生成绩管理系统 1.数据结构:学生信息:学号.姓名.年龄.性别.3课成绩 2.功能: (1)增加学生记录 (2) 删除学生记录 (3) 查找学生信息(学号 ...
- C语言实现---学生成绩管理系统
C语言实现了学生成绩管理系统,可以进行学生成绩的增加,删除,更新,查询,计算和展示. 完整代码如下: #include<stdio.h> #include<stdlib.h> ...
- C语言利用结构体数组实现学生成绩管理系统
这篇文章主要为大家详细介绍了C语言利用结构体数组实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 要求: 某班有最多不超过30人(具体人数由键盘输入) ...
- 《C语言编写 学生成绩管理系统》
/* (程序头部凝视開始) * 程序的版权和版本号声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名: 学生成绩管理 ...
- C语言练手自己编写学生成绩管理系统
#include<stdio.h> #include<stdlib.h> /*定义学生结构体*/ struct Student { ]; ]; float Mark1; flo ...
随机推荐
- HDU 2722 Here We Go(relians) Again (spfa)
Here We Go(relians) Again Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/ ...
- 使用CSS灵活的盒子
CSS3灵活的盒子,或flexbox,是一个布局模式提供页面上的元素的安排这样的元素表现可以预见当页面布局必须适应不同屏幕大小和不同的显示设备.对于许多应用程序,灵活的块盒模型提供了一个改进模型,它不 ...
- Header,Tab,ListView三个在线性布局中,ListView向上滑动时,Tab标签悬停在顶部,然后Header向上滑出去,这个效果的做法
效果如图: 这个效果可以用一个框架来做,首先在网上搜关键字,然后搜索的结果在这里:http://stackoverflow.com/questions/20906964/viewpager-with- ...
- 如何将excel导入到数据库中并在gridview中显示
在页面上导入个excel文件,将该excel中的数据导入到数据库中,并且在页面的gridview中把数据显示出来. .在Asp.net中怎样将Excel文件中的数据导入到GridView中呢? 首先我 ...
- UVa 1395 (最小生成树)
题目链接:http://vjudge.net/problem/41567/origin 本来想着m^2的复杂度撑不住,对于这种擦着边的复杂度就好慌. 首先对所有的边排个序,然后枚举每个可以构成生成树的 ...
- 在Firefox浏览器中关闭缓存.命令
在Firefox中关闭缓存 看看这里 在地址栏输入:about:config 然后在过滤器中输入:browser.cache.disk.enable 解释:When a page is loaded, ...
- ios 修改程序显示名称
当你创建一个project时,会要求你输入product name & company identifier,这两个property的值should和你在apple developer mem ...
- Entity Framework 学习中级篇2—存储过程(上)
目前,EF对存储过程的支持并不完善.存在以下问题: l EF不支持存储过程返回多表联合查询的结果集. l EF仅支持返回返回某个表的全部字段,以便转换成对应的实体.无法 ...
- 自定义cell,根据数据源,要对cell的布局进行调整,没有实现调整的相应效果
自定义cell,用于两种显示情况,首次进来A种情况(主材页面),正确显示,然后切换B种情况(辅材情况),可以正确显示,但是当再次切换回A种情况(主材情况)的时候,主材cell不能正常显示了,遗留的B中 ...
- Photoshop 钢笔 双窗口显示
钢笔:两点成一线 两点:Photoshop 叫锚点 中间线叫做路径 路径变选区 Crtl+Enter 窗口 >>>排列>>> 双联垂直 两个文件同时移动: shi ...