C语言程序设计-成绩管理系统程序设计实验报告.doc
《C语言程序设计-成绩管理系统程序设计实验报告.doc》由会员分享,可在线阅读,更多相关《C语言程序设计-成绩管理系统程序设计实验报告.doc(34页珍藏版)》请在三一文库上搜索。
1、北京航空航天大学北海学院实验报告学 院: 软件与信息工程学院 专业班级: 软件工程3班 课 程:学生成绩管理系统程序设计实践 指导老师: 学号及姓名:一实验目的: 通过课程设计,提高自己动手的能力,让实践和理论相结合,进一步巩固语言程序设计的课程内容,掌握工程软件的基本设计方法。 学会将知识应用于实践,提高分析和解决问题的能力,加强综合能力。 为以后计算机的学习打下坚实的基础,有利于毕业时做毕业设计。二实验内容: 运用结构体和共用体,以及单链表和循环的知识点编辑一个简单的学生基本信息管理系统,使之能够完成学生基本信息的录入、修改、插入、查询、排序、打印、退出操作。 执行编译操作,并根据提示调试
2、此程序,排除所有的错误和警告。直到编译成功为止。 执行运行操作,直到全部程序能够运行成功为止。 做完后请老师检查,并能回答老师所提的相关问题。三. 需求分析:1. 该学生信息管理系统能够完成基本的信息处理,如录入,保存,读取,输出,修改,删除,添加,统计,排序等项目操作。实现统计用户的总分和平均分。能够查看单个用户的各科成绩2. 每个模块的功能如下:a) 录入模块:可先后输入学号,姓名,高数成绩,计算机成绩,英语成绩;b) 保存模块:用于数据存盘处理,如果用户没有专门进行此操作且对数 据有修改,在退出时系统会提示用户存盘。c) 查询模块:用于按编号或姓名来查询用户记录d) 输出模块:可输出读取
3、的学生信息与平均成绩;e) 修改模块: 用于修改用户记录。先按输入的编号查询到该记录,然后提示用户修改编号之外的值,但是编号不能修改;f) 删除模块:可删除所读取的学生信息;g) 插入模块:用于插入记录。即按编号查询到要插入的结点的位置,然后在该编号之后插入一个新结点;h) 排序模块:利用插入排序实现单链表的按总分字段的降序排序,格式是从高到低;i) 统计模块:用于分别统计该班的总分第一名和单科第一及各科不及格的人数;j) 退出模块:可直接退出学生信息管理系统; 该学生信息管理系统是在VC+的环境下运行的。该信息系统要测试的数据如下: 录入模块:学号 姓名 高数 英语 计算机 1 XXX 99
4、 80 99 2 XXX 99 89 89 3 XX 67 70 58 4 XXX 78 67 78 保存模块:输入文件名即可保存于该文件; 查询模块:输入相应的文件名可调出相应的学生信息; 输出模块:可输出录入,修改,删除,添加后的学生信息; 修改模块: 修改信息( 3 XX 67 70 58 ) 删除模块:删除信息( 2 XX 99 89 89) 添加模块:添加信息(5 XXX 78 87 89) 排序模块:按平均成绩由小到大排列并输出,如下:学号 姓名 高数 英语 计算机 平均成绩 3 XX 67 70 58 65.000000 4 xxx 78 67 78 74.000000 5 XX
5、X 78 87 89 84.000000 1 xxx 99 80 99 92.000000 统计模块:统计该班的总分第一名和单科第一及各科不及格的人数,如下: 退出模块:输入 0 即可退出系统;四 . 概要设计: 主函数结构图:录 入插 入输 出修 改删 除保 存排 序退 出删 除统 计 模块功能详细说明;A. 录入模块: 录入基本信息;B. 保存模块:输入文件名即可保存于该文件;C. 读取模块:输入相应的文件名可调出相应的学生信息;D. 输出模块:可输出录入,修改,删除,添加后的学生 信息;E. 修改模块: 修改学生信息;F. 删除模块:只要输入要删除的学生学号,就可删除该学生的有关信息,以
6、后输出时就不再显示该学生的信息;G. 添加模块:添加学生信息;H. 统计(排序)模块:按平均成绩由小到大排列并输出;I. 退出模块:推出系统;五、详细设计及运行结果流程图, 函数之间相互调用的图示 ,程序设计及编码, 运行结果。 各模块的程序控制图:保 存 模 块保存基本信息并输入保存的文件名结 束YN录 入 模 块是 否 继 续 录 入录入基本信息结 束YN读 取 模 块是 否 读 取输入保存的文件名,即可结 束YN查 询 模 块输出所录入的学生成绩信息结 束修 改 模 块是 否 修 改输入要修改的学号结 束YN英语数学平均成绩C语言姓名删 除 模 块输入删除学号结 束YN是 否 删 除添
7、加 模 块是 否 继 续 添 加输入添加信息结 束YN统 计 模 块按学生成绩由低到高排列结 束 函数之间相互调用的图示:主函数调 用 录 入函 数调 用 保 存 函 数调 用 查 询 函 数调 用 修 改 函 数调 用 删 除 函 数 调用输出函数结束结束结束结束结束调 用 排 序 函 数 结束调 用 读 取 模 块调 用 保 存 函 数调 用 保 存 函 数调 用 添 加 函 数调 用 保 存 函 数调 用 查 找 函 数结束结束调用输出函数、(3)各模块流程图 结 束 Y否开 始head-next=NULL;p2=head;继续输入(Y/N)? p2-next=p1;p2=p1;NY录入
8、模块输入学生成绩信息 return head返回return headp-next=head-next;head-next=p;真q=q-nextq-next!=NULL开始输入新增学生信息申请结点p=headhead=NULL假假查询学生信息:真假真Flag!=0Head=NULL无学生信息开始退出按学号查询按姓名查询2Number=2Number=1Number=0Switch(number)开始p1=head输入学生学号xx!=p1-num&p1-next!=NULLp1=p1-next返回主菜单输出无信息输出学生信息x=p1-num真真学生信息的删除:NN无此学生信息输出学生总人数su
9、m-p2-next=p1-next;free(p1)head=p1-next;free(p1)p1=headYnumber=p1-numNP2=p1;p1=p1-nextY开始输入要删除学生的学号numberhead=NULLNp1=headNumber!=p1-num&p1-next!=NULL 测试与行结果A录入模块:B删除模块:C查询模块:D修改模块:E插入模块:F统计模块:G排序模块:H保存模块:源代码:/*对用户的有效信息进行输入、排序等操作实现统计用户的总分和平均分能够查看单个用户的各科成绩*/#include stdio.h /*标准输入输出函数库*/#include stdli
10、b.h /*标准函数库*/#include string.h /*字符串函数库*/#include conio.h /*屏幕操作函数库*/#define HEADER1 (#) -STUDENT-() n#define HEADER4 W E L C O M E B A B Y ! n#define HEADER2 | number | name |Eng|Math|Comp | sum | ave |mici | n#define HEADER3 |-|-|-|-|-|-|-|-| #define FORMAT | %-10s |%-15s|%4d|%4d|%4d| %4d | %.2f |
11、%4d |n#define DATA p-data.num,p-data.name,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.total,p-data.ave,p-data.mingci#define END - nint saveflag=0; /*是否需要存盘的标志变量*/*定义与学生有关的数据结构*/typedef struct student /*标记为student*/char num10; /*学号*/char name15; /*姓名*/int cgrade; /*C语言成绩*/int mgrade; /*数学成绩*/int
12、 egrade; /*英语成绩*/int total; /*总分*/float ave; /*平均分*/int mingci; /*名次*/;/*定义每条记录或结点的数据结构,标记为:node*/typedef struct nodestruct student data; /*数据域*/struct node *next; /*指针域*/Node,*Link; /*Node为node类型的结构变量,*Link为node类型的指针变量*/void menu() /*主菜单*/system(cls); /*调用DOS命令,清屏.与clrscr()功能相同*/ /*在文本模式中选择新的字符颜色*/
13、 /*在文本窗口中设置光标*/printf( The Students Grade Management System nn);printf( *_ 为您服务是俺的荣幸!_* nn);printf( _ 菜单_ nnn);printf( * 1 input (_O Not find this student!n);void Disp(Link l) /*显示单链表l中存储的学生记录,内容为student结构中定义的内容*/Node *p;p=l-next; /*l存储的是单链表中头结点的指针,该头结点没有存储学生信息,指针域指向的后继结点才有学生信息*/if(!p) /*p=NULL,NUll
14、在stdlib中定义为*/ printf(n= Not student record!n); getchar(); return;printf(nn);printheader(); /*输出表格头部*/while(p) /*逐条输出链表中存储的学生信息*/ printdata(p); p=p-next; /*移动至下一个结点*/ printf(HEADER3);getchar();Node* Locate(Link l,char findmess,char nameornum)Node *r;if(strcmp(nameornum,num)=0) /*按学号查询*/ r=l-next; whi
15、le(r) if(strcmp(r-data.num,findmess)=0) /*若找到findmess值的学号*/ return r; r=r-next; else if(strcmp(nameornum,name)=0) /*按姓名查询*/ r=l-next; while(r) if(strcmp(r-data.name,findmess)=0) /*若找到findmess值的学生姓名*/ return r; r=r-next; return 0; /*若未找到,返回一个空指针*/*输入字符串,并进行长度验证(长度lens)printf(n exceed the required len
16、gth! n); /*进行长度校验,超过lens值重新输入*/ while(strlen(n)lens); strcpy(t,n); /*将输入的字符串拷贝到字符串t中*/*输入分数,分数100 | t100 | tnext;system(cls);Disp(l); /*先打印出已有的学生信息*/while(r-next!=NULL) r=r-next; /*将指针移至于链表最末尾,准备添加记录*/while(1) /*一次可输入多条记录,直至输入学号为的记录结点添加操作*/ while(1) /*输入学号,保证该学号没有被使用,若输入学号为,则退出添加记录操作*/ stringinput(n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 成绩管理系统 程序设计 实验 报告
链接地址:https://www.31doc.com/p-3295139.html