收藏 分销(赏)

班级成绩标准管理系统.doc

上传人:精*** 文档编号:2950655 上传时间:2024-06-11 格式:DOC 页数:25 大小:279.04KB
下载 相关 举报
班级成绩标准管理系统.doc_第1页
第1页 / 共25页
班级成绩标准管理系统.doc_第2页
第2页 / 共25页
班级成绩标准管理系统.doc_第3页
第3页 / 共25页
班级成绩标准管理系统.doc_第4页
第4页 / 共25页
班级成绩标准管理系统.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、武汉轻工大学 数计学院 C语言课程设计报告班级:计算机类1307班学号: 姓名: 韩晶 指引教师:贾瑜 日期: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/定义学生信息构造体typedefstructStudentInfo/数据域unsigned intnum;/学号char name11;/姓名f

4、loat scores_COURSES;/各科成绩/指针域structStudentInfo *next;/存储下一节点地址student;/endstudent *head=NULL;/声明链表头结点student *curr=NULL;/声明指向当前节点指针int total = 0;/声明当前节点个数intinit();/初始化链表intadd_stu();/添加新节点intshow_all();/显示所有学生信息intfind_stu();/查找指定信息节点intmodify_stu();/修改指定信息节点intremove_stu();/删除指定信息节点intsort_list();

5、/对链表排序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,student *latter,student *temp);/互换两个节点数据域void main()

6、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(password,password1);if(flag1=0 & flag2=0)printf(tttt

7、 登陆成功!nn);menu();break;elseprintf (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(stdin);/清空缓冲区switch (choice)case 1:add_stu();break;case 2:show_all()

8、;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();exit(0);break;default:break;system(pause);/暂停批文献解决并显示消息intinit()head = (student *)malloc(_LEN);/为

9、头结点申请空间if (!head)/如果申请空间失败,返回return OVERFLOW;head-next = NULL;/指向下一节点(空)curr = head-next;/当前节点指针指向第一种结点total = 0;/当前节点个数初始化为0(头结点不计算在内)return DONE;/*功能:头插法添加新节点,并刷新学生人数 */intadd_stu()student *add = (student *)malloc(_LEN);curr = head-next;/当前节点指针指向第一种节点printf(t=当前已存入 %d 个同窗n,total);printf(请输入第 %d 个学

10、生信息n,total+1);if (BACK = entering(add)free(add);return BACK;head-next = add;/头结点指针域指向新建节点add-next = curr;/新建节点指针域指向第一种节点curr = add; /当前节点指向新建节点total += 1; /更新学生总人数return DONE;/*功能:显示所有学生信息 */intshow_all()if ( 0 = total )printf(t=没有可供显示学生信息!n);return NOFOUND;curr = head-next;/当前节点指针指向第一种节点printf(t%4s

11、%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()charstu_name11;int flag=1;printf(请输入要查找学生姓名:);scanf(%s,stu_name);curr = head-next;/指向第一种节点while (curr != NULL)if (strcmp(stu_name,curr-nam

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

13、f(t%4s%12s%12s,序号,学号,姓名);for (int m=0;mnext;+flag;printf(t=没有找到 %s !请仔细核对姓名n,stu_name);return NOFOUND;/*功能:删除指定学生 */intremove_stu()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-n

14、ext;free(curr);-total;printf(t=已成功删除%sn,stu_name);return DONE;pre = pre-next;curr = curr-next;printf(t=没有找到 %s !请仔细核对姓名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-按学号排序 .t

15、2-按姓名排序 . n);printf(t t3-按科目排序 .t0-退 出 排 序. n);printf(请选取:);scanf(%c,&choice);fflush(stdin);switch (choice)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;

16、 case 2:while(curr_i-next != NULL)curr_j = curr_i-next;while (curr_j != NULL)if (strcmp(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-scor

17、es0 scores0)change(curr_i,curr_j,temp);curr_j = curr_j-next;curr_i = curr_i-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;i

18、f(fp=fopen(record.dat,wb)=NULL)printf(t=文献打开失败!n);return OPENFAIL;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(文献不存在或

19、者打开失败!n);return OPENFAIL;printf(t=读取文献会覆盖当前信息!与否拟定载入文献?(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

20、;curr-next=add;curr=add;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

21、entering(student *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,seria

22、l,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|t9-成 绩 统 计.t0-退

23、 出. |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,

24、int c)initgraph(640,480);doublex,y; char s= A:10080 红 ;B:8060 蓝 ;C:600 黑 ;x=a/(a+b+c)*6; y=(a+b)/(a+b+c)*6;circle(320,240,160);setfillcolor(BLUE);fillpie(160,80,480,400,0,y);setfillcolor(RED);fillpie(160,80,480,400,0,x);outtextxy(160,40,s);getch();closegraph();voidzhu(float a,floatb,float c)initgrap

25、h(640,480);setcolor(YELLOW);line(200,350,600,350);line(200,350,200,50);line(190,60,200,50);line(210,60,200,50);line(590,340,600,350);line(590,360,600,350);char s=科目;outtextxy(580,320,s);char p=平均分;outtextxy(100,100,p);setfillcolor(LIGHTMAGENTA);fillrectangle(250,300,300,350);fillrectangle(350,250,40

26、0,350);fillrectangle(450,290,500,350);getch();closegraph();int picture()int A,B,C;double s;floata,b,c;int choice=0;printf(t|t1-每个分数段人数饼状图.t2-平均成绩柱状图. |n);printf(请选取:);scanf(%d,&choice);student *temp = (student *)malloc(_LEN);student *curr_i = head-next;student *curr_j = NULL;while(curr_i-next != NUL

27、L)curr_j = curr_i-next;while (curr_j != NULL)s=(curr_i-scores0+curr_i-scores1+curr_i-scores2)/3;if (s/80!=0) A+;else if(s/60!=0) B+;else C+;a=a+curr_i-scores0;b=b+curr_i-scores1;c=c+curr_i-scores2;change(curr_i,curr_j,temp);curr_j = curr_j-next;curr_i = curr_i-next;switch (choice)case 1:bing(A,B,C);break; case 2:zhu(a,b,c);break;default:break;return DONE;七.运营成果(一)班级管理系统

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服