文档详情

课程设计报告学生成绩管理系统

cn****1
实名认证
店铺
DOC
309.01KB
约12页
文档ID:424229363
课程设计报告学生成绩管理系统_第1页
1/12

学生成绩管理学生成绩管理系统 本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和单链表的各种基本操作本程序中涉及结构体、单链表、文件等方面的知识通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,掌握利用单链表存储结构实现对学生成绩管理的原理,为进一步开发出高质量的管理信息系统打下坚实的基础一、问题定义创建一个学生成绩管理系统假设系统中每个学生记录只包括班级、学号、姓名、性别、数学成绩、英语成绩、计算机成绩、总分、平均分、名次等信息程序的运行效果如下图所示,选择任意菜单后,实现相应功能图1.1 学生成绩管理系统功能需求二、系统设计2.1 总体设计采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务学生成绩管理系统输入记录模块查询记录模块更新记录模块统计记录模块输出记录模块从文件读入从键盘输入按学号查询按班级查询按姓名查询删除记录按名次查询排序记录各科最高分、最低分和平均分输出至文件输出至屏幕图2.1 学生成绩管理系统功能模块图本成绩管理系统要求采用单链表实现,如上图2.1所示,它由如下五大功能模块组成:l 输入记录模块。

完成将数据存入单链表的工作记录可以从以二进制形式存储的数据文件中读入,也可从键盘逐个输入学生记录学生记录由学生的基本信息和成绩信息字段构成当从数据文件中读入记录时,也就是把在以记录为单位存储的数据文件中,将记录逐条复制到单链表中l 查询记录模块完成在单链表中查找满足相关条件的学生记录在此成绩管理系统中,用户可以按照学生的班级、学号、名次或姓名在单链表中进行查找若找到该学生的记录,则返回指向该学生的记录的指针否则返回一个值为NULL的空指针,并打印出未找到该学生记录的提示信息l 更新记录模块完成对学生记录的维护在此成绩管理系统中,它实现了对学生记录的删除和排序操作,并将修改后的数据存入源数据文件l 统计记录模块完成对各门功课最高分和不及格人数的统计l 输出记录模块一是实现对学生记录的存盘,即将记录写入数据文件中;二是实现将记录信息以表格的形式在屏幕上打印出来 2.2 详细设计2.2.1数据结构设计l 学生成绩信息结构体#ifndef H_STUDENT_HH /*如果H_STUDENT_HH没有定义*/#define H_STUDENT_HH /*那就定义 H_STUDENT_HH */#include #include #include #define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/#define numsubs 3 /*学科数目*/typedef struct message_student /*结构体定义*/{ char number[6]; /*学号*/ char number1[6]; /*班级*/char name[20]; /*学生姓名*/char sex[4]; /*性别*/float subject[numsubs]; /*科目*/float score; /*总分*/float average; /*平均分*/int index;}student;extern int numstus; /*学生数目*/extern student *pointer; /*指向结构体数组*/extern int lens;int menu_select(); /*声明函数*/int dakaiwenjian(student stu[]); /*打开文件*/int chaxunjilu(student stud[]); /*查询记录*/int cunchujilu(student stud[]); /*存储记录*/void huanying(); /*欢迎界面*/void xianshijilu1(); /*显示记录*/void showtable(); /*显示桌面*/void paixu(student stu[]); /*排序*/void shanchujilu(student stu[],int i); /*删除*/void tianjiajilu(student stud[]); /*添加记录*/void xianshijilu(student stud[],int n1,int n2); /*显示记录*/void xiugaijilu(student stud[]); /*修改记录*/void jishu(student stud[]); /*为记录计数*/void paixunum(student stud[]); /*为记录排序*/void paixunum2(student stud[]); /*为记录排序*/void paixuname(student stud[]); /*为记录排序*/void paixuname2(student stud[]); /*为记录排序*/void paixujishu(student stud[]); /*为记录排序*/void paixujishu2(student stud[]); /*为记录排序*/void tongjishuju(student stud[]); /*统计记录*/void xianshijilu1(); /*显示记录*/2.2.2 主控main()函数执行流程判断键值,调用相应函数,完成相应功能开始以可读写的方式打开一个数据文件将此文件的内容读出,并存入一个新的单链表中调用menu_select()菜单函数进入if函数输入[0~8]中的一个数值,选择相应操作调用函数writetotext,进行写数据文件操作结束输入是否为0 ?是否已对修改进行了存盘是是否否图2.2 主控函数执行流程图 本成绩管理系统根据按键判断。

在判断键值时,有效的输入为本0至8之间的任意数值,其他输入都被视为错误按键若输入为0(即变量select=0),它会继续判断,如果对记录进行过更新操作,那么是否已经保存过新的数据,若没有,则全局变量saveflage=1,系统会提示用户是否需要进行数据存盘操作,用户输入y或n,系统会自动进行存盘操作后再执行退出成绩管理系统的操作若选择1,则调用tianjiajilu函数,执行增加学生记录操作;若选择2,则调用chaxunjilu函数,执行查询学生记录操作;若选择3,则首先调用chaxunjilu函数,执行查询学生记录操作,查找出学生纪录后再调用shanchujilu函数,执行删除学生记录操作;若选择4,则调用sort函数,执行按降序排序学生记录操作;若选择5,则调用tongjishuju函数,执行统计学生记录操作;若选择6,则调用dakaiwenjian函数,打开一个已储存的文件;若选择8,则调用cunchujilu函数,执行将学生记录存入数据文件的操作;若选择0,break,退出系统;若输入为0~9之外的值,default,给出按键错误的提示"输入错误,请输入数字0~8:"2.2.3 函数功能描述l 函数名: strcmp 功  能: 串比较 用  法: int strcmp(char *str1, char *str2); 程序例: #include #include int main(void)  {     char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";     int ptr;     ptr = strcmp(buf2, buf1);     if (ptr > 0)        printf("buffer 2 is greater than buffer 1\n");     else        printf("buffer 2 is less than buffer 1\n");     ptr = strcmp(buf2, buf3);     if (ptr > 0)        printf("buffer 2 is greater than buffer 3\n");     else        printf("buffer 2 is less than buffer 3\n");     return 0;  }l 函数名: getchar 功  能: 从stdin流中读字符 用  法: int getchar(void); 程序例: #include int main(void) {    int c;    /* Note that getchar reads from stdin and       is line buffered; this means it will       not return until you press ENTER. */    while ((c = getchar()。

下载提示
相似文档
正为您匹配相似的精品文档