学生成绩管理计划系统C语言知识.doc
《学生成绩管理计划系统C语言知识.doc》由会员分享,可在线阅读,更多相关《学生成绩管理计划系统C语言知识.doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、#+福建工程学院计算机与信息科学系实验报告 2012 2013 学年第 1 学期 任课老师: 章静 课程名称 结构化程序综合设计班级计算机1001座号3100301114姓名张扬文实验题目学生成绩管理系统实验时间实验开始日期:2012/2/24 报告提交日期:2012/3/10 实验目的、要求1该实验的课内学时是4个课时。2程序完成后应该完成如下基本功能:1)用自定义结构体typedef struct设计该软件的数据结构;2)用数组或指针链表将所有学生的数据按照学号顺序链接起来;3)程序能够按照学号顺序输入学生的三门成绩,并计算平均成绩和总成绩。4)程序能够显示已经输入的指定学号的学生成绩以及
2、平均成绩和总成绩。5)程序能够按要求显示指定分数段的学生成绩以及平均成绩和总成绩。6)能够统计班级总人数、班级平均成绩。7)能够增加和删除指定学生的成绩。8)按照指定的要求以及顺序(升序或降序)显示学生成绩以及平均成绩和总成绩。 实验步骤与内容 按如下顺序写:1、 主要设计思想;学生成绩管理系统包含多种功能,可以输入学生成绩,删除,插入,排序,查找等等。输入的信息又包含学生姓名,学号,各科成绩。所以首先要定义一个结构体:typedef struct node char id20; char name15; int scoreMAXCOURSE; int sum; double average;
3、 struct node *next;Student;根据结构体中的内容飙血程序。2、 主要数据结构及其解释在此次程序设计中用了链表来实现对数据的处理,并设计了菜单界面如图,根据switch语句来对用户的选择: 3、 模块关系图; 主函数输入学生信息打印成绩计算平均分和总分查找学生成绩插入学生成绩显示分数段的学生按总分平均分降序排列菜单4、 所有函数的简要说明;1) 插入函数Insert_Before();主要是要重新加入学生的信息,通过头插法。2) 计算平均分和总分Count_Score();将输入的数据计算出学生的平均分和总分。3) 删除学生信息Del_Student();删除某个学生的成
4、绩。4) 按姓名查找Searchname_Student();通过输入学生的姓名找到学生的成绩。5) 计算班级总人数people=Count_People();将总的输入学生人数打印出来。6) 显示某分数段学生信息Section_Score();首先选择你要某科目的成绩并输入成绩的范围,按条件输出学生成绩。7) 按总分,平均分降序排列Descend_English();将输入的全部学生成绩按总分排序。 5、 所有源代码; /*学生成绩管理系统 C语言*/#include #include #include #define MAXID 10#define MAXNAME 20#define MA
5、XCOURSE 3/* 学生数据结构 */typedef struct node char id20; char name15; int scoreMAXCOURSE; int sum; double average; struct node *next;Student;/* 头指针 */Student *head = NULL;/*课程名称*/char ClassNameMAXCOURSE20=数学,英语,计算机;/* 菜单 */int Menu() system(cls); fflush(stdin); printf( 计算机1001 张扬文 3100301114 n); printf(n
6、); printf(*学生成绩管理系统*n); printf(n); printf( 1-初始化n); printf( 2-输入学生信息n); printf( 3-计算所有学生的总分和平均分n); printf( 4-打印全部学生信息n); printf( 5-查找学号或姓名删除学生信息n); printf( 6-按姓名查找学生信息n); printf( 7-按学号查找学生信息n); printf( 8-查找某一科成绩段学生信息n); printf( 9-插入学生信息到链表中n); printf( 10-按总分或平均分降序排列学生成绩n); printf( 0-退出n); return 0;/
7、*初始化*/Student *Init() int i; Student *head; head=(Student *)malloc(sizeof(Student); head-next=NULL; return head;/*检查学号*/char Check_ID(char *s) int i; if(strlen(s)=0|strlen(s)MAXID)return 0; for(i=0;i 0 & si MAXNAME) return 0; for(i=0; i= a & si = A & si =0 & snext; while(p!=NULL) if(strcmp(s,p-id)=0
8、) return 1; p=p-next; return 0;/* 输入学生信息 */void Input_Score(Student *p) /* 学号 */ printf(n请输入学号: ); do gets(p-id); if (!Check_ID(p-id) printf(输入不正确!请重新输入学号: ); else if (Is_SameID(p-id) printf(存在已学号!请重新输入学号: ); while (!(Check_ID(p-id) & !Is_SameID(p-id); /* 姓名 */ printf(请输入姓名: ); do gets(p-name); if (
9、!Check_Name(p-name) printf(输入不正确!请重新输入姓名: ); while (!Check_Name(p-name); /输入成绩 int i; for(i=0; iscorei); if(!Check_Score(p-scorei) printf(输入成绩不正确!n请重新输入%s成绩:,ClassNamei); while(!Check_Score(p-scorei); p-average = -1; p-sum = -1; /* 头插法插入节点 */void Insert_Before() Student *s =(Student*) malloc(sizeof(
10、Student); Input_Score(s); s-next = head-next; head-next = s;/*输出学生成绩信息*/void Output_Score(Student *p) int i; printf(n姓名:%s, 学号:%s n,p-name,p-id); for(i=0; iscorei); printf(总分:%d 平均分:%.2f n,p-sum,p-average);/*删除节点q*/void Del_Node(Student *q) Student *p=head; while(p-next!=q) p=p-next; p-next=q-next;
11、free(q);/*插入学生成绩*/void Insert_List() int x; printf(输入你要插入的学生数:); scanf(%d,&x); while(x!=0) getchar(); Student *p =(Student*) malloc(sizeof(Student); printf(n请输入学号: ); do gets(p-id); if (!Check_ID(p-id) printf(输入不正确!请重新输入学号: ); else if (Is_SameID(p-id) printf(存在已学号!请重新输入学号: ); while (!(Check_ID(p-id)
12、 & !Is_SameID(p-id); /* 姓名 */ printf(请输入姓名: ); do gets(p-name); if (!Check_Name(p-name) printf(输入不正确!请重新输入姓名: ); while (!Check_Name(p-name); /输入成绩 int i; for(i=0; iscorei); do if(!Check_Score(p-scorei) printf(输入成绩不正确!请重新输入%s成绩:,ClassNamei); while(!Check_Score(p-scorei); p-average = -1; p-sum = -1; p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩 成就 管理 计划 规划 系统 语言 知识
限制150内