ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:159.96KB ,
资源ID:5885448      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5885448.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(班级成绩管理系统.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

班级成绩管理系统.docx

1、班级成绩管理系统轻工大学 数计学院 C语言课程设计报告班级:计算机类1307班学号: 1305110009姓名: 韩晶 指导教师:贾瑜 日期:2014年6月18日一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础。二、实验容运用所学的C语言知识编辑应用程序:班级成绩管理系统以及运动的时钟三系统软件环境:本程序主要运行在: Visual C+ 6.0 Turbo C/C+ 3.0四.课程设计题目:1.必做题:班级成绩管理系统 对一个有N个学生的班级,每个学生有M门课程。该系统

2、实现对班级成绩的录入、显示、修改、排序、保存、查询等操作的管理。功能要求: (1)本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。 (2)本系统显示这样的菜单: 请选择系统功能项: a、成绩录入 b、成绩显示 c、成绩保存 d、成绩排序e、成绩修改(要求先输入密码) f、成绩统计1)显示每门课程成绩最高的学生的基本信息。 2)显示每门课程的平均成绩 ,柱状图显示。3)显示超过某门课程平均成绩的学生人数。 4)显示某门课程每个分数段区间的人数,用饼状图显示。g、退出系统 (3)执行一个具体的功能之后,程序将重新显示菜单。 (4)将学生成绩保存到文件中。五数据结构设计描

3、述:(一)班级成绩管理系统主函数菜单函数添加显示查找修改删除排序存档读档退出六.源程序(一)班级成绩管理系统#include #include #include #include#include#define _COURSES 3/定义科目数#define _LEN sizeof(student)/定义结构体大小/枚举返回值情况enum statusOVERFLOW = -1, /存(溢出)问题DONE = 0, /成功NOFOUND = 1, /不存在OPENFAIL = 2, /打开(文件)失败BACK = 3 /返回;/end/定义学生信息结构体typedefstructStudentI

4、nfo/数据域unsigned intnum;/学号char name11;/姓名float scores_COURSES;/各科成绩/指针域structStudentInfo *next;/存放下一节点的地址student;/endstudent *head=NULL;/声明链表头结点student *curr=NULL;/声明指向当前节点的指针int total = 0;/声明当前节点个数intinit();/初始化链表intadd_stu();/添加新节点intshow_all();/显示所有学生信息intfind_stu();/查找指定信息节点intmodify_stu();/修改指定

5、信息节点intremove_stu();/删除指定信息节点intsort_list();/对链表排序intsave_to_file();/将所有信息保存至文件intread_from_file();/从文件中读取信息int picture();/画分布图int quit();/释放所有节点空间int entering(student *input);/录入学生信息void menu();void show_stu(student *show, int serial);/显示指定学生信息void start();/程序开始界面void change(student *former, studen

6、t *latter, student *temp);/交换两个节点的数据域void main() int h,flag1,flag2;char name20=hyw,password10=hyw;char person20,password110; printf (tt * 欢迎进入学生成绩管理系统!*nn); printf (ttt 用 户 登 录nn);for(h=0;h!=5;) printf(tttt 用户名:);gets(person); flag1=strcmp(person,name);printf(tttt 密码:);gets(password1); flag2=strcmp(

7、password,password1);if(flag1=0 & flag2=0) printf(tttt 登陆成功!nn);menu();break; else printf (ttt 用户名或密码错误!nn); printf (ttt 请注意:您还剩%d次机会!nn,4-h);h+; if (h=5) printf (对不起,您输入的用户名或密码有误,已被强制退出。n); void menu() int choice=0; init(); while(1)system(cls);/清屏 start(); printf(请选择:); scanf(%d,&choice); fflush(std

8、in);/清空缓冲区 switch (choice) case 1: add_stu(); break; case 2: show_all(); break; case 3: find_stu(); break; case 4: modify_stu(); break; case 5: remove_stu(); break; case 6: sort_list(); break; case 7: save_to_file(); break; case 8: read_from_file(); break; case 9: picture(); break; case 0: quit();ex

9、it(0); break; default: break; system(pause);/暂停批文件的处理并显示消息 intinit() head = (student *)malloc(_LEN);/为头结点申请空间 if (!head) /如果申请空间失败,返回 return OVERFLOW; head-next = NULL;/指向下一节点(空) curr = head-next;/当前节点指针指向第一个结点 total = 0;/当前节点个数初始化为0(头结点不计算在) return DONE; /*功能:头插法添加新节点,并刷新学生人数 */intadd_stu() student

