C语言学生信息管理系统报告
c语言学生管理系统课程设计报告 (2)
C语言学生管理系统课程设计报告1. 引言学生管理系统是一项常见的计算机应用程序,广泛应用于学校、培训机构等教育机构中。
本文将介绍一个基于C语言开发的学生管理系统,该系统具有以下功能:学生信息的录入、查询、修改和删除,以及成绩信息的录入、查询、统计和排序。
2. 系统设计2.1 功能模块学生管理系统主要包括以下功能模块:•学生信息录入模块:用于录入学生的基本信息,包括学号、姓名、性别、年龄等。
•学生信息查询模块:提供根据学号或姓名查询学生信息的功能。
•学生信息修改模块:允许修改学生的各项信息。
•学生信息删除模块:提供学生信息的删除功能。
•成绩信息录入模块:用于录入学生的成绩信息,包括科目和成绩。
•成绩信息查询模块:提供根据学号或科目查询学生成绩的功能。
•成绩统计模块:对学生的成绩进行统计,包括总分和平均分。
•成绩排序模块:按照总分对学生进行排序。
2.2 数据结构学生信息和成绩信息可以使用结构体存储。
定义如下:typedef struct {char id[20]; // 学生学号char name[20]; // 学生姓名char gender[5]; // 学生性别int age; // 学生年龄} Student;typedef struct {char id[20]; // 学生学号char subject[20]; // 科目float score; // 成绩} Score;通过结构体数组来存储多个学生的信息和成绩,如下所示:Student students[MAX_STUDENT_NUM];Score scores[MAX_SCORE_NUM];2.3 系统流程学生管理系统的流程图如下所示:graph LRA[学生信息录入] --> B[学生信息查询]A --> C[学生信息修改]A --> D[学生信息删除]A --> E[成绩信息录入]A --> F[成绩信息查询]A --> G[成绩统计]A --> H[成绩排序]3. 系统实现在C语言中,使用函数来实现不同的功能模块。
学生管理系统c语言课程设计报告
学生管理系统c语言课程设计报告1. 引言学生管理系统是现代教学管理中不可或缺的工具。
本报告将详细介绍一个基于C语言的学生管理系统的设计与实现。
学生管理系统用于记录学生信息、成绩管理、考勤管理、课程管理等功能,能够提高教学管理的效率和准确性。
2. 系统设计2.1 需求分析学生管理系统的主要功能包括: 1. 学生信息管理:添加、删除、修改学生的基本信息,如学号、姓名、年龄、性别等。
2. 成绩管理:录入学生的成绩,计算平均成绩。
3. 考勤管理:记录学生的考勤情况,统计缺勤次数。
4. 课程管理:添加、删除、修改课程信息,如课程编号、课程名称、教师姓名等。
2.2 系统架构学生管理系统采用模块化设计,分为四个模块: 1. 学生信息模块:实现学生信息的添加、删除、修改功能。
2. 成绩管理模块:实现成绩录入和平均成绩计算功能。
3. 考勤管理模块:实现考勤记录和缺勤次数统计功能。
4. 课程管理模块:实现课程信息的添加、删除、修改功能。
2.3 系统流程图st=>start: 开始op1=>operation: 添加学生信息op2=>operation: 删除学生信息op3=>operation: 修改学生信息op4=>operation: 成绩录入op5=>operation: 平均成绩计算op6=>operation: 考勤记录op7=>operation: 缺勤次数统计op8=>operation: 添加课程信息op9=>operation: 删除课程信息op10=>operation: 修改课程信息e=>end: 结束st->op1->op2->op3->op4->op5->op6->op7->op8->op9->op10->e 3. 功能实现3.1 学生信息管理3.1.1 添加学生信息通过输入学生的基本信息,将学生信息保存到系统中。
c语言学生信息管理系统设计报告
c语言学生信息管理系统设计报告随着教学质量和教学管理的要求不断提高,校园管理系统对于诸多困难领域的改善服务开始发挥着重要作用,而学生信息技术系统设计是实现校园管理质量提升的重要手段之一。
实施学生信息管理系统可以提高人力资源管理的效率,降低办理各项业务的成本,将学校管理变得更加规范和有效。
本报告旨在设计一套C语言学生信息管理系统,用于学校信息管理与市场营销管理,实现数据的及时收集、存储和处理,同时,改善学校的教学管理,提高教学质量,提升学生的学习体验。
首先,系统设计将涉及到C语言的语法和结构,以便理解和实现学生信息的管理。
其次,关于系统的功能,可以从学生信息管理、任课管理、教学管理、学术科研、职位设置、绩效考核等方面进行完善。
针对关键管理系统,为了实现系统的可靠性和安全性,将采用多种数据库技术,包括SQL Server、Oracle、MySQL等数据库技术,以及主流计算机语言C++、Java等,实现数据库的操作、学生信息管理系统的开发、学习管理系统的开发等技术需求。
此外,本报告还将对相关技术以及软件测试等内容进行分析,以保证学生信息管理系统的可靠性和稳定性。
本报告的完成,必须充分考虑C语言的基本知识,以及C语言学生信息管理系统在实施过程中的可能风险。
在实施过程中,应该通过计算机技术的应用、软件测试、数据库技术的改进等多方面分析,以保证系统在实施过程中的高效稳定性。
综上所述,本报告将实施C语言学生信息管理系统,实现学校信息管理与市场营销管理,旨在收集、存储和处理数据,同时提高教学管理的质量,提升学生的学习体验,实现学校的管理变得更加规范和有效。
此外,本报告还将深入探讨如何利用计算机技术、数据库技术、软件测试等相关技术,保证学生信息管理系统的可靠性和安全性。
c语言学生管理系统设计报告总结
C语言学生管理系统设计报告总结1. 引言本文档总结了一个基于C语言的学生管理系统的设计报告。
该系统旨在提供一个简便而有效的方式来管理学生的相关信息,包括学生基本信息、课程信息和成绩信息等。
2. 设计目标学生管理系统的设计目标如下:•提供学生基本信息的录入、修改和查询功能;•提供课程信息的录入、修改和查询功能;•提供学生成绩信息的录入、修改和查询功能;•提供统计分析学生成绩的功能;•提供数据的持久化存储。
3. 功能设计3.1 学生信息管理该功能模块包括学生信息的录入、修改和查询功能。
•录入学生信息:通过用户输入学生姓名、学号、年龄等信息,将学生信息添加到系统中;•修改学生信息:通过学号或姓名搜索学生,然后提供修改学生信息的选项;•查询学生信息:通过学号或姓名搜索学生,显示学生的基本信息。
3.2 课程信息管理该功能模块包括课程信息的录入、修改和查询功能。
•录入课程信息:通过用户输入课程名称、授课教师、上课时间等信息,将课程信息添加到系统中;•修改课程信息:通过课程名称搜索课程,然后提供修改课程信息的选项;•查询课程信息:通过课程名称搜索课程,显示课程的相关信息。
3.3 成绩信息管理该功能模块包括学生成绩信息的录入、修改和查询功能。
•录入成绩信息:通过学号和课程名称输入学生在某门课程的成绩,将成绩信息添加到系统中;•修改成绩信息:通过学号和课程名称搜索学生成绩,然后提供修改成绩的选项;•查询成绩信息:通过学号和课程名称搜索学生成绩,显示学生在该课程的成绩。
3.4 统计分析功能该功能模块包括对学生成绩进行统计分析的功能。
•统计班级平均分:将某门课程所有学生的成绩加起来,计算平均分;•统计最高分和最低分:找出某门课程学生成绩中的最高分和最低分。
3.5 数据持久化存储该功能模块包括将学生信息、课程信息、成绩信息等数据持久化存储的功能。
•数据存储:将学生信息、课程信息和成绩信息保存到文件中;•数据读取:从文件中读取学生信息、课程信息和成绩信息。
c语言课程设计报告---学生信息管理系统
题目:学生信息管理系统一、需求分析任务要求:自学C语言中有关链表及外部文件得内容,设计学生信息管理系统。
具体要求如下:◆建立学生信息,信息至少包括名字、性别、年龄、学号、系别、家庭信息等内容;◆能够提供添加、删除与修改学生信息等功能;◆能将通讯录保存在文件中;◆能够按指定方式输出学生信息.系统功能需求分析:★1、为存储学生信息,需定义一个结构体类型,成员名字、性别、年龄、学号、系别、家庭信息等,并建立链表,定义该结构体类型得指针,用于指向各结点;★ 2、分别建立具有添加、删除、修改、查询等功能得子函数,完成相应功能,对程序实现模块化。
这其中要用到对链表得删除、插入等知识。
删除时用一结构体指针指向链表得第一个结点,检查该节点得值就是否等于输入得要删除得学号,若相等就删除,不相等则后移指针,直至表尾。
插入时也要先找到相应结点,再添加.★3、为实现存储功能,需用到文件得相关函数,打开文件,将添加、修改或删除得信息存入磁盘中。
★4、为以表格得形式输出文件,宏定义格式化输出语句,指定输出学生信息。
二、概要设计系统总体设计框架:对程序进行模块化,建立添加、修改、删除、查找与显示功能得子函数,各子函数中运用链表存储数据。
从主函数开始执行,调用各个子函数,并运用文件相关知识将信息存入磁盘中。
系统功能模块图:三、详细设计主要功能模块得算法设计思路如下:1、查询通讯录信息(void chakan())(1)为开辟一个新单元(2)输入查询关键字:(3)读取保存得文件数据输入ASCLL字符:(4)在链表中寻找相应结点;(5)调用输出函数,输出结点信息.2、添加信息函数(void add())(1)定义指向结构体变量得指针;(2)移动指针,找到插入结点;(3)在要插入得结点输入信息;(4)调用保存函数,打开文件,保存输入信息。
3、删除信息函数(void del())(1)定义指向结构体变量得指针;(2)用指针检验链表中就是否有记录,若没记录,返回主函数;(3)根据要修改得编号查找要删除得结点;(4)修改链表,删除对应结点。
C语言学生管理系统综合实验报告
count++;
printf("\n");}
}
printf("--------------------------------------------------\n");
}
void tjbhgrs()
{
int j,count=0;
printf("有不及格科目的学生是:\n");
}
}
void sx()
{
struct student temp;
int a,b,c;
for(a=0;a<i-1;a++)
{
c=a;
for(b=a+1;b<i;b++)
if(stu[b].ave>stu[c].ave)
c=b;
temp=stu[b];
stu[b]=stu[c];
stu[c]=temp;
佛山科学技术学院
实验报告
实验名称小型学生信息管理系统
实验项目编写一学生信息管理系统,用来管理学生基本信息及成绩信息
专业班级姓名XXX学号
指导教师成绩日期
一、试验目的
本实验为学生提供了一个既动手又动脑,上机实践的机会。学生通过分析和解决该实验,将课本上的理论知识和实际有机地结合起来,锻炼学生分析、解决较复杂问题的能力,提高学生编写综合系统程序的能力。
printf("\n");
}
printf("----------------------------------------------------------------\n");
C语言学生信息管理系统报告(附有完整代码)
程序设计报告(2009/2010学年第二学期)题目:简单学生信息管理专业软件工程,NIIT,学生姓名 ******班级学号 ******指导教师 ******指导单位软件学院日期 2010-4-231-评分项成绩评遵守机房规章制度(5分) 上机时的表现(5分)学习态度(5分)程序准备情况(5分) 分程序设计能力(10分)团队合作精神(5分)课题功能实现情况(10分) 细算法设计合理性(10分)用户界面设计(10分)报告书写认真程度(5分) 则内容详实程度(10分)文字表达熟练程度(10分)回答问题准确度(10分)简短教师签名: 评语年月日评分等级备评分等级有五种:优秀、良好、中等、及格、不及格注2-学生管理系统一、课题内容和要求1、系统的基本功能实现学生信息的录入、查询和更新。
2、要求(1)从键盘上录入学生资料,并保存到文件中。
学生资料文件中的数据记录不得少于30条。
相关数据要求格式如下:学生资料存放了学号、姓名、性别、出生日期、A课程成绩、B课程成绩、C 文件课程成绩格式如下:B051001 张三女 19870201 80 82 77B051002 李四女 19870301 80 80 80B051003 王二男 19870401 85 80 80。
(2)可以随时补录学生资料。
(3)能够按照不同的条件查询学生信息,并显示在屏幕上。
a) 按学号排序b) 按姓名排序c) 按单科总分排序d) 按学号查找学生各门课成绩和平均分数e) 按姓名查找学生各门课成绩和平均分数f) 按学生总分排序g) 查询各门课程的平均分数3-二、需求分析需要设计并实现一个综合的学生信息管理系统,要求系统能实现以下功能:录入、查询和更新学生信息,并保存到文件中;学生资料文件中的数据记录不得少于30条;可以随时补录学生资料;可以按学号排序、按姓名排序、按单科总分排序、按学号查找学生各门课成绩和平均分数、按姓名查找各门课成绩和平均分数、按学生总分排序、实现各门课程的平均分数。
c语言学生系统报告
c语言学生系统报告学生管理系统是管理学校学生信息的一个重要工具。
本系统使用C语言编写,实现了对学生信息的管理、增加、修改和查询功能,方便教师管理每个学生的个人信息和学习情况。
系统可以提高教师工作效率和管理水平,并能够迅速地处理学生信息,提高办公效率和工作效率。
一、需求分析此次系统的开发,主要是为了解决手动管理学生信息所带来的繁琐问题,达到高效的管理方式,实现以下需求:(1)方便快捷的输入、查询和管理学生信息。
(2)能够记录学生每次考试的成绩情况,方便教师进行评估。
(3)能够显示学生的年龄、性别、所在班级等信息,方便教师查看。
二、设计思路针对以上需求,设计了如下的系统结构:(1)数据采集模块:该模块用于对学生的基本信息进行录入,包括学生的姓名、年龄、性别、学号和班级等。
(2)数据管理模块:该模块用于对学生信息进行增加、修改和删除功能,实现对学生信息的管理。
(3)数据查询模块:该模块能够根据学生姓名、学号、班级等信息进行查询,方便教师快速查找学生信息。
三、系统功能实现(1)录入学生信息首先,系统需要录入学生的基本信息,包括学生的姓名、年龄、性别、学号和班级等,这些信息是后续管理工作的基础,教师需要认真核对每个学生的信息。
录入学生信息时,需要输入如下信息:姓名:请输入学生的姓名性别:请输入学生的性别(男/女)班级:请输入学生所在的班级在学生信息录入之后,系统需提供对学生信息的管理功能,包括增加、修改和删除功能。
教师可以根据需要对学生信息进行修改和删除操作。
具体功能如下:增加学生信息:在已有的信息中增加新学生信息。
修改学生信息:修改学生信息,如姓名、学号、年龄、性别、班级等。
删除学生信息:删除一位或多位学生的信息。
在系统中,教师可以根据关键字查询学生信息,包括学生姓名、学号、班级等信息。
系统会返回符合条件的学生记录。
具体查询功能如下:按姓名查询:输入学生姓名,返回该学生的所有信息。
建立查询、删除、增加和修改菜单方便用户进行操作。
c语言学生管理系统课程设计报告总结 (2)
C语言学生管理系统课程设计报告总结1. 引言本报告总结了我们小组在C语言课程设计中开发的学生管理系统。
该系统旨在简化学校教务管理过程,提高教务工作效率,实现学生信息的快速查询、管理和统计。
本文将介绍系统的设计目标、主要功能模块以及我们在开发过程中遇到的挑战和解决方案。
2. 设计目标我们设计学生管理系统的主要目标是提供以下功能:•学生信息管理:包括学生基本信息的录入、查找、修改和删除操作。
•课程管理:包括课程信息的录入、查找、修改和删除操作。
•成绩管理:包括成绩录入、查询和统计功能。
•班级管理:包括班级信息的录入、查找、修改和删除操作。
3. 系统设计与实现3.1 数据结构设计为了存储学生信息、课程信息和成绩信息,我们设计了以下数据结构:•学生信息结构体:包含学生姓名、学号、性别、出生日期等字段。
•课程信息结构体:包含课程名称、课程号、学分等字段。
•成绩信息结构体:包含学生姓名、课程名称、分数等字段。
3.2 用户界面设计我们采用命令行界面来实现用户和系统的交互。
通过命令行菜单,用户可以选择不同的功能模块,并输入相应的命令进行操作。
我们通过C语言的输入输出函数来实现用户界面的显示和交互。
3.3 功能模块实现学生管理系统主要包含以下功能模块:•学生信息管理模块:实现学生信息的录入、查找、修改和删除操作。
•课程管理模块:实现课程信息的录入、查找、修改和删除操作。
•成绩管理模块:实现学生成绩的录入、查询和统计功能。
•班级管理模块:实现班级信息的录入、查找、修改和删除操作。
4. 开发过程中的挑战和解决方案在开发学生管理系统的过程中,我们遇到了以下挑战:1.数据存储和管理:如何有效地存储和管理大量的学生信息、课程信息和成绩信息。
我们采用了链表的数据结构来组织数据,通过指针进行关联和操作,以提高数据的访问效率。
2.用户界面设计:如何设计一个简洁、直观的用户界面,方便用户进行操作。
我们借鉴了其他类似系统的设计思路,采用了命令行菜单和命令交互的方式来实现用户界面,简化了用户操作的复杂性。
C语言课程设计报告 --学生管理系统
C语言课程设计报告 --学生管理系统一、实验目的:通过本次实验,学习C语言的语法和数据类型,设计一个简单的学生管理系统,结合文件I/O所学,可以将学生信息保存至文件中,再读取时自动填充至程序中。
同时,体验软件开发的流程,从需求分析到具体实现。
二、需求分析:1、学生信息包括:学号、姓名、性别、年龄、成绩。
2、学生信息需要添加、删除、修改、查找和显示。
3、程序启动时自动从文件中读取数据,退出时自动保存数据。
三、实验过程:1、确定数据结构和变量类型通过分析需求,学生信息包含多个属性,可以使用结构体来保存每个学生的信息。
同时,为了便于程序运行,需要定义一个链表来保存所有学生信息。
/* 学生信息结构体 */typedef struct _Student {char id[12]; // 学号char name[20]; // 姓名char gender; // 性别int age; // 年龄double score; // 成绩} Student;/* 学生信息链表节点 */typedef struct _StudentNode {Student data; // 学生信息struct _StudentNode *next; // 下一节点指针} StudentNode;/* 学生信息链表头节点 */StudentNode *head = NULL;2、设计主菜单功能考虑学生管理系统的主要功能,可以设计以下主菜单:---------------------------1. 添加学生2. 删除学生3. 修改学生信息4. 查找学生5. 显示所有学生6. 退出---------------------------可以使用一个while循环来循环处理,直到用户选择退出。
3、实现主菜单功能添加学生:先从用户输入中获取学生信息,然后创建一个新的学生信息节点,并将其添加到链表的末尾。
1. 定义变量/* 输入缓存区大小 */#define BUFFER_SIZE 2562. 实现函数/* 添加学生到链表末尾 */void add_student() {Student student; // 待添加的学生信息printf("请输入学号:");scanf("%s", student.id);printf("请输入姓名:");scanf("%s", );printf("请输入性别(M/F):");scanf(" %c", &student.gender);printf("请输入年龄:");scanf("%d", &student.age);printf("请输入成绩:");scanf("%lf", &student.score);StudentNode *node =(StudentNode*)malloc(sizeof(StudentNode));node->data = student;node->next = NULL;if (head == NULL) {head = node;} else {StudentNode *p = head;while (p->next != NULL) {p = p->next;}p->next = node;}printf("添加学生成功!\n");}删除学生:先从用户输入中获取学生学号,然后遍历链表,找到该学号对应的学生信息节点,并删除。
C语言实验报告-学生信息资源管理系统
C语言实验报告一、问题描述编写一个信息管理系统,包括、性别、年龄、班级、**、地址、各科成绩等,要求能进行查找、排序和计算,按加权平均排序、按*一课程排序和按**排序。
二、分析问题,解决问题的步骤1、输入初始的学生信息:输入信息包括学生的、性别、年龄、班级、**、地址、各科成绩等相关信息;可用函数void input(STUDENT *data, int *len)来实现此操作。
2、成绩输出模块:输出学生的信息以及成绩void output(STUDENT *data, int len):通过学生的来查看学生的相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和average() 来输出成绩的平均分数、最高和最低分数。
3、排序模块:用函数void sort(STUDENT *data, int len)来实现。
4、成绩查询模块:可用void find(STUDENT *data, int len) 来实现。
找到就输出此学生全部信息。
5、统计功能能:用函数void stat(STUDENT *data, int len) 来实现。
6、退出系统:可用一个函数e*it()来实现,首先将信息保存到文件中,释放动态创建的存空间,再退出此程序。
三、程序编写#include <stdlib.h>#include <stdio.h>#include <string.h>#define MA*N 35#define Ma*size325typedef struct student //学生信息{int no;char name[Ma*size];char se*[Ma*size];char age[Ma*size];char adress[Ma*size];char glassnum[Ma*size];double Chinese;double math;double English;double mark_ave;double mark_tot;} STUDENT;/*-----------输入信息子程序---------*/ void input(STUDENT *data, int *len) {int no;putchar('\n');printf("%s\n", "请输入新的记录,如果需要退出当前菜单请输入-1.");printf("%s\n", "格式:\n**\n");printf("%s\n", " 性别年龄地址班级 ** 语文数学英语");putchar('\n');printf("如:\n");printf("1\n");printf("三 93 95 89\n");scanf("%d", &no);while(no != -1) {data[*len].no = no;scanf("%s %s %s %s %s %lf %lf %lf", data[*len].name,&data[*len].se*,&data[*len].age,&data[*l en].adress,&data[*len].glassnum,&data[*len].Chinese,&data[*len].math,&data[*len].English);data[*len].mark_ave=(data[*len].Chinese+data[*len].ma th+data[*len].English)/3.0;data[*len].mark_tot=data[*len].Chinese+data[*len].mat h+data[*len].English;(*len)++;scanf("%d", &no);}/*---------------输出信息子程序---------------*/ void output(STUDENT *data, int len){int i;system("cls");printf("%8s", "");printf("%8s", "性别");printf("%8s", "年龄");printf("%8s", "地址");printf("%8s", "班级");printf("%8s", "语文");printf("%8s", "数学");printf("%10s", "英语");printf("%12s", "平均分");printf("%10s", "总分");putchar('\n');for (i =0; i < 80; i++)putchar('=');putchar('\n');for (i = 0; i< len; i++){printf("%8d", data[i].no);printf("%8s", data[i].name);printf("%8s", data[i].se*);printf("%8s", data[i].age);printf("%8s", data[i].adress);printf("%8s", data[i].glassnum);printf("%8.1lf", data[i].Chinese); printf("%8.1lf", data[i].math);printf("%10.1lf", data[i].English); printf("%12.1lf", data[i].mark_ave); printf("%10.1lf", data[i].mark_tot); putchar('\n');}for (i =0; i < 80; i++)putchar('=');putchar('\n');printf("按回车键继续.");getchar();getchar();}/*--------------排序子程序------------*/void sort(STUDENT *data, int len){int i,j,k;STUDENT temp;for (i=0; i<len-1; i++) {for (k=i, j=i+1; j<len; j++)if (data[k].mark_ave > data[j].mark_ave) k=j;if (k != i) {temp = data[i];data[i] = data[k];data[k] = temp;}}}/*--------------------查询子程序-----------------------*/ void find(STUDENT *data, int len){int find_no, result ;int i;lab: result=0;printf("%s\n", "请输入需要查找的学生的**,退出当前菜单请输入 -1.");scanf("%d", &find_no);if (find_no == -1) return; /*e*it the fine sub program*/while( data[result].no != find_no && result < len) result ++;if (result >= len ) {printf("%s\n", "未查询到相关信息");goto lab;}else {system("cls");printf("%s\n", "查询信息如下:");for (i =0; i < 80; i++)putchar('=');putchar('\n');printf("%8s", "**");printf("%8s", "");printf("%8s", "性别");printf("%8s", "年龄");printf("%8s", "地址");printf("%8s", "班级");printf("%8s", "语文");printf("%8s", "数学");printf("%10s", "英语");printf("%12s", "平均分");printf("%10s", "总分");putchar('\n');printf("%8d", data[result].no);printf("%8s", data[result].name);printf("%8s", data[result].se*);printf("%8s", data[result].age);printf("%8s", data[result].adress);printf("%8s", data[result].glassnum);printf("%8.1lf", data[result].Chinese);printf("%8.1lf", data[result].math);printf("%10.1lf", data[result].English);printf("%12.1lf", data[result].mark_ave);printf("%10.1lf", data[result].mark_tot);putchar('\n');for (i =0; i < 80; i++)putchar('=');putchar('\n');goto lab;}}/*---------------统计子程序------------*/void stat(STUDENT *data, int len){int no_59=0, no_69=0, no_79=0, no_89=0, no_100=0; int i;for (i = 0;i < len; i++) {if (data[i].mark_ave <=59) no_59++;else if (data[i].mark_ave <=69) no_69++;else if (data[i].mark_ave <=79) no_79++;else if (data[i].mark_ave <= 89) no_89++;else no_100++;}system("cls");for (i =0; i < 80; i++)putchar('=');putchar('\n');printf("%10s", "分数");printf("%10s", "0--59"); printf("%10s", "60--69"); printf("%10s", "70--79"); printf("%10s", "80--89"); printf("%10s", "90--100");putchar('\n');putchar('\n');printf("%10s", "学生");printf("%10d", no_59);printf("%10d", no_69);printf("%10d", no_79);printf("%10d", no_89);printf("%10d", no_100);putchar('\n');for (i =0; i < 80; i++)putchar('=');putchar('\n');printf("按回车键返回");getchar();getchar();}/*---------------显示信息子程序------------*/void paint(){int i;system("cls");printf("%55s\n", "信计二班学生成绩管理系统\n");printf(" 制作者: ** \n");for (i = 0; i < 80; i++)putchar('=');putchar('\n');printf(" 1 输入信息 2 输出信息\n");printf(" 3 按平均分排序 4 按**查找\n");printf(" 5 按平均分输出统计信息 6 保存到文件\n");printf(" 0 退出\n");for (i = 0; i<= 79; i++)putchar('=');putchar('\n');printf("%s\n", "请输入各操作对应的序号:");}void save(STUDENT *data, int len)//将数据保存到文件{int i;FILE *fp;fp=fopen("成绩统计表.t*t","w");fprintf(fp,"%8s", "**");fprintf(fp,"%8s", "");fprintf(fp,"%8s", "性别");fprintf(fp,"%8s", "年龄");fprintf(fp,"%8s", "地址");fprintf(fp,"%8s", "班级");fprintf(fp,"%8s", "语文");fprintf(fp,"%8s", "数学");fprintf(fp,"%10s", "英语");fprintf(fp,"%12s", "平均分");fprintf(fp,"%10s\n", "总分");fprintf(fp,"=============================================== =========================\n");putchar('\n');for (i = 0; i< len; i++)fprintf(fp,"%8d", data[i].no);fprintf(fp,"%8s", data[i].name);fprintf(fp,"%8s", data[i].se*);fprintf(fp,"%8s", data[i].age);fprintf(fp,"%8s", data[i].adress);fprintf(fp,"%8s", data[i].glassnum);fprintf(fp,"%8.1lf", data[i].Chinese);fprintf(fp,"%8.1lf", data[i].math);fprintf(fp,"%10.1lf", data[i].English);fprintf(fp,"%12.1lf", data[i].mark_ave);fprintf(fp,"%10.1lf\n", data[i].mark_tot);}fprintf(fp,"=============================================== =========================\n");fclose(fp);printf("文件已保存到\"成绩统计表.t*t\"");getchar();getchar();}/*-----------主程序--------------*/void main()STUDENT data[MA*N];int len = 0;char ctrl_ch;paint();scanf("%c", &ctrl_ch);while (ctrl_ch != '0') {; case '1':input(data, &len);break;case '2':output(data, len);break;case '3':sort(data, len);break;case '4':find(data, len);break;case '5':insert(data, &len);break;case '6':delete_item(data, &len);break;case '7':stat(data, len);break;case '8':save(data, len);break;default:if (ctrl_ch != '\n') printf("%s\n", "输入错误!");break;}if (ctrl_ch != '\n') paint();scanf("%c", &ctrl_ch);}}四、误差分析此程序没有按加权平均排序功能是本程序的一大弊端,还有就是所列科目少了点,由于本课题中的许多知识点都没有学过,需要查找课外资料,所以如有错误,希望老师多多指正,!。
c语言学生信息管理系统实验报告
C语言学生信息管理系统实验报告C语言课程设计学生信息管理系统姓名洪伟生院系计算机学院日期年 7 月 5 日目录第一章设计要求………………………………………………第二章算法分析1.理论依据…………………………………………………2.主要实现方法……………………………………………2.1整体流程图………………………………………2.2函数功能和函数之间的调用关系………………第三章代码(源代码)………………………………………第四章分析说明………………………………………………第五章总结……………………………………………………第一章、设计要求1、利用所学的知识、理论和实际结合,利用资源,采用模块化的结构,使用模仿修改自主设计相结合的方法,锻炼学生综合分析解决实际问题的编程能力;2、经过C语言各个函数功能来实现对学生信息的管理,学生信息包括学生姓名,学号,各科成绩;管理方式包括对学生信息的录入,保存,排序,查找、修改、删除等功能。
第二章、算法分析1、程序理论依据经过C语言的程序设计基础的掌握,对学生成绩管理系统进行编写程序。
首先,经过链表这一数据结构来对学生的信息进行录入以及操作,在其过程中,经过各个功能语句以及选择结构,循环结构等方式的结合来达到所要实现的程序功能。
最后经过对C 语言中对文件的操作,对已有学生成绩的读取和新建学生成绩的录入保存。
2、主要实现方法2.1整体流程图2.2、函数功能和函数之间的调用关系2.2.1、函数功能:void Menu_1(); //主菜单void Menu_2(); //二级菜单学生信进退出学生信学生信学生信学生信学生信学生信返回主void swap(struct student * phead,struct student * pback);// 链表节点互换void Save(struct student * head); // 写入磁盘void Search(struct student * head); // 查找学生信息void Read(struct student * head); // 显示学生信息void Sort(struct student * head); // 链表节点排序struct student * Create(); //学生信息手动录入struct student * Readpoint(); //磁盘文件写入内存struct student * Modify(struct student * head); // 链表结构体成员修改struct student * Add(struct student * head); // 链表节点插入struct student * Delete(struct student * head); // 链表节点删除。
c语言学生信息管理系统总结
C语言学生信息管理系统总结简介C语言学生信息管理系统是一个用于管理学生个人信息的程序。
通过该系统,用户可以添加、删除、修改和查询学生的姓名、年龄、性别和学号等信息。
本文将对该系统的设计和实现进行总结。
设计思路功能设计学生信息管理系统应具备以下基本功能:1.添加学生信息:用户可以输入学生的姓名、年龄、性别和学号等信息,并将其添加到系统中。
2.删除学生信息:用户可以通过输入学生的学号,从系统中删除该学生的信息。
3.修改学生信息:用户可以通过输入学生的学号,对系统中该学生的信息进行修改。
4.查询学生信息:用户可以通过输入学生的姓名或学号,在系统中查找并显示学生的信息。
数据结构设计为了实现学生信息的管理,我们可以使用以下数据结构:struct student {char name[20];int age;char gender[10];int id;};每个学生的信息将保存在一个student结构体中,其中包含了姓名、年龄、性别和学号等字段。
学生信息可以使用链表来管理,每个节点包含一个学生的信息和指向下一个节点的指针。
struct node {struct student data;struct node *next;};通过使用链表,我们可以方便地进行添加、删除和修改操作。
界面设计学生信息管理系统的界面应简洁明了,用户可以通过命令行进行操作。
每个操作都对应一个数字或字母,用户输入相应的数字或字母来执行对应的操作。
实现过程添加学生信息添加学生信息的实现过程如下:1.用户输入要添加的学生的姓名、年龄、性别和学号等信息。
2.创建一个新的节点,并将用户输入的学生信息保存到该节点中。
3.将新节点添加到链表的末尾,更新链表的指针。
删除学生信息删除学生信息的实现过程如下:1.用户输入要删除的学生的学号。
2.遍历链表,找到对应学号的节点。
3.如果找到了对应的节点,将该节点从链表中删除。
4.释放节点的内存空间,更新链表的指针。
C语言学生管理系统_综合实验报告
C语言学生管理系统_综合实验报告一、引言学生管理系统是一种方便高校进行学生信息管理的工具,具备添加、删除、查询、修改等基本功能,可以提高学校教务部门的工作效率,减少人力资源的浪费。
本文将介绍一个基于C语言的学生管理系统的设计和实现。
二、系统设计1.需求分析学生管理系统主要包括学生信息、教师信息和课程信息的录入、查询、修改和删除等功能,同时要求可以按照学号、姓名等字段进行快速检索。
系统还需要能够自动生成学生的成绩单和课程表,方便学生进行查看。
2.系统架构学生管理系统采用客户端-服务器模式,客户端和服务器之间通过网络进行数据传输。
客户端通过命令行界面与用户交互,服务器负责处理客户端发送的请求并返回相应的结果。
3.系统功能模块(1)学生信息管理模块:包括学生信息的添加、查询、修改和删除等功能。
(2)教师信息管理模块:包括教师信息的添加、查询、修改和删除等功能。
(3)课程信息管理模块:包括课程信息的添加、查询、修改和删除等功能。
(4)成绩管理模块:包括成绩的录入和查询功能。
(5)课程表模块:根据学生选课情况生成学生的课程表。
三、系统实现1.开发环境系统开发环境选择C语言,编译器使用GCC,开发工具使用Dev-C++。
2.数据存储系统的数据存储采用文本文件的形式,每个学生、教师和课程信息分别存储在一个文本文件中,使用逗号分隔各个字段。
3.界面设计系统界面使用命令行界面,通过菜单来提供各个功能的选项,用户可以根据提示输入相应的指令进行操作。
4.功能实现(1)学生信息管理功能:用户输入学生信息后,系统将学生信息保存到指定的文本文件中,并返回操作结果。
(2)教师信息管理功能:用户输入教师信息后,系统将教师信息保存到指定的文本文件中,并返回操作结果。
(3)课程信息管理功能:用户输入课程信息后,系统将课程信息保存到指定的文本文件中,并返回操作结果。
(4)成绩管理功能:用户输入学生学号和对应的课程信息后,系统将成绩保存到指定的文本文件中,并返回操作结果。
学生信息管理系统_C语言课程设计报告
学生信息管理系统_C语言课程设计报告一、引言学生信息管理系统是一种方便管理和查询学生信息的系统,该系统基于C语言开发,旨在提供一个高效、可靠和易于使用的平台,以便学校或教育机构能够有效地管理学生档案和信息。
本报告将详细介绍该系统的设计和实现过程。
二、需求分析1. 功能需求学生信息管理系统应具备以下功能:- 学生信息录入:包括学生基本信息(姓名、学号、性别、年龄等)和成绩信息。
- 学生信息查询:能够根据学号、姓名等关键字进行学生信息的检索。
- 学生成绩管理:包括成绩录入、成绩查询和统计分析等功能。
- 学生信息修改和删除:管理员可以对学生信息进行修改和删除操作。
2. 非功能需求学生信息管理系统应具备以下非功能需求:- 界面友好:系统界面简洁美观,操作简单直观,方便用户使用。
- 数据安全性:学生信息应加密存储,只有授权人员能够访问和修改。
- 并发控制:系统能够支持多个用户同时访问和操作。
三、系统设计1. 数据结构设计- 学生信息结构:使用结构体表示学生的基本信息,包括学号、姓名、性别、年龄等字段。
- 成绩信息结构:使用结构体表示学生的成绩信息,包括科目、成绩等字段。
2. 系统模块设计学生信息管理系统可以划分为以下几个模块:- 学生信息录入模块:负责学生信息的录入和存储。
- 学生信息查询模块:负责根据关键字查询学生信息,并将结果显示在界面上。
- 学生成绩管理模块:负责成绩的录入、查询和统计分析。
- 学生信息修改和删除模块:负责管理员对学生信息的修改和删除操作。
四、系统实现1. 开发环境- 操作系统:Windows 10- 开发工具:Dev-C++ 5.112. 数据库设计学生信息和成绩信息可以使用文本文件来存储,也可以使用数据库来进行管理。
本系统使用文本文件方式存储,通过文件输入输出函数实现数据的读写操作。
3. 界面设计系统界面采用命令行交互方式,通过菜单来实现各个功能的选择。
用户只需根据提示输入相应的选项,系统会进行相应处理并返回结果。
C语言学生信息管理系统实验报告
C语言学生信息管理系统实验报告 -C语言学生信息管理系统实验报告一、实验目的本次实验旨在通过C语言编程实现一个简单的学生信息管理系统,以帮助学生更好地理解和掌握C语言的基本语法、数据类型、程序控制结构以及文件操作等知识点。
同时,通过实际操作,提高学生的编程能力和问题解决能力。
二、实验内容1、系统的基本功能:实现学生信息的输入、存储、查询、修改和删除等操作。
2、数据存储方式:使用文件存储学生信息,保证数据的持久性。
3、用户界面:实现一个简单的命令行界面,方便用户进行操作。
三、实验步骤及实现1、打开一个新文件,命名为“student_info.txt”,用于存储学生信息。
2、定义一个结构体,包含学生的基本信息,如学号、姓名、年龄、性别等。
3、编写程序,实现学生信息的输入、存储和输出。
4、编写程序,实现学生信息的查询、修改和删除操作。
5、在命令行界面中,使用scanf函数获取用户输入的指令,并根据指令执行相应的操作。
6、在操作结束后,将结果显示在命令行界面上。
四、实验结果与分析1、学生信息管理系统的基本功能已经实现,可以正常进行学生信息的输入、存储、查询、修改和删除等操作。
2、使用了文件操作函数,可以将学生信息持久化存储,避免了每次运行程序都需要重新输入信息的麻烦。
3、通过实际操作,学生对C语言的基本语法、数据类型、程序控制结构以及文件操作等知识点有了更深入的理解和掌握。
五、实验总结与建议1、在实现学生信息管理系统时,需要注意数据的正确性和完整性,尤其是输入数据时需要做好错误处理。
2、在实现系统功能时,可以进一步优化代码,提高程序的效率和可读性。
3、可以增加更多的功能,如统计学生人数、打印学生信息等,以使系统更加完善。
4、在实际应用中,需要考虑系统的安全性和稳定性,如数据的备份和恢复、系统的异常处理等。
通过本次实验,学生对C语言有了更深入的理解和掌握,同时提高了编程能力和问题解决能力。
建议在今后的实验中,注重理论与实践相结合,提高学生的实际应用能力。
C语言学生管理系统综合实验报告
C语言学生管理系统综合实验报告##一、实验目的本实验旨在设计和实现一个简单的学生管理系统,使用C语言编写,帮助学生了解C语言常用的数据结构和文件操作,并能够实际应用在实际的学生管理中。
##二、实验内容本实验要求设计一个学生管理系统,能够完成以下功能:1.添加学生信息:包括学号、姓名、性别、年龄等基本信息;2.修改学生信息:根据学号修改学生的基本信息;3.删除学生信息:根据学号删除学生的信息;4.查询学生信息:根据学号或姓名查询学生的信息;5.显示全部学生信息:将所有学生的信息显示出来;6.保存学生信息到文件:将学生的信息保存到文件中;7.从文件读取学生信息:从文件中读取学生的信息。
##三、实验设计###数据结构设计在设计学生管理系统时,我们需要选择合适的数据结构来存储学生的信息。
本实验中,我们选择使用结构体来表示学生的信息,代码如下:```cstruct Studentint id; // 学号char name[20]; // 姓名char gender[5]; // 性别int age; // 年龄};```###功能实现根据实验要求,我们需要实现添加、修改、删除、查询、显示和文件操作等功能。
以下是具体实现的思路:1.添加学生信息:从用户输入获取学生的信息,并将其添加到学生数组中;2.修改学生信息:根据用户输入的学号,在学生数组中找到对应的学生信息,并更新其基本信息;3.删除学生信息:根据用户输入的学号,在学生数组中找到对应的学生信息,并将其删除;4.查询学生信息:根据用户输入的学号或姓名,在学生数组中找到对应的学生信息,并将其显示出来;5.显示全部学生信息:遍历学生数组,将所有学生的信息显示出来;6.保存学生信息到文件:将学生数组中的所有学生信息保存到文件中;7.从文件读取学生信息:从文件中读取学生信息,并将其存储到学生数组中。
##四、实验结果经过实验的设计与实现,我们成功完成了学生管理系统的编写,并进行了测试。
c语言学生信息管理系统实训报告
c语言学生信息管理系统实训报告
C语言学生信息管理系统是以C语言为编程语言开发的数据管理系统,该系统基于数
据库技术,实现了人事档案管理、班级管理、成绩管理、考勤管理及学生信息管理等功能。
本次实训,我使用C语言编程,在Visual Studio2017环境下,实现了一种自定义的
学生信息管理系统。
该系统实现学生信息的查询、删除、添加及修改功能。
在项目的开发
过程中,我也使用了文件读取与保存、数据结构训练、数据处理等编程技术。
其中,采用
C语言处理文本文件,用链表结构组织数据,并实现增删改查等功能;使用链表结构处理学生信息,实现数据的添加、修改和删除等操作;使用文件读取及保存,在开发过程中
记录及复用学生信息,并按要求输出学生信息报表;使用数据结构进行数据处理,通过
数据的排序、查找等操作,实现提高学生管理的效率。
实训过程运用C语言基础知识和结构化编程思想,巩固了编写程序的知识和编程技术,让我更加深入地理解面向对象思想。
在实训过程中,我熟练掌握了if语句、while语句、switch语句等基础编程语句,加深了对编程概念的理解,同时也学会了在实际编程中如何把这些概念运用到编程中,从而熟练掌握C语言的编程技巧。
实训结束时,我认为自己在编程方面有了很大的进步,对C语言的编程也有了更深的
理解,同时自己也掌握了一套独立的编程思维,并能够利用面向对象思想,实现学生信息
管理系统客户端最新需求。
学生信息管理系统C语言报告
学生信息管理系统C语言报告简介学生信息管理系统是一种可以对学生信息进行管理的软件系统。
通过该系统,可以方便地添加、修改、查询和删除学生信息,提高学生信息管理的效率和准确性。
本报告将介绍学生信息管理系统的设计和实现过程,包括系统功能、技术选型和代码结构等方面。
通过该报告的阅读,读者可以了解到该系统的开发背景和主要功能,以及查看源代码和运行效果。
系统功能学生信息管理系统的主要功能如下:1. 添加学生信息:可以输入学生的姓名、年龄、性别、学号等基本信息,并保存到系统中。
2. 修改学生信息:可以根据学生的学号或姓名,修改学生的基本信息。
3. 查询学生信息:可以根据学生的学号、姓名、年龄、性别等条件,查询学生的基本信息。
4. 删除学生信息:可以根据学生的学号或姓名,将学生的基本信息从系统中删除。
技术选型为了实现学生信息管理系统的需求,我们选择使用C语言进行开发。
C语言是一种高效、可靠的编程语言,有着丰富的开发资源和庞大的用户群体。
在开发过程中,我们采用了以下技术选型:- 编程语言:C语言C语言作为一种结构化的编程语言,具有强大的计算能力和灵活的控制语句,非常适合开发类似学生信息管理系统这样的小规模应用。
代码结构学生信息管理系统的代码结构如下:cinclude <stdio.h>struct Student {char name[50];int age;char gender[10];int student_id;};void add_student(struct Student *students, int *count) {添加学生信息的代码逻辑}void modify_student(struct Student *students, int count) {修改学生信息的代码逻辑}void query_student(struct Student *students, int count) {查询学生信息的代码逻辑}void delete_student(struct Student *students, int *count) {删除学生信息的代码逻辑}int main() {struct Student students[100];int count = 0;主程序逻辑,包括用户界面等}在代码结构中,我们定义了一个`Student`结构体,用于存储学生的基本信息。
C语言上机实验报告--学生信息管理系统设计__内附源代码
C语言上机实验报告------学生信息管理系统设计姓名:学号:班级:指导老师:学院:学校:C语言上机实验报告------学生信息管理系统设计一、实验题目学生信息管理系统设计学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。
试设计一学生信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息用文件保存)---输入(3)学生信息浏览功能---输出(4)查询、排序功能---算法(5)按学号查询(6)按姓名查询(7)学生信息的删除与修改(可选项)二、本课程的地位、作用与目的为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。
希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。
三、分析过程1、能够实现对学生基本信息数据的增加和删除2、实现对录入保存后的学生基本信息进行格式化浏览3、提供学号和姓名两种方式对学生基本信息数据的查询4、能够对随机输入的学生基本信息数据按学号进行排序5、学生信息数据保存在文件中,方便数据的多次使用为了实现以上功能,必须设计的函数如下:录入函数、查询函数(分为姓名查询和学号查询)、删除函数、排序函数和几个菜单绘制函数等四、实验源代码:#include <stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#include<time.h>#define num 12//定义学生结构体typedef struct student{int id;char name[num];int age;char sex[4];struct birth{int year;int month;int day;}date;char add[30];int phone;}stu;//功能选择菜单void menu(){printf("\n");printf("\n");printf(" 学生信息管理系统\n");printf("\n");printf("********************************************************************* **\n");printf(" ==============1.学生信息录入 2.学生信息浏览===============\n");printf("\n");printf(" ==============3.学号查询信息 4.姓名查询信息===============\n");printf("\n");printf(" ==============5.按学号排序 6.删除学生信息===============\n");printf("\n");printf(" ============== 0.退出系统===============\n");printf("\n");printf("\n");printf("********************************************************************* *\n");printf("\n");printf(" 按编号选择对应功能\n");printf("\n");printf(" +++++++++++++++++++ XXXXXXX制作+++++++++++++++++++++\n");printf("\n");}//修改菜单void printmenu(){printf("********************************************************* **\n");printf("-------1.完全修改 2.学号修改---------");printf("-------3.姓名修改 4.性别修改---------");printf("-------5.生日修改 6.地址修改---------");printf("-------7.电话修改 0.退出修改---------");printf("********************************************************* **\n");}//取当前时间int nowtime(){struct tm *local;time_t t;t=time(NULL);local=localtime(&t);return local->tm_year+1900;//求出当前时间的年份}//输出文件中学生信息void print(char *file){stu temp;FILE *fp=fopen(file,"r");if(fp==NULL){printf("打开文件%s失败!\n",file);return;}printf("文件%s中学生信息如下:\n",file);printf("%8s%8s%6s%6s%8s%4s%4s%16s%12s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");fseek(fp,0,SEEK_SET);//从文件开始为之读取while(fread(&temp,sizeof(stu),1,fp))printf("%8d%8s%6d%6s%8d%4d%4d%16s%12d\n",temp.id,,temp.age,t emp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,temp.ph one);//格式化输出学生信息fclose(fp);//关闭文件}void luru(char *file){int count,sexnum,i=0,m;stu temp,temp1;FILE *fp=fopen(file,"a+");//追加方式打开文件if(fp==NULL){printf("打开文件%s失败!",file);return;}printf("请确定本次需要录入几名学生信息:");scanf("%d",&count);for (i=0;i<count ;i++ ){printf("录入要写入文件%s的第%d名学生信息\n",file,i+1); Repeat:printf("请输入学号:");m=scanf("%d",&temp.id);if (m==0){printf("输入的数据不是整型数据!\n");fflush(stdin);//清除缓存goto Repeat;}fseek(fp,0,SEEK_SET);//从文件开始位置读取while(fread(&temp1,sizeof(stu),1,fp)){if (temp1.id==temp.id)//判断学号是否已存在{printf("学号已存在!\n");goto Repeat;}//若学号已存在,返回继续读取学号}printf("请输入姓名:");scanf("%s",);printf("请输入性别:0为女生,1为男生:");{scanf("%d",&sexnum);if (sexnum==1) strcpy(temp.sex,"男");else strcpy(temp.sex,"女");}printf("请输入出生年月日:");scanf("%d%d%d",&temp.date.year,&temp.date.month,&temp.date.day);temp.age=nowtime()-temp.date.year;printf("请输入地址:");scanf("%s",&temp.add);printf("请输入联系电话11位:");scanf("%d",&temp.phone);if(!fwrite(&temp,sizeof(stu),1,fp)){printf("向文件%s写入信息失败!\n",file);return;}}printf("向文件%s写入信息成功!\n",file);fclose(fp);}int IsEmpty(FILE *fp){int len;fseek(fp,0,SEEK_END);//指针移动到文件尾len=ftell(fp);//取指针的文职获取长度return(len==0)?1:0;//0代表文件为空}void idsearch(char *file){int findid;stu temp;FILE *fp=fopen(file,"r");if (fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入信息!");return;}printf("输入要查找学生的学号:");scanf("%d",&findid);fseek(fp,0,SEEK_SET);while(fread(&temp,sizeof(stu),1,fp)){if(temp.id==findid){printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",temp.id,,temp.a ge,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,tem p.phone);//格式化输出学生信息return;}}printf("没有找到学号为%d的学生的信息!",findid);return;fclose(fp);}void namesearch(char *file){char name[num];stu temp;FILE *fp=fopen(file,"r");if (fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先输入学生信息!");return;}printf("输入要查找的学生的姓名:");scanf("%s",name);fseek(fp,0,SEEK_SET);while(fread(&temp,sizeof(stu),1,fp)){if (!strcmp(,name)){printf("下面是姓名为%s的学生的信息:\n",name);printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",temp.id,,temp.a ge,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,tem p.phone);//格式化输出学生信息return;}}printf("没有找到姓名为%s的学生的信息!",name);fclose(fp);}//排序函数void paixu(char *file){int i,j,k,len;stu s[num],temp;FILE *fp=fopen(file,"r");if(fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入信息!");return;}fseek(fp,0,SEEK_END);//指针移动到文件末尾len=ftell(fp)/sizeof(stu);fseek(fp,0,SEEK_SET);for(i=0;i<len;i++)fread(s+i,sizeof(stu),1,fp);fclose(fp);for(i=0;i<len;i++){k=i;for(j=i+1;j<len;j++){if(s[j].id<s[k].id)k=j;}if(k!=i){temp=s[i];s[i]=s[k];s[k]=temp;}}printf("下面是按学号从小到大顺序排序后的学生的信息:\n");printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");for(i=0;i<len;i++)printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",s[i].id,s[i].name,s[i].a ge,s[i].sex,s[i].date.year,s[i].date.month,s[i].date.day,s[i].add,s[i ].phone);//格式化输出学生信息remove("学生信息表.txt");//删除以前存放数据的文件fp=fopen(file,"w");for(i=0;i<len;i++)fwrite(s+i,sizeof(stu),1,fp);fclose(fp);}//删除函数void shanchu(char *file){int i=0,len,del;stu s[num];FILE *fp=fopen(file,"r");if(fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入学生信息!");return;}printf("输入需要删除的学生的学号:");scanf("%d",&del);fseek(fp,0,SEEK_SET);while(fread(s+i,sizeof(stu),1,fp)){if(s[i].id==del){printf("下面是按学号为%d的学生的信息:\n",del);printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",s[i].id,s[i].name,s[i].a ge,s[i].sex,s[i].date.year,s[i].date.month,s[i].date.day,s[i].add,s[i ].phone);//格式化输出学生信息i=i-1;}i++;}fclose(fp);len=i;fp=fopen(file,"w");fseek(fp,0,SEEK_SET);for(i=0;i<len;i++) //删除后重写文件fwrite(s+i,sizeof(stu),1,fp);fclose(fp);}void main(){int key;char file[]={"学生信息表.txt"};do{menu();printf("选择对应功能操作:");scanf("%d",&key);switch(key){case 1:luru(file);break;case 2:print(file);break;case 3:idsearch(file);break;case 4:namesearch(file);break;case 5:paixu(file);break;case 6:shanchu(file);break;case 0:exit(0);default:printf("选择错误,请重新选择!");}printf("\n");printf("按任意键返回上级菜单!");getch();fflush(stdin);system("cls");}while (key!=0);}五.实验过程及结果:1.程序主菜单运行界面2.学生信息录入运行界面3.学生信息浏览运行界面4.学生学号查询运行界面5.学生姓名查询运行界面6.按学号排序运行界面第一次出现乱码,改正后运行如第二张图片所示7.删除学生信息运行界面六、感想在本次实验的过程中,出现了各种各样的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
销售信息统计管理系统一.任务描述某公司有4个销售员,负责销售5种产品。
每个销售员都将当日销售的每种产品各写一张便条提交给公司。
每张便条内容有:1、销售员的编号2、销售产品的代号产品3、产品销售量根据需求,此系统提供以下功能:1、以菜单界面呈现。
2、信息录入功能。
3、信息查询功能。
(包括查询某销售员的各产品销售量,某种产品的销售总量,某销售员的总销售额)4、销量排序功能。
5、生成统计报表功能。
本系统采用结构体数组以及数据文件的技术,将输入的数据用结构体数组保存,并提供文件的保存与读取。
在程序中要进行统计工作,所以提供显示、排序等操作,另外应提供键盘式选择菜单实现功能选择本程序使用C语言。
此程序在vc++6.0上调试通过。
二.功能实现设计1.总体设计根据上面的分析,将这个程序分为四大模块。
——1.销售信息录入。
2.查询信息3.文件的保存。
4.文件的读取查询系统包括1.各个销售员销售额。
2.销售总额以及排序。
3各产品销售总额及热度。
4.总信息统计生成报表。
2.流程图3.详细设计①【数据结构】typedef struct {int name;int a1;int a2;int a3;int a4;int a5;}SYS;/*定义数组*/②【功能函数声明】int menu();/*选择菜单函数声明*/int menu_1();/*子菜单函数声明*/int enter(SYS t[]);/*进入函数声明*/void salor(SYS t[],int n);/*声明函数*/int sum(SYS t[],int n,int m);/*统计函数声明*/void list1(SYS t[],int n);/*菜单1函数声明*/void list2(SYS t[],int n);/*菜单2函数声明*/void list3(SYS t[],int n);/*菜单3函数声明*/void save(SYS t[],int n);/*保存文件函数声明*/int load(SYS t[]);/*读取函数声明*/SYS ste[100];int len;/*全局变量定义*/③【主函数】void main(){ system("cls");for( ; ; ){switch(menu())/*根据用户的选择判断该调用哪个功能函数*/ {case 1:len=enter(ste);break;case 2:menu_1();break;case 3:save(ste,len);break;case 4:len=load(ste);break;case 0:exit(0);}}}④【主菜单函数】打印出菜单功能选项,包括便条清单输入、信息查询、储存文件、读取文件和退出5个选项。
根据用户的选择判断该调用哪个功能函数,则输入相应的选项代号n(0-4)以运行该功能选项。
如下图所示⑤【清单输入函数】int enter(SYS t[])清屏之后输出提示语“请输入便条的信息”,按提示语输入便条信息,输入数据的同时,已将该信息存入开始已定义的结构体数组typedef struct SYS t[ ]中,以便在排序功能选项、统计功能选项、输出清单列表选项等功能选项中读取信息,进行编辑,阅读。
输入结束以信息全为零而结束清单输入,返回主菜单。
⑥【便条信息查询函数】void salor(SYS t[],int n)进入查询功能,出现提示语“输入所要查看的售货员的代号”,输入销售员的代号(1-4),通过循环判断读取输入的销售员代号(s)来进行对信息的阅读。
⑦【求和函数】int sum(SYS t[],int n, int e)定义初始值sum=0通过对销售员代号的循环和判断(当销售员代号与传递的e值相同),累加并统计同一个销售员销售不同种产品的销售额信息,返回统计值sum,以便调用。
⑧【排序函数】void list1 (SYS t[],int n)调用求和函数返回的统计值sum (使c[i]=sum(t,n,m[i])),按销售员的总销售额进行从大到小排序,输出销售员的代号m[i]。
⑨【销售额情况的函数调用】void list2(SYS t[],int n)调用求和函数使c[i]=sum(t,n,i+1),累加并统计每个人销售每种产品的总销售额和所有销售员销售的所有产品的总销售额,再将每个人销售每种产品的总销售额放到定义的数组(xs[5]={sum1,sum2,sum3,sum4,sum5})中,按每种产品的总销售额sum[i]循环比较并排序输出产品代号a[i]和总销售额xs[i]。
⑩【销售统计报表输出函数】void list3(SYS t[],int n)类似输出如下表格:销售统计报表产品代号销售之和销售员代号 1 2 3 4 51234每种产品之和总和如下图所示:⑪【保存函数】void save(SYS t[],int n)打开sys.txt文件,如果函数带回一个空指针值if((fp=fopen("sys.txt","wb"))==NULL),则显示“不能打开文件”,非法退出再进行存储文件。
通过文件指针,循环将便条信息输出到fp指向的文件。
关闭文件,显示“*****存储成功*****”,“按任意键继续。
”。
⑫【读取函数】int load(SYS t[]):定义文件指针*fp,循环从fp指向的文件上读入便条信息,关闭文件,显示“成功读取文件信息”,“按任意键继续。
”。
返回n值。
四.主要模块的算法描述1.查询函数流程图2.求和函数流程图3.排序函数流程图如下所示:三.总结与反思通过这次C程序设计,我掌握了模块化设计方法,能够深入的理解结构化程序设计思想,熟练运用结构化程序设计方法,提高了运用C语言进行程序设计的能力。
此外我还熟悉了,对于文件读写的操作。
更重要的是对程序的调试有了显著的提高。
附录:#include <stdio.h>#include <stdlib.h>typedef struct{int name;int a1;int a2;int a3;int a4;int a5;}SYS;int menu();int menu_1();int enter(SYS t[]);void salor(SYS t[],int n);int sum(SYS t[],int n,int m); void list1(SYS t[],int n);void list2(SYS t[],int n);void list3(SYS t[],int n);void save(SYS t[],int n);int load(SYS t[]);SYS ste[100];int len;void main(){system("cls");for( ; ; ){switch(menu()){case 1:len=enter(ste);break; case 2:menu_1();break; case 3:save(ste,len);break; case 4:len=load(ste);break; case 0:exit(0);}}}int menu(){int n;printf(" 销售信息统计管理系统\n");printf("**********************menu**********************\n"); printf("** 1 输入销售信息**\n"); printf("** 2 查询信息**\n"); printf("** 3 储存文件**\n"); printf("** 4 读取文件**\n"); printf("** 0 退出**\n"); printf("***********************end**********************\n\n"); printf(" 请输入你的选择(0-4): ");scanf("%d",&n);if(0<n&&n<5)system("cls");return n;}int menu_1(){int h;printf("**********************menu**********************\n"); printf("** 1 查询每个人每种产品的销售额**\n"); printf("** 2 查询销售员总销售额排行**\n"); printf("** 3 查询各产品的销售总额及热度**\n"); printf("** 4 查询统计报表**\n"); printf("**********************end***********************\n"); printf(" 请输入你的选择(1-4): ");scanf("%d",&h);switch(h){case 1:salor(ste,len);break;case 2:list1(ste,len);break;case 3:list2(ste,len);break;case 4:list3(ste,len);break;}return h;}int enter(SYS t[]){int i;system("cls");printf("请输入便条的信息:");printf("销售员代号产品1 产品2 产品3 产品4 产品5");printf("\n\n退出请输入各信息为0退出!\n");for(i=0;i<1000;i++){printf("\n----------------------------------------------------------------\n");scanf("%d%d%d%d%d%d",&t[i].name,&t[i].a1,&t[i].a2,&t[i].a3,&t[i].a4,&t[i].a5);if((t[i].name==0)&&(t[i].a1==0)&&(t[i].a2==0)&&(t[i].a3==0)&&(t[i].a4==0)&&(t[i].a5==0)) break;}printf("\n----------------------------------------------------------------------\n\n\n");return i;}void salor(SYS t[],int n){int i,s;int b1=0,b2=0,b3=0,b4=0,b5=0;printf("输入所要查看的售货员的代号:");scanf("%d",&s);for(i=0;i<n;i++)if(t[i].name==s){b1+=t[i].a1;b2+=t[i].a2;b3+=t[i].a3;b4+=t[i].a4;b5+=t[i].a5;};printf("销售员代号产品1 产品2 产品3 产品4 产品5\n");printf("--------------------------------------------------------------------------\n"); printf("%-12d%-6d%-6d%-6d%-6d%-6d",s,b1,b2,b3,b4,b5);printf("\n 按任意键继续.\n\n");getchar();}int sum(SYS t[],int n, int e){int i,sum=0;for(i=0;i<=n;i++)if(e==t[i].name){sum+=t[i].a1;sum+=t[i].a2;sum+=t[i].a3;sum+=t[i].a4;sum+=t[i].a5;}return sum;}void list1 (SYS t[],int n){int i,j,s;int c[4],m[4];system("cls");for(i=0;i<4;i++)m[i]=i+1;for(i=0;i<4;i++)c[i]=sum(t,n,m[i]);for(i=0;i<4;i++)for(j=i+1;j<4;j++)if(c[i]<c[j]){s=m[i];m[i]=m[j];m[j]=s;s=c[i];c[i]=c[j];c[j]=s;}printf("从大到小销售员销售额排行榜\n");for(i=0;i<4;i++)printf("%d\n",m[i]);printf("\n 按任意键继续.\n\n");getchar();}void list2(SYS t[],int n){int index,k,s;int i,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0; int c[4],b1[4]={0},b2[4]={0},b3[4]={0},b4[4]={0},b5[4]={0}; system("cls"); ;for(i=0;i<4;i++)c[i]=sum(t,n,i+1);for(i=0;i<4;i++)sum0+=c[i];for(i=0;i<n;i++)for(j=0;j<4;j++){if(j+1==t[i].name){b1[j]+=t[i].a1;b2[j]+=t[i].a2;b3[j]+=t[i].a3;b4[j]+=t[i].a4;b5[j]+=t[i].a5;}}for(i=0;i<4;i++){sum1+=b1[i];sum2+=b2[i];sum3+=b3[i];sum4+=b4[i];sum5+=b5[i];}int xs[5]={sum1,sum2,sum3,sum4,sum5};int a[5]={1,2,3,4,5};for(k=0;k<4;k++){index=k;for(i=k+1;i<5;i++)if(xs[i]>xs[index])index=i;s=xs[index];xs[index]=xs[k];xs[k]=s;s=a[index];a[index]=a[k];a[k]=s;}for(i=0;i<5;i++){printf("产品代号:%-10d",a[i]);printf("总销售额:%-10d\n",xs[i]);}printf("按任意键继续......\n\n");getchar();}void list3(SYS t[],int n){int i,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0; int c[4],b1[4]={0},b2[4]={0},b3[4]={0},b4[4]={0},b5[4]={0}; system("cls"); ;for(i=0;i<4;i++)c[i]=sum(t,n,i+1);for(i=0;i<4;i++)sum0+=c[i];for(i=0;i<n;i++)for(j=0;j<4;j++){if(j+1==t[i].name){b1[j]+=t[i].a1;b2[j]+=t[i].a2;b3[j]+=t[i].a3;b4[j]+=t[i].a4;b5[j]+=t[i].a5;}}for(i=0;i<4;i++){sum1+=b1[i];sum2+=b2[i];sum3+=b3[i];sum4+=b4[i];sum5+=b5[i];}printf("-------------------------销售报表-------------------------\n\n\n");printf(" 销售员序号 1 2 3 4 5 总数\n\n");for(i=0;i<4;i++)printf(" %-7d%-7d%-7d%-7d%-7d%-7d%-7d\n",i+1,b1[i],b2[i],b3[i],b4[i],b5[i],c[i]); printf(" 总和%-7d%-7d%-7d%-7d%-7d%-7d",sum1,sum2,sum3,sum4,sum5,sum0); printf("\n 按任意键继续.......\n\n");getchar();}void save(SYS t[],int n){int i;FILE *fp;if((fp=fopen("steord.txt","wb"))==NULL){printf("不能打开文件\n");exit(1);}printf("\n储存文件\n");fprintf(fp,"%d",n);fprintf(fp,"\r\n");for(i=0;i<n;i++){fprintf(fp,"%-10d%-7d%-7d%-7d%-7d%-7d",t[i].name,t[i].a1,t[i].a2,t[i].a3,t[i].a4,t[i].a5); fprintf(fp,"\r\n");}fclose(fp);printf("****储存成功****\n\n");printf("按任意键继续......\n\n");getchar();}int load(SYS t[]){int i,n;FILE *fp;if((fp=fopen("steord.txt","rb"))==NULL){printf("不能打开文件\n");exit(1);}fscanf(fp,"%d",&n);for(i=0;i<n;i++)fscanf(fp,"%10d%7d%7d%7d%7d%7d",&t[i].name,&t[i].a1,&t[i].a2,&t[i].a3,&t[i].a4,&t[i].a5); fclose(fp);printf("\n 成功读取文件信息\n");printf("按任意键继续......\n\n");getchar();return n;}。