10、 *add = (student *)malloc(_LEN); curr = head-next;/当前节点指针指向第一个节点 printf(t=当前已存入 %d 个同学n,total); printf(请输入第 %d 个学生的信息n,total+1); if (BACK = entering(add) free(add); return BACK; head-next = add;/头结点指针域指向新建的节点 add-next = curr;/新建节点指针域指向第一个节点 curr = add; /当前节点指向新建的节点 total += 1; /更新学生总人数 return DONE;/

11、*功能:显示所有学生信息 */intshow_all() if ( 0 = total ) printf(t=没有可供显示的学生信息!n); return NOFOUND; curr = head-next;/当前节点指针指向第一个节点 printf(t%4s%12s%12s,序号,学号,姓名); for (int m=0; m_COURSES; m+) printf(%7s,科目); printf(n); printf(t-n); for (inti=1; inext;/当前节点指针后移 printf(t-n); return DONE;/*功能:查找指定学生信息 */intfind_stu

12、() charstu_name11; int flag=1; printf(请输入要查找的学生姓名:); scanf(%s,stu_name); curr = head-next;/指向第一个节点 while (curr != NULL) if (strcmp(stu_name,curr-name) = 0) printf(t%4s%12s%12s,序号,学号,姓名); for (int m=0; mnext; +flag; printf(t=没有找到 %s !请仔细核对姓名再查找n,stu_name); return NOFOUND;/*功能:修改指定学生的所有信息 */intmodify_

13、stu() charstu_name11; int flag=1; curr = head-next;/指向第一个节点 printf(请输入要修改的学生的姓名:); scanf(%s,stu_name); while (curr != NULL) if (strcmp(stu_name,curr-name) = 0) printf(t%4s%12s%12s,序号,学号,姓名); for (int m=0; mnext; +flag; printf(t=没有找到 %s !请仔细核对姓名n,stu_name); return NOFOUND;/*功能:删除指定学生 */intremove_stu(

14、) student *pre=head; charstu_name11; curr = head-next;/指向第一个节点 printf(请输入要删除的学生的姓名:); scanf(%s,stu_name); while (curr != NULL) if (strcmp(stu_name,curr-name) = 0) pre-next = curr-next; free(curr); -total; printf(t=已成功删除%sn,stu_name); return DONE; pre = pre-next; curr = curr-next; printf(t=没有找到 %s !请

15、仔细核对姓名n,stu_name); return NOFOUND;/*功能:对所有学生排序 */intsort_list() student *temp = (student *)malloc(_LEN); student *curr_i = head-next; student *curr_j = NULL; char choice=0; printf(t t1-按学号排序 .t2-按姓名排序 . n); printf(t t3-按科目排序 .t0-退 出 排 序. n); printf(请选择:); scanf(%c,&choice); fflush(stdin); switch (ch

16、oice) case 1: while(curr_i-next != NULL) curr_j = curr_i-next; while (curr_j != NULL) if (curr_i-numcurr_j-num) change(curr_i,curr_j,temp); curr_j = curr_j-next; curr_i = curr_i-next; printf(t=排序成功!n); break; case 2: while(curr_i-next != NULL) curr_j = curr_i-next; while (curr_j != NULL) if (strcmp(

17、curr_i-name , curr_j-name) 0) change(curr_i,curr_j,temp); curr_j = curr_j-next; curr_i = curr_i-next; printf(t=排序成功!n); break; case 3: while(curr_i-next != NULL) curr_j = curr_i-next; while (curr_j != NULL) if (curr_i-scores0 scores0) change(curr_i,curr_j,temp); curr_j = curr_j-next; curr_i = curr_i

18、-next; printf(t=排序成功!n); break; case 0: free(temp); return BACK; default: printf(t=输入有误!n);break; free(temp); return DONE;/*功能:保存数据到文件 */intsave_to_file() curr=head-next; if (total = 0) printf(t=目前还没有任何信息,不用保存!n); return BACK; FILE *fp; if(fp=fopen(record.dat,wb)=NULL) printf(t=文件打开失败!n); return OPE

19、NFAIL; while (curr != NULL) /将数据成块写入文件 fwrite(char *)curr, _LEN, 1, fp); curr=curr-next; fclose(fp); printf(t=信息已成功保存至文件record.dat文件中n); return DONE;/*功能:从文件中读取数据 */intread_from_file() char judge=y; FILE *fp; if(fp=fopen(record.dat,r)=NULL) printf(文件不存在或者打开失败!n); return OPENFAIL; printf(t=读取文件会覆盖当前信

20、息!是否确定载入文件?(y/n):); scanf(%c,&judge); if (judge=n | judge=N) return BACK; quit();/释放以前所有信息的空间 init();/重新初始化链表 curr = head;/当前节点指针指向头结点 student *add=(student *)malloc(_LEN);/申请空间存放读取的信息 while (fread(char *)add, _LEN, 1, fp)/由于存储的信息是最新的信息在前,所以读取的时候将其添加在链表尾 add-next=curr-next; curr-next=add; curr=add;

21、add=(student *)malloc(_LEN); +total; fclose(fp); printf(t=文件载入成功!当前已有%d个学生。n,total); return DONE;/*功能:释放存 */int quit() curr =head-next; student *temp=curr; while(curr != NULL) temp=curr-next; free(curr); curr=temp; curr=NULL; temp=NULL; free(head);/释放头节点 return DONE;/*功能:录入一个学生的全部信息 */int entering(s

22、tudent *input) printf(n请输入学生的学号(输入0退出添加):); scanf(%d,&input-num); if (0 = input-num) return BACK; printf(请输入学生的姓名(五个汉字以):); scanf(%s,&input-name); printf(请输入%d门科目的成绩(用空格隔开):, _COURSES); for (inti=0; iscoresi); return DONE;/*功能:显示指定学生的所有信息 */voidshow_stu(student *show, int serial) printf(t%4d%12d%12s

23、,serial,show-num,show-name); for (inti=0; iscoresi); printf(n);/*功能:根据权限进入不同的界面 */void start() printf(n) printf(ttt欢迎使用学生成绩管理系统n); printf(t*n); printf(t|t1-添 加 学 生.t2-显 示 信 息. |n); printf(t|t3-查 找 学 生.t4-修 改 信 息. |n); printf(t|t5-删 除 学 生.t6-学 生 排 序. |n); printf(t|t7-信 息 存 档.t8-读 取 存 档. |n); printf(t

24、|t9-成 绩 统 计.t0-退 出. |n); printf(t*n);void change(student *former, student *latter,student *temp) *temp = *former; strcpy(former-name , latter-name); strcpy(latter-name , temp-name); former-num = latter-num; latter-num = temp-num; for (inti=0; iscoresi = latter-scoresi; latter-scoresi = temp-scoresi; voidbing(double a,doubleb,int c) initgraph(640,480); doublex,y; char s= A:10080 红 ; B:8060 蓝 ; C:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1