c语言学生管理系统综合实验报告
C语言学生信息管理系统实验报告
实验四:结构体实验目的:1.更加灵活的使用数组作为函数参数;2.初步掌握开发一个小型实用系统的基本方法;3.初步掌握书写程序设计开发文档的能力。
实验内容:程序一:学生信息管理系统编写程序,实现学生信息的管理(包括学生信息的建立、增加、删除、修改、查找),要求:小组分工情况小组分工情况统计表I设计一个学生成绩管理系统至少具有以下功能:(1)菜单功能:采用文本菜单界面。
(2)学生信息的建立。
(3)学生信息的增加。
(4)学生信息的删除。
(5)学生信息的修改。
(6)学生信息的查找。
II数据库结构struct student{ char num[10];char name[10];char xibie[10];char sex;int age;}st[30];二总体设计框架结构图(系统的功能结构图)程序流程图: (visio)三、详细设计(流程图!!!)四、程序源代码(参考答案)1.用结构体数组完成2.用结构体指针完成1. #includ e "stdio.h"#includ e "string.h"typede f struct node{ char num[10];char name[10];char xibie[10];char sex;int age;int n;st *cresli nk(){int i;st s[10];printf("请输入要录入的人数:");scanf("%d",&n);for (i=0;i<=n-1;i++){ printf("请输入第%d名学生的学号,姓名,系别,年龄,性别:",i+1);scanf("%s%s%s%d%c",s[i].num,s[i].name,s[i].xibie,&s[i].age,&s[i].sex);}return s;}int getlen(st s[]){return n;}insert(st s[],char num[],char name[],char xibie[],int age,char sex){ strcpy(s[n].num,num);strcpy(s[n].name,name);strcpy(s[n].xibie,xibie);s[n].age=age;s[n].sex=sex;n++;}delete(st s[],char num[]){int i,j;for(i=0;i<n;i++)if(strcmp(s[i].num,num)==0)break;for(j=i+1;j<n;j++)s[j-1]=s[j];n--;}void list(st s[]){ int i;printf("学号\t姓名\t系别\t年龄\t性别\n");for(i=0;i<n;i++)printf("%s\t%s\t%s\t%d\t%c\n",s[i].num,s[i].name,s[i].xibie,s[i].age,s[i].sex);}void main(){int k,f,age;char num[10],name[10],xibie[10],sex;while(1){printf("\n\n\t\t\t学生信息管理系统\n");printf("\t\t*************************************\n");printf("\t\t\t1.录入学生信息\n");printf("\t\t\t2.插入新学生信息\n");printf("\t\t\t3.删除学生信息\n");printf("\t\t\t4.输出学生信息\n");printf("\t\t\t5.输出学生总数\n");printf("\t\t\t6.退出\n");printf("\t\t*************************************\n");printf("请选择:");scanf("%d",&k);switch(k){case 1:s=cresli nk();break;case 2: printf("请输入新学生的学号,姓名,系别,年龄,性别:");scanf("%s%s%s%d%c",num,name,xibie,&age,&sex);i nsert(s,num,name,xibie,age,sex);b reak;case 3:printf("请输入要删除的学生的学号:");scanf("%s",num);d elete(s,num);break;case 4:list(s);break;case 5:f=getlen(s);printf("学生总数为:%d",f);break;case 6:return;}}}2.#includ e "stdio.h"#includ e "string.h"#define null 0typede f struct node{ char num[10];char name[10];char xibie[10];char sex;int age;struct node *next;}slink;slink*cresli nk(){slink*head,*p,*s;int i,n;printf("请输入要录入的人数:");scanf("%d",&n);if(n<1)return null;p=head=(slink*)malloc(sizeof(slink));head->next=null;for (i=1;i<=n;i++){s=(slink*)malloc(sizeof(slink));printf("请输入第%d名学生的学号,姓名,系别,年龄,性别:",i); scanf("%s%s%s%d%c",s->num,s->name,s->xibie,&s->age,&s->sex);p->next=s;p=s;}p->next=null;return head;}int getlen(slink*head){slink*p;int n;p=head->next;n=0;while(p!=null){n++;p=p->next;}return n;}insert(slink*head,char num[],char name[],char xibie[],int age,char sex) {slink*p,*q;p=head;while(p->next!=null) p=p->next;q=(struct node *)malloc (sizeof(slink));strcpy(q->num,num);strcpy(q->name,name);strcpy(q->xibie,xibie);q->sex=sex;q->age=age;q->next=p->next;p->next=q;}delete(slink*head,char num[]){slink*p,*q;p=head;while(p->next!=null&&strcmp(p->next->num,num)!=0)p=p->next;q=p->next;p->next=q->next;free(q);}void list(slink*head){slink*p;printf("学号\t姓名\t系别\t年龄\t性别\n");p=head->next;while(p!=null){printf("%s\t%s\t%s\t%d\t%c\n",p->num,p->name,p->xibie,p->age,p->sex);p=p->next;}printf("\n");}void main(){int k,f,age;char num[10],name[10],xibie[10],sex;slink*head;while(1){printf("\n\n\t\t\t学生信息管理系统\n");printf("\t\t*************************************\n");printf("\t\t\t1.录入学生信息\n");printf("\t\t\t2.插入新学生信息\n");printf("\t\t\t3.删除学生信息\n");printf("\t\t\t4.输出学生信息\n");printf("\t\t\t5.输出学生总数\n");printf("\t\t\t6.退出\n");printf("\t\t*************************************\n");printf("请选择:");scanf("%d",&k);switch(k){case 1:head=cresli nk();break;case 2: printf("请输入新学生的学号,姓名,系别,年龄,性别:");scanf("%s%s%s%d%c",num,name,xibie,&age,&sex);insert(head,num,name,xibie,age,sex);b reak;case 3:printf("请输入要删除的学生的学号:");scanf("%s",num);d elete(head,num);break;case 4:list(head);break;case 5:f=getlen(head);printf("学生总数为:%d",f);break;case 6:return;}}}。
C语言学生信息管理系统设计实验报告
信
信
信
息
息
息
的
的
的
浏
增
录
览
加
入
信
信
退
息
息
出
的
的
系
修
查
统
改
询
信
信
信
息
息
息
导
录
保
出
入
存
按
按
学
姓
号
名
查
查
询
询
7.各模块功能简介 信息浏览模块:用导入函数调入信息,用 for 循环依次输出学生信息。
3
信息的增添模块:先确定增添人数,用 for 循环输入指针数组数据,调用保存函 数进行保存。 信息的录入模块:确定人数,for 循环依次输入信息,调用保存函数保存。 信息的修改模块:用 if(strcmp(work[i].name,name)==0) 先找出要修改的学生信息,用 switch 确定修改那一项,输入修改的数据进行保 存。 信息的查询模块:用 if(strcmp(work[i].name,name)==0)查找学生姓名,用 if(num1==work[i].num)对学号查找。 退出:用 goto 语句指向固定行。 8.主要函数流程图 修改函数
录入学生个数
文件
work_list.txt
保存学生信息
2
函数
baicun()、type_in()、 保存 录入 删除 del()、change()、add 修改 查找 插入 ()、scan()search() 显示学生信息、查
找
4.设计平台 有 Visual C 语言编写,语言简单、紧凑,使用方便、灵活。运算符丰富,数据 类型丰富,具有结构化的控制语句,语法限制不太严格,程序设计自由度大。C 语言允许直接访问物理地址,能进行行位操作,能实现汇编语言的大部功能。生 产目标代码质量高,程序执行效率高,用 C 语言编写的程序可移植性好。 5.设计思想 采用了系统模块化:(1)自顶向下;(2)逐步细化;(3)模块化设计;(4) 结构化编码。用这种方法便于验证算法的正确性,在向下展开之前应仔细检查本 层设计是否正确,只有上一层正确才能向下细化。本程序分为六大模块:浏览模 块、增加模块、录入模块、修改模块、查询模块、退出。其中录入模块包括录入、 导出、保存。查询模块包括学号查询和姓名查询。浏览函数由岳映强完成,增添 模块由马玉帅完成,录入模块由章成完成,修改模块由陈耀明和徐川鹤完成,查 询模块由刘永亮完成,退出模块由钱程完成。 6.设计框图
C语言程序设计学生成绩管理系统实验报告
移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",#switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。
C语言学生管理系统实验报告
C语言案例设计实验报告实验二姓名:学号:专业:自动化课程名称:C语言程序设计指导教师:实验时间:实验地点:教师评分:实验目的和要求1、掌握软件设计开发调试的完整过程;2、掌握单链表,结构体,指针的使用方法;3、掌握使用CodeBlocks软件编程和调试的方法。
一、主要仪器设备及开发环境1、计算机2、CodeBlocks集成开发环境V13.12二、实验原理与分析设计3.1 设计内容1.显示菜单2.获取用户选择的菜单编号3.创建一个节点,他会返回一个新创建的学生信息节点的指针4.把学生信息节点加入到链表中5.返回指定编号学生节点的上一个节点的指针6.显示所有学生信息7.显示信息数量8.修改学生信息,参数为要修改的学生编号9.获取用户的选择10.获取用户输入的学生编号11.删除编号为num的学生信息12.删除所有学生信息13.把信息保存到文件中14.从文件中读取学生信息3.2 数据结构设计a.显示菜单 ShowMenu()b.获取用户选择的菜单编号 GetMenuChoose()C.创建一个节点,返回一个新创建的学生信息节点的指针PSTUDENT CreateStudent()d.把学生信息节点加入到链表中 AddStudent(PSTUDENT pstu)e.返回指定编号学生节点的上一个节点的指针PSTUDENT GetPrevAddr(int num)f.显示所有学生信息ShowAll()g.显示信息数量ShowStudentCount()f.修改学生信息,参数为要修改的学生编号ModityStudent(int num)g.获取用户的选择Question(const char *pstr)h.获取用户输入的学生编号GetInputNum()i.删除编号为num的学生信息DelStudent(int num)j.删除所有学生信息DelAll()k.把信息保存到文件中SaveToFile()l.从文件中读取学生信息 LoadFromFile()3.4 流程图四、程序设计4.1程序主函数int main(){i nt running=1;w hile(running){switch(GetMenuChoose()){case 0:running=0;break;case 1:printf("你选择了菜单1\n");AddStudent(CreateStudent());break;case 2:printf("你选择了菜单2\n");DelStudent(GetInputNum());break;case 3:printf("你选择了菜单3\n");break;case 4:printf("你选择了菜单4\n");ModityStudent(GetInputNum());break;case 5:printf("你选择了菜单5\n");DelAll();break;case 6:printf("你选择了菜单6\n");ShowAll();break;case 7:printf("你选择了菜单7\n");ShowStudentCount();break;case 8:printf("你选择了菜单8\n");TagStudent();break;case 9:printf("你选择了菜单9\n");SaveToFile();break;}system("pause");}r eturn 0;}4.2显示菜单void ShowMenu(){s ystem("cls");p rintf("------------------------------------------------------------------------");p rintf("\n\t1.添加学生信息 2.删除某个学生信息 3.显示某个学生信息\n");p rintf("\t4.修改学生信息 5.删除所有学生信息 6.显示所有学生信息\n");p rintf("\t7.显示信息数量8.读取文件学生信息9.保存学生信息至文件\n");p rintf("\t10.退出系统\n");p rintf("------------------------------------------------------------------------");}4.3获取用户选择的菜单编号int GetMenuChoose(){i nt num;//保存用户选择的菜单编号S howMenu();p rintf("请选择菜单(0~9):") ;/*scanf("%d %d",&aa,&b);函数返回值为int型,如果a和b都被成功读入,那么scanf的返回值就是2:如果只有a被成功读入,返回值为1:如果a和b都未被成功读入,返回值为0:如果遇到错误或遇到end of file,返回值为Eof。
c语言学生成绩管理系统实训报告
c语言学生成绩管理系统实训报告C语言学生成绩管理系统实训报告一、引言在学习C语言的过程中,我们进行了一项有关成绩管理系统的实训。
本报告旨在总结和回顾我们在实训中的收获和体会,并对C语言学生成绩管理系统进行全面评估。
二、实训内容概述1. 实训主题及目的本次实训的主题是设计和实现一个简单的学生成绩管理系统。
通过实践,我们旨在掌握C语言的基本语法和程序设计思维,同时提高我们的代码编写能力和解决问题的能力。
2. 实训内容和步骤在实训中,我们首先学习了C语言的基本语法和概念,并了解了文件的读取和写入操作。
之后,我们根据需求和功能分析,设计了学生成绩管理系统的功能模块并进行了程序编写和调试。
我们进行了测试和优化,确保系统能够正常运行和满足需求。
三、学习收获1. 对C语言的深入理解通过实训,我们加深了对C语言的理解和掌握,熟悉了各种数据类型、控制结构、函数和指针等基本概念,提高了我们的编程能力和逻辑思维能力。
2. 实践能力和团队协作能力在实训中,我们通过实际操作和团队合作,提高了我们的实践能力和团队协作能力,学会了如何合理分工、有效沟通和协作解决问题。
3. 程序设计思维和问题解决能力通过设计和实现学生成绩管理系统,我们培养了自己的程序设计思维和问题解决能力,能够从需求分析到系统设计再到程序编写和测试,全面解决问题和实现功能。
四、个人观点和理解在本次实训中,我深刻认识到C语言作为一种程序设计语言的重要性和广泛应用性,同时也意识到程序设计思维和问题解决能力对我们的职业发展和学习成长至关重要。
我相信通过不断的实践和学习,我能够不断提升自己的编程能力和解决问题的能力,成为一名优秀的程序员。
五、总结通过本次实训,我们对C语言学生成绩管理系统有了全面的了解和掌握,同时也提高了我们的编程能力和实践能力。
希望通过这样的实践和学习,我们能够不断提升自己,成为技术过硬、有创造力和团队合作精神的优秀程序员。
六、结语期望通过本次实训报告,能够对C语言学生成绩管理系统的实训有所了解,并对我们的学习和职业发展有所启发。
C语言学生信息管理系统实验报告
.C语言课程设计学生信息管理系统姓名洪伟生院系计算机学院日期2015年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*C reate();//学生信息手动录入struct student*R eadpoint();//磁盘文件写入内存struct student * Modify(struct student * head);//链表结构体成员修改struct student * Add(struct student * head);//链表节点插入struct student * Delete(struct student * head);//链表节点删除.2.2.2 、函数之间的调用关系:通过 switch 语句进行指令选择:case 1:学生信息录入调用函数Create( )、Save( ) 、Menu_1( ) 、 Menu_2( )case 2:学生信息浏览调用函数Readpoint( ) 、Sort( ) 、Read( ) 、Save( ) 、 Menu_1( ) 、Menu_2( )case 3:学生信息查找调用函数Search( )、Readpoint( )、 Menu_1( ) 、Menu_2( )case 4:学生信息修改调用函数Modify( )、Readpoint( )、 Save( ) 、 Menu_1( ) 、Menu_2( )case 5:学生信息增加调用函数Add( ) 、 Readpoint( )、Save( ) 、Menu_1( ) 、 Menu_2( )case 6:学生信息删除调用函数Delete( )、Readpoint( )Save( )、Menu_1( ) 、Menu_2( ) case 0:返回主菜单调用函数Menu_1( )第三章、代码(源代码)/*学生信息管理系统*/#include<stdio.h>#include<stdlib.h>#include<string.h>struct student//定义结构体{int num;char name[24];char sex[5];int Chinese;int Math;int English;struct student * next;};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 * Readpoint();//磁盘文件写入内存struct student * Create();//学生信息手动录入struct student * Modify(struct student * head);//链表结构体成员修改struct student * Add(struct student * head);//链表节点插入struct student * Delete(struct student * head);//链表节点删除int main(void){Menu_1();return 0;}void Menu_1(){int num;printf("\t\t\t\t学生信息管理系统 \t\t\t\t\n");printf("\t\t\t 1:进入学生信息管理 \n");//主菜单printf("\t\t\t 0:退出学生信息管理 \n");printf(" 请您输入指令 :");scanf("%d",&num);switch(num){ case 1:Menu_2();break;default:printf("-----------------------------------------您已退出学生信息管理系统 -----------------------------------------------\n");break;}}/*------------------------------------------------------------------------------------------------------------------------------------*/void Menu_2(){struct student * head;int num;printf("\t\t\t欢迎进入 \n");printf("-----------------------------------------------------------------------------------------------------------------------\n");printf("\t\t\t 1:学生信息录入\n");printf("\t\t\t 2:学生信息浏览\n");printf("\t\t\t 3:学生信息查找\n");printf("\t\t\t 4:学生信息修改\n");// 二级菜单printf("\t\t\t 5:学生信息增加\n");printf("\t\t\t 6:学生信息删除\n");printf("\t\t\t 0:返回主菜单\n");printf("------------------------------------------------------------------------------------------------------------------------\n");printf(" 请您输入指令 :");scanf("%d",&num);switch(num){case 1:{head = Create();Save(head);printf("\n");printf("\t\t\t 1:返回主菜单\n");// 手动录入学生数据printf("\t\t\t 2:返回二级菜单\n");printf("\n");printf(" 请您输入指令 :");scanf("%d",&num);switch(num){case 1:Menu_1();break;case 2:Menu_2();break;default :{printf(" 输入无效,返回二级菜单!\n");Menu_2();}break;}}break;case 2:{head = Readpoint();//写入链表,返回头指针Sort(head);printf("\t\t\t 以学号升序排列 \n");Read(head);//链表数据写入文件Save(head);printf("\n");printf("\t\t\t 1:返回主菜单\n");printf("\t\t\t 2:返回二级菜单\n");printf("\n");printf(" 请您输入指令 :");scanf("%d",&num);switch(num){case 1:Menu_1();break;case 2:Menu_2();break;default :{printf(" 输入无效,返回二级菜单!\n");Menu_2();}break;}}break;case 3:{head = Readpoint();Search(head);//查找学生信息printf("\n");printf("\t\t\t 1:返回主菜单\n");printf("\t\t\t 2:返回二级菜单\n");printf("\n");printf(" 请您输入指令 :");scanf("%d",&num);switch(num){case 1:Menu_1();break;case 2:Menu_2();break;default :{printf(" 输入无效,返回二级菜单!\n");Menu_2();}break;}}break;case 4:{head = Readpoint();Modify(head);//修改结构体成员并保存到文件Save(head);printf("\n");printf("\t\t\t 1:返回主菜单\n");printf("\t\t\t 2:返回二级菜单\n");printf("\n");printf(" 请您输入指令 :");scanf("%d",&num);switch(num){case 1:Menu_1();break;case 2:Menu_2();break;default :{printf(" 输入无效,返回二级菜单!\n");Menu_2();}break;}}break;case 5:{head = Readpoint();Add(head);// 增加学生信息并保存到文件Save(head);printf("\n");printf("\t\t\t 1:返回主菜单\n");printf("\t\t\t 2:返回二级菜单\n");printf("\n");printf(" 请您输入指令 :");scanf("%d",&num);switch(num){case 1:Menu_1();break;case 2:Menu_2();break;default :{printf(" 输入无效,返回二级菜单!\n");Menu_2();}break;}}break;case 6:{head = Readpoint();head = Delete(head);//删除学生信息并保存到文件Save(head);printf("\n");printf("\t\t\t 1:返回主菜单\n");printf("\t\t\t 2:返回二级菜单\n");printf("\n");printf(" 请您输入指令 :");scanf("%d",&num);switch(num){case 1:Menu_1();break;case 2:Menu_2();break;default :{printf(" 输入无效,返回二级菜单!\n");Menu_2();}break;}}break;case 0: Menu_1();break;default :{printf(" 请重新输入 \n");Menu_2();}break;}}/*---------------------------------------------------------------------------------------------------------------------------------------*/struct student * Create()//学生信息手动录入{struct student *head,* p,* q;int n;p = q = (struct student *)malloc(sizeof(struct student));printf("请输入学生的姓名、学号、性别、语文成绩、高等数学成绩、英语成绩 :\n");scanf("%s",q->name);scanf("%d %s %d %d %d",&q->num,&q->sex,&q->Chinese,&q->Math,&q->E nglish);n = 0;head =NULL;while (q->num != 0){n = n+1;if (n == 1)head = q;elsep->next = q;p = q;q = (struct student *)malloc(sizeof(struct student));scanf("%s",q->name);scanf("%d %s %d %d %d",&q->num,q->sex,&q->Chinese,&q->Math,&q->En glish);}p->next = NULL;printf(" 学生信息录入成功 !\n");return head;}/*----------------------------------------------------------------------------------------------------------------------------------------*/struct student * Readpoint()//学生信息写入内存,便于操作{FILE * fp1;struct student *head,* p,* q;int n;if((fp1 = fopen("E:test.txt","rb")) == NULL){printf("open file error!\n");exit(0);}p = q = (struct student *)malloc(sizeof(struct student));fscanf(fp1,"%s %d %s %d %d %d",q->name,&q->num,q->sex,&q->Chinese ,&q->Math,&q->English);n = 0;head =NULL;while( !feof(fp1)){n = n+1;if (n == 1)head = q;elsep->next = q;p = q;q = (struct student *)malloc(sizeof(struct student));fscanf(fp1,"%s %d %s %d %d %d",&q->name,&q->num,&q->sex,&q->Chine se,&q->Math,&q->English);}p->next = NULL;fclose(fp1);return head;}/*----------------------------------------------------------------------------------------------------------------------------------------*/void Swap(struct student * phead, struct student * pback)//链表元素数据交换{struct student * temp = (struct student *)malloc(sizeof(struct student));strcpy(temp->name,phead->name);temp->num = phead->num;strcpy(temp->sex,phead->sex);temp->Chinese = phead->Chinese;temp->Math = phead->Math; temp->English = phead->English;strcpy(phead->name,pback->name);phead->num= pback->num;strcpy(phead->sex,pback->sex);phead->Chinese = pback->Chinese;phead->Math = pback->Math;phead->English = pback->English;strcpy(pback->name,temp->name);pback->num = temp->num;strcpy(pback->sex,temp->sex);pback->Chinese = temp->Chinese;pback->Math = temp->Math;pback->English = temp->English;free(temp);}/*----------------------------------------------------------------------------------------------------------------------------------------*/void Sort(struct student * head)//学号排序{struct student * phead = (struct student *)malloc(sizeof(structstudent));struct student * pback = (struct student *)malloc(sizeof(structstudent));phead = head;while (phead){int Num = phead->num;pback = phead->next;while(pback){if( Num > pback->num){Swap(phead,pback);Num = phead->num;}pback = pback->next;}phead = phead->next;}}/*---------------------------------------------------------------------------------------------------------------------------------------*/void Read(struct student * head)//学生信息读取{struct student * p;p = head;printf("------------------------------------------------------------------------------------------------------------------------\n");printf(" 学生的姓名、学号、性别、语文成绩、高等数学成绩、英语成绩 :\n");while(p != NULL){printf(" %s \t%d\t%s \t %d \t %d\t\t %d\n",p->name,p->num,p->sex,p->Chinese,p->Math,p->English);p = p->next;}printf("------------------------------------------------------------------------------------------------------------------------\n");}/*----------------------------------------------------------------------------------------------------------------------------------------*/void Save(struct student * head)//学生信息保存到文件{struct student * p;FILE * fp;if((fp = fopen("E:test.txt","wb")) == NULL){printf("open file error!\n");exit(0);}p = head;while(p !=NULL){fprintf(fp,"%s %d %s %d %d %d",p->name,p->num,p->sex,p->Chinese,p ->Math,p->English);fprintf(fp,"%s","\r\n");p = p->next;}fclose(fp);}/*----------------------------------------------------------------------------------------------------------------------------------------*/void Search(struct student * head)//学生信息查找{int n;struct student * p;char name[24];int num;char sex[5];int Chinese;int Math;int English;printf(" 您想以何种方式进行查找:\n");printf("1;姓名 \n");printf("2:学号 \n");printf("3:性别 \n");printf("4:语文成绩 \n");printf("5:数学成绩 \n");printf("6:英语成绩 \n");printf("0:返回二级菜单 \n");scanf("%d",&n);switch(n){case 1:{printf(" 请输入姓名 :");//按姓名查找scanf("%s",name);p = head;while(strcmp(name,p->name)!=0 && p->next != NULL)p = p->next;if(strcmp(name,p->name)==0)printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chines e,p->Math,p->English);elseprintf(" 查无此人 !\n");}break;case 2:{printf(" 请输入学号 :");//按学号查找scanf("%d",&num);p = head;while(num != p->num && p->next != NULL)p = p->next;if(num == p->num)printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chines e,p->Math,p->English);elseprintf(" 查无此人 !\n");}break;case 3:{printf(" 请输入性别 :");//按性别查找scanf("%s",sex);p = head;while(p!= NULL){if(strcmp(sex,p->sex)==0)printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chinese,p->Math,p->English);p = p->next;}}break;case 4:{printf(" 请输入语文成绩 :");//按语文成绩查找scanf("%d",&Chinese);p = head;while(p!= NULL){if(Chinese == p->Chinese)printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chinese,p->Math,p->English);p = p->next;}}break;case 5:{printf(" 请输入高等数学成绩 :");//按高等数学成绩查找scanf("%d",&Math);p = head;while(p!= NULL){if(Math == p->Math)printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chinese,p->Math,p->English);p = p->next;}}break;case 6:{printf(" 请输入英语成绩 :");//按英语成绩查找scanf("%d",&English);p = head;while(p!= NULL){if(English == p->English)printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chinese,p->Math,p->English);p = p->next;}}break;default:{printf(" 指令错误返回二级菜单!\n");Menu_2();}break;}}/*----------------------------------------------------------------------------------------------------------------------------------------*/struct student * Modify(struct student * head){int n;struct student * p;char name[24];int num;printf("您想以何种方式进行修改:\n");printf("1;姓名 \n");printf("2:学号 \n");printf("0:返回二级菜单 \n");scanf("%d",&n);switch(n){case 1:{printf(" 请输入姓名 :");//按姓名查找后修改信息scanf("%s",name);p = head;while(strcmp(name,p->name)!=0 && p->next != NULL)p = p->next;if(strcmp(name,p->name)==0){scanf("%s %d %s %d %d %d",p->name,&p->num,p->sex,&p->Chinese,&p->Math,&p->English);printf(" 修改后 :\n");printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chinese,p->Math,p->English);}elseprintf(" 查无此人 !\n");}break;case 2:{printf(" 请输入学号 :");// 按学号查找后修改信息scanf("%d",&num);p = head;while(num != p->num && p->next != NULL)p = p->next;if(num == p->num){scanf("%s %d %s %d %d %d",p->name,&p->num,p->sex,&p->Chinese,&p->Math,&p->English);printf(" 修改后 :\n");printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chinese,p->Math,p->English);}elseprintf(" 查无此人 !\n");}break;default:{printf(" 指令错误 , 返回二级菜单 !\n");Menu_2();}break;}return head;}struct student * Add(struct student * head)//增加学生信息{struct student * p,* q;//为增加的学生分配内存struct student * add = (struct student *)malloc(sizeof(structstudent ));scanf("%s %d %s %d %d %d",add->name,&add->num,add->sex,&add->Chin ese,&add->Math,&add->English);q = head;if(head == NULL){head = add;//空表插入add->next = NULL;}else{while((add->num > q->num) && (q->next != NULL)) //指向下个节点{p = q;q = q->next;}if(add->num <= q->num)//插到首节点{if (head == q)head =add;elsep->next = add;//插到中间节点add->next = q;}else{q->next = add;//插到尾节点add->next = NULL;}}return head;}struct student * Delete(struct student * head)//删除学生信息{int n;struct student * p,* q;char name[24];int num;printf("您想以何种方式进行删除:\n");printf("1;姓名 \n");printf("2:学号 \n");printf("0:返回二级菜单 \n");scanf("%d",&n);switch(n){case 1:{printf(" 请输入姓名 :"); // 按姓名查找并删除 scanf("%s",name);p = head;while(strcmp(name,p->name)!=0 && p->next != NULL){q = p;p = p->next;}if ( p == head)//删除首节点{ head = p->next;p->next = NULL;}elseif(strcmp(name,p->name)==0){q->next = p->next; // 删除中间节点 p->next = NULL;}elseprintf(" 查无此人 !\n");}break;case 2:{printf(" 请输入学号 :");//按学号查找并删除scanf("%d",&num);p = head;while(num != p->num && p->next != NULL){q = p;p = p->next;}if(p == head){head = p->next;p->next = NULL;}.elseif(num == p->num){q->next = p->next;p->next = NULL;}elseprintf(" 查无此人 !\n");}break;default:{printf(" 指令错误 , 返回二级菜单 !\n");Menu_2();}break;}return head;}程运行结果:第四章、分析说明学生管理系统主要利用链表这一数据结构,通过文件的写入(f printf 函数)、写出(fscanf 函数) 来对数据进行读取进而进行操作以及储存学生信息,以及利用switch 语句的特点完成用户与机器间的交互操作,符合实际需要。
c语言学生管理系统课程设计报告总结 (2)
C语言学生管理系统课程设计报告总结1. 引言本报告总结了我们小组在C语言课程设计中开发的学生管理系统。
该系统旨在简化学校教务管理过程,提高教务工作效率,实现学生信息的快速查询、管理和统计。
本文将介绍系统的设计目标、主要功能模块以及我们在开发过程中遇到的挑战和解决方案。
2. 设计目标我们设计学生管理系统的主要目标是提供以下功能:•学生信息管理:包括学生基本信息的录入、查找、修改和删除操作。
•课程管理:包括课程信息的录入、查找、修改和删除操作。
•成绩管理:包括成绩录入、查询和统计功能。
•班级管理:包括班级信息的录入、查找、修改和删除操作。
3. 系统设计与实现3.1 数据结构设计为了存储学生信息、课程信息和成绩信息,我们设计了以下数据结构:•学生信息结构体:包含学生姓名、学号、性别、出生日期等字段。
•课程信息结构体:包含课程名称、课程号、学分等字段。
•成绩信息结构体:包含学生姓名、课程名称、分数等字段。
3.2 用户界面设计我们采用命令行界面来实现用户和系统的交互。
通过命令行菜单,用户可以选择不同的功能模块,并输入相应的命令进行操作。
我们通过C语言的输入输出函数来实现用户界面的显示和交互。
3.3 功能模块实现学生管理系统主要包含以下功能模块:•学生信息管理模块:实现学生信息的录入、查找、修改和删除操作。
•课程管理模块:实现课程信息的录入、查找、修改和删除操作。
•成绩管理模块:实现学生成绩的录入、查询和统计功能。
•班级管理模块:实现班级信息的录入、查找、修改和删除操作。
4. 开发过程中的挑战和解决方案在开发学生管理系统的过程中,我们遇到了以下挑战:1.数据存储和管理:如何有效地存储和管理大量的学生信息、课程信息和成绩信息。
我们采用了链表的数据结构来组织数据,通过指针进行关联和操作,以提高数据的访问效率。
2.用户界面设计:如何设计一个简洁、直观的用户界面,方便用户进行操作。
我们借鉴了其他类似系统的设计思路,采用了命令行菜单和命令交互的方式来实现用户界面,简化了用户操作的复杂性。
C语言学生管理系统实验报告
C语言学生管理系统实验报告
实验目的:
1.更加灵活的使用数组作为函数参数;
2.初步掌握开发一个小型实用系统的基本方法;
3.初步掌握书写程序设计开发文档的能力。
实验内容:
程序一:学生信息管理系统
编写程序,实现学生信息的管理(包括学生信息的建立、增加、删除、修改、查找),要求:
小组分工情况
小组分工情况统计表
班级
信息工程学院计算机科学与技术专业2012级软件工程(方向)班组
名称
学生成绩管理系统
项目组长
(本次项目小组组长)
组员
组员学号
工作简介
一需求分析
I设计一个学生成绩管理系统至少具有以下功能:(1)菜单功能:采用文本菜单界面。
(2)学生信息的建立。
(3)学生信息的增加。
(4)学生信息的删除。
(5)学生信息的修改。
(6)学生信息的查找。
II数据库结构
structstudent
{charnum[10];
charname[10];
charxibie[10];
charsex;
intage;
}st[30];
二总体设计
框架结构图(系统的功能结构图)
学生成绩管理系统
学生成绩管理系统
输入
增加
……。
退出
程序流程图:(visio)
退出结束
退出
结束
开始
输出菜单
根据菜单输入n的值选择程序输入
增加
删除
修改
查找
三、详细设计
(流程图!!!)
四、程序源代码(参考答案)
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语言 学生成绩管理系统实验报告
HUNAN UNIVERSITY程序设计训练报告题目学生成绩管理系统学生姓名学生学号专业班级指导老师湖南大学程序设计训练报告目录一程序功能简介…………………………………………………………………………….。
.。
.3二本人完成的主要工作……………………………………………………………………..。
3三设计方案……………………………………………………………………………。
...。
.。
3 1)设计分析……………………………………………………………………………。
.。
.。
.。
32)模块的功能及程序分析…………………………………………………………....。
43)核心算法流程图……………………………………………………………………。
...。
74) 核心源程序模块………………………………………………………………………。
.85)操作方法简介………………………………………………………………………….。
86)实验结果……………………………………………………………………………。
.。
.。
.。
.98)设计体会…………………………………………………………………………….。
11四附录……………………………………………………………………………。
..。
.。
12 一、程序功能简介;本程序作为一个学生成绩管理系统,用户可以首先使用管理员模式初始化该系统.初始化完成之后,用户可以选择使用成绩记录人模式进入系统,对学生成绩进行记录。
系统自动储存所记录的学生成绩,然后用户可根据不同需要来选择不同的功能来使用程序,其中包括成绩查询与增减,成绩排序,成绩分析等功能. 二、本人完成的主要工作;程序设计分析,绘制程序流程图,写出大体结构算法以及各个核心算法模块,写出核心源程序,对源程序进行算法优化,对源代码进行多次试验验证其正确性,完成源代码的测试以及代码书写规范检测。
三、设计方案;1)设计分析;首先拿到这个题目,我就开始思考如何将这个看似简单的系统做的较为完善,而不是简简单单的学生成绩管理系统,学生管理系统自然是这个题目的核心,从中发散思维,我想到了几个比较细小的地方。
C语言学生管理系统_综合实验报告
C语言学生管理系统_综合实验报告一、引言学生管理系统是一种方便高校进行学生信息管理的工具,具备添加、删除、查询、修改等基本功能,可以提高学校教务部门的工作效率,减少人力资源的浪费。
本文将介绍一个基于C语言的学生管理系统的设计和实现。
二、系统设计1.需求分析学生管理系统主要包括学生信息、教师信息和课程信息的录入、查询、修改和删除等功能,同时要求可以按照学号、姓名等字段进行快速检索。
系统还需要能够自动生成学生的成绩单和课程表,方便学生进行查看。
2.系统架构学生管理系统采用客户端-服务器模式,客户端和服务器之间通过网络进行数据传输。
客户端通过命令行界面与用户交互,服务器负责处理客户端发送的请求并返回相应的结果。
3.系统功能模块(1)学生信息管理模块:包括学生信息的添加、查询、修改和删除等功能。
(2)教师信息管理模块:包括教师信息的添加、查询、修改和删除等功能。
(3)课程信息管理模块:包括课程信息的添加、查询、修改和删除等功能。
(4)成绩管理模块:包括成绩的录入和查询功能。
(5)课程表模块:根据学生选课情况生成学生的课程表。
三、系统实现1.开发环境系统开发环境选择C语言,编译器使用GCC,开发工具使用Dev-C++。
2.数据存储系统的数据存储采用文本文件的形式,每个学生、教师和课程信息分别存储在一个文本文件中,使用逗号分隔各个字段。
3.界面设计系统界面使用命令行界面,通过菜单来提供各个功能的选项,用户可以根据提示输入相应的指令进行操作。
4.功能实现(1)学生信息管理功能:用户输入学生信息后,系统将学生信息保存到指定的文本文件中,并返回操作结果。
(2)教师信息管理功能:用户输入教师信息后,系统将教师信息保存到指定的文本文件中,并返回操作结果。
(3)课程信息管理功能:用户输入课程信息后,系统将课程信息保存到指定的文本文件中,并返回操作结果。
(4)成绩管理功能:用户输入学生学号和对应的课程信息后,系统将成绩保存到指定的文本文件中,并返回操作结果。
c语言实验报告(学生学籍管理系统)[1]
学生学籍管理系统一、实验要求:一个班级有若干名学生(不超过10名),共有三门课程,分别是语文、数学、英语,要求编写一个成绩的管理系统,每个学生要求有学号、姓名、性别、三门课的成绩以及平均成绩,要实现从键盘上输入学号(必须为数字)、姓名、性别、三门课程的成绩,并求每一位学生的平均成绩(即每一行的平均值)、每一位学生的最高分(每一行的最大值),求每一门课程的平均分(即每一列的平均值)、每一门课的最高分(即每一列的最大值),并输出全部结果。
根据学生的平均成绩进行排序,对语文、数学、英语成绩进行排序,并输出排序结果,排序必须使用冒泡排序法。
并且具有如下的菜单:学生学籍管理系统***********************MENU***********************1、Enter new data2、Browse all3、Search by num4、Order by average5、Exit***************************************************用户可以根据菜单来选择操作,菜单的含义如下:1、Enter new data 输入新数据2、Browse al 浏览所有数据3、Search by num 根据学号查询学生信息4、Order by average 根据平均成绩排序5、Exit 退出系统实验步骤:二、实验目的1、了解和熟悉Visual C++软件编程开发环境2、熟练掌握结构化程序设计的步骤和模块化设计方法3、熟练掌握C语言数据类型,熟记字符型数据和整形数据的定义和使用4、熟练掌握用while语句、do…while语句和for语句实现循环结构程序设计的方法5、掌握一维数组、二维数组的定义、赋值和输入输出的方法6、掌握与数组有关的算法(特别是排序算法,熟练掌握冒泡排序法)7、熟悉函数的定义、声明方法及全局变量和局部变量的概念与用法,掌握函数的调用方法8、掌握结构体类型变量的定义和使用及结构体类型数组的概念和应用三、实验步骤1、分析设计题目:根据题目要求,可以使用结构体数组来存储学生的信息,包括学号、姓名、性别、各科成绩、平均成绩五个成员,分别使用字符数组、整型数组、浮点型变量来表示。
c 学生成绩管理系统实验报告
c 学生成绩管理系统实验报告《C 学生成绩管理系统实验报告》摘要:本实验旨在设计并实现一款基于C语言的学生成绩管理系统,通过该系统可以实现学生信息的录入、查询、修改和删除等功能,并能够对学生成绩进行统计和分析。
通过实验结果表明,该系统具有良好的稳定性和高效性,可以满足学校对学生成绩管理的需求。
1. 引言学生成绩管理是学校教务管理工作中的重要组成部分,有效的成绩管理系统可以提高学校管理效率,为学生提供更好的学习环境。
因此,设计一款稳定高效的学生成绩管理系统对于学校教务管理工作具有重要意义。
2. 系统设计本实验设计了一个基于C语言的学生成绩管理系统,系统主要包括学生信息管理模块和成绩管理模块。
学生信息管理模块可以实现学生信息的录入、查询、修改和删除等功能;成绩管理模块可以对学生成绩进行统计和分析。
系统采用了文件存储学生信息和成绩数据,具有良好的数据持久性。
3. 实验方法本实验采用了自顶向下的模块化设计方法,将系统划分为多个模块,每个模块负责不同的功能。
通过模块化设计,可以提高系统的可维护性和可扩展性。
在实验过程中,我们使用了C语言进行编程,利用了C语言丰富的库函数和指针等特性,提高了系统的效率和性能。
4. 实验结果经过实验测试,我们发现该系统具有良好的稳定性和高效性,可以满足学校对学生成绩管理的需求。
学生信息的录入、查询、修改和删除等功能均能够正常运行,成绩的统计和分析功能也能够准确地反映学生成绩的情况。
5. 结论本实验成功设计并实现了一款基于C语言的学生成绩管理系统,系统具有良好的稳定性和高效性,可以满足学校对学生成绩管理的需求。
通过本实验,我们对C语言的应用有了更深入的了解,也对学生成绩管理系统的设计和实现有了更加深刻的认识。
综上所述,C 学生成绩管理系统实验报告得出了该系统具有良好的稳定性和高效性,可以满足学校对学生成绩管理的需求。
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语言结构体以及文件操作)实验报告
int sumS;
}STUDENT;
//函数功能:利用循环输入学生的学号姓名以及成绩等信息。
int InputScore(STUDENT stu[],int m)
{
int i,j,n;
printf(”请输入参加考试的人数:");
scanf("%d”,&n);
for(i=0;i〈n;i++)
{
printf(”请输入第%d个学生的信息:学号,姓名,成绩(数学、英语,物理)\n”,i+1);
scanf("%ld”,&stu[i].studentID);
scanf("%s",stu[i]。studen{
scanf(”%d",&stu[i]。score[j]);
** 1、录入每个学生的学号,姓名,和各科考试成绩!**
**2、计算每个学生的总分和平均分!**
**3、按每个学生的总分和平均分从高到低排出名次表!**
**4、按姓名的字典顺序排出成绩!**
**5、按姓名查询学生学生排名和考试成绩!**
** 6、输出每个学生的学号,姓名,各科成绩!**
**7、将每个学生的信息写入文件!**
四、错误提示界面
***************************************
*****请先录入学生信息和成绩****
***************************************
五、函数代码
1、主函数
/*编程:孟令鑫131110412
时间:2013年12月24日
内容;结构体实现学生成绩管理系统*/
C语言学生管理系统综合实验报告
printf("%-8s",stu[c].sex);
printf("%-16s",stu[c].clas);
printf("%-6d",stu[c].yw);
printf("%-6d",stu[c].sx);
printf("%-4d",stu[c].yy);
printf("\n");
}
printf("----------------------------------------------------------------\n");
}
void cx()
{
int count=0;
char str[10];
printf("\n请输入要查询的学生学号:");
i++;
printf("\t是否继续输入数据(Y.N)");cin>>x;
if(x=='n'||x=='N') break;
}
}
void EditData()
{
int count=0;
char str[10];
printf("\n请输入学生学号:");
cin>>str;
while (count<i)
printf("%-4d",stu[count].yy);
printf("\n");
printf("----------------------------------------------------------------\n");
c语言学生信息管理系统实训报告
c语言学生信息管理系统实训报告
C语言学生信息管理系统是以C语言为编程语言开发的数据管理系统,该系统基于数
据库技术,实现了人事档案管理、班级管理、成绩管理、考勤管理及学生信息管理等功能。
本次实训,我使用C语言编程,在Visual Studio2017环境下,实现了一种自定义的
学生信息管理系统。
该系统实现学生信息的查询、删除、添加及修改功能。
在项目的开发
过程中,我也使用了文件读取与保存、数据结构训练、数据处理等编程技术。
其中,采用
C语言处理文本文件,用链表结构组织数据,并实现增删改查等功能;使用链表结构处理学生信息,实现数据的添加、修改和删除等操作;使用文件读取及保存,在开发过程中
记录及复用学生信息,并按要求输出学生信息报表;使用数据结构进行数据处理,通过
数据的排序、查找等操作,实现提高学生管理的效率。
实训过程运用C语言基础知识和结构化编程思想,巩固了编写程序的知识和编程技术,让我更加深入地理解面向对象思想。
在实训过程中,我熟练掌握了if语句、while语句、switch语句等基础编程语句,加深了对编程概念的理解,同时也学会了在实际编程中如何把这些概念运用到编程中,从而熟练掌握C语言的编程技巧。
实训结束时,我认为自己在编程方面有了很大的进步,对C语言的编程也有了更深的
理解,同时自己也掌握了一套独立的编程思维,并能够利用面向对象思想,实现学生信息
管理系统客户端最新需求。
学生系统 c 实验报告
学生系统c 实验报告引言学生管理系统是一种用于管理学生信息的软件,它能够帮助学校、教育机构以及各类培训机构对学生的信息进行存储、查询和管理。
在本次实验中,我们使用C 语言设计并实现了一个简单的学生系统,通过该系统可以进行学生信息的新增、修改、查询和删除等操作。
设计思路在本次实验中,我们采用了模块化的设计思路,将学生系统分为学生信息管理模块、数据库模块和用户界面模块。
学生信息管理模块该模块用于处理学生信息相关的操作,包括增加学生信息、修改学生信息、查询学生信息和删除学生信息等功能。
为了方便之后的扩展性,我们将学生信息的数据结构定义为一个结构体,包括学生姓名、学号、性别和年龄等信息。
在学生信息管理模块中,我们通过链表的方式进行数据的存储和管理。
数据库模块数据库模块用于实现学生信息的持久化,将学生信息存储到磁盘文件中,以便之后的读取和修改操作。
在本次实验中,我们采用了文本文件的方式实现数据库模块,将学生信息保存为文本格式,并通过文件操作函数对数据进行读写。
用户界面模块用户界面模块用于实现与用户的交互,包括菜单显示、用户输入和信息输出等功能。
我们通过命令行界面的方式设计用户界面,用户可以通过输入对应的命令来操作学生信息。
实验结果经过实验的设计和编码,我们成功实现了一个简单的学生系统。
用户可以通过菜单选择不同的操作,进行学生信息的增删改查。
系统在运行时可以正常读取和保存学生信息,并且能够根据用户的选择执行相应的操作。
实验总结通过本次实验,我们深入理解了学生系统的设计思路和实现过程。
学会了如何使用C 语言进行模块化设计,分解问题并解决问题。
同时,我们也对文件操作和链表数据结构有了更深入的了解和掌握。
在实验过程中,我们也遇到了一些问题和挑战,比如对学生信息的输入和验证、文件读写的处理和用户界面的设计等。
通过不断的调试和优化,我们最终完成了系统的开发和测试。
通过本次实验,我们不仅提高了编程能力和解决问题的能力,还加深了对学生系统的理解和应用。
C语言学生管理系统实验设计报告
吉林大学实验设计设计题目:学院:专业班级:姓名:学号:指导教师:学生成绩管理系统一、设计目的1、掌握对链表、结构体、指针、文件的操作和C语言算法的应用。
2、用程序实现动态链表的建立、查找、修改、删除、插入、输出、排序,或结构体数组的输入、修改、删除、插入、输出,或文件记录的添加、修改、删除、排序(包括对文件记录按某个数据项排序)、查询、插入。
二、设计过程1.需求分析1)、系统界面需求进入系统时应当出现相对人性化的字符界面或图形界面,提供菜单选项,按提示选择序号执行相应的功能,输入输出数据或操作成功时要有相应提示信息,此外还要提供帮助信息,如系统的功能介绍等,提供系统信息或程序信息,如学生、详细信息等。
2)、系统功能需求对设计题目进行分析,可知系统主要功能可以有下面几种,而且各种功能互相组合,形成或构成新的功能。
①、输入功能。
第一次可通过在内存中新建或创建动态链表输入学生的成绩记录和其他数据记录,而且随时可以退出输入,既可在退出时可自动保存或提示保存或输入完毕后返回主菜单选择“Save the file”命令进行手动保存到硬盘,也可以在输入过程中自动保存。
如果以前已经建立过动态链表且已经保存到文件中,可先选择“Load the file”(相当于打开文件、读取文件),再插入新的记录到动态链表。
②、删除功能。
根据学号、姓名或其他数据项在动态链表中查找并删除一个学生的成绩记录。
③、显示记录。
直接输出已按某数据项排序(学号顺序)的动态链表中所有学生的记录于屏幕上显示。
④、查找功能。
查找的目的可能是查看学生数据、修改数据或删除数据。
查找的方式有精确查找和模糊查找两种。
精确查找,指根据学号、姓名或其他数据项在动态链表中查找并显示一个学生的成绩记录。
模糊查找,指根据学号、姓名或其他数据项的逻辑组合条件在动态链表中查找并显示符合条件的学生的成绩记录。
查找的结果可以返回地址(指针)用于查看、修改或删除数据插入功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("\t 1.按学号排序\n");
printf("\t 2.查询\n");
printf("\t3.统计\n");
printf("\t 4.返回主菜单\n");
printf("\t \n");
printf("\t ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
佛山科学技术学院
实验报告
实验名称小型学生信息管理系统
实验项目编写一学生信息管理系统,用来管理学生基本信息及成绩信息
专业班级姓名XXX学号
指导教师成绩日期
一、试验目的
本实验为学生提供了一个既动手又动脑,上机实践的机会。学生通过分析和解决该实验,将课本上的理论知识和实际有机地结合起来,锻炼学生分析、解决较复杂问题的能力,提高学生编写综合系统程序的能力。
printf("%-13s",stu[count].name);
printf("%-8s",stu[count].sex);
printf("%-16s",stu[count].clas);
printf("%-6d",stu[count].yw);
printf("%-6d",stu[count].sx);
{printf("%-11s",stu[count].num);
printf("%-13s",stu[count].name);
printf("%-8s"来自stu[count].sex);
printf("%-16s",stu[count].clas);
printf("%-6d",stu[count].yw);
printf("--------------------------------------------------\n");
for(j=0;j<i;j++)
while(count<i)
{
for(j=0;j<i;j++)
{
printf("%-21s",stu[count].num);
printf("%-21s",stu[count].name);
printf("%-6d",stu[count].sx);
printf("%-4d",stu[count].yy);
printf("\n");
}
count++;
}
printf("----------------------------------------------------------------\n");
printf("学号姓名性别班级语文数学英语\n");
printf("----------------------------------------------------------------\n");
for(j=0;j<i;j++)
{
if(stu[j].yw<60||stu[j].sx<60||stu[j].yy<60)
}
count++;
}
if(count>=i)
printf("\n无该学号学生");
else
{
printf("\n");
}
}
void tjpjf()
{
int count=0;
stu[i].ave=float((stu[i].yw+stu[i].sx+stu[i].yy)/3.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;
}
printf("排序后结果为:\n");
printf("学号姓名性别班级语文数学英语\n");
printf("----------------------------------------------------------------\n");
for(c=0;c<i;c++)
{
printf("%-11s",stu[c].num);
printf("%-6d",stu[count].sx);
printf("%-4d",stu[count].yy);
printf("\n");
printf("----------------------------------------------------------------\n");
break;
scanf("%s",stu[i].clas);
printf("\t语文:");
scanf("%d",&stu[i].yw);
printf("\t数学:");
scanf("%d",&stu[i].sx);
printf("\t英语:");
scanf("%d",&stu[i].yy);
stu[i].ave=float((stu[i].yw+stu[i].sx+stu[i].yy)/3.0);
scanf("%s",stu[i].clas);
printf("\t语文:");
scanf("%d",&stu[i].yw);
printf("\t数学:");
scanf("%d",&stu[i].sx);
printf("\t英语:");
scanf("%d",&stu[i].yy);
stu[count].ave=float((stu[count].yw+stu[count].sx+stu[count].yy)/3.0);
printf("\n\t请选择具体的处理内容:");
cin>>x;
printf("\n");
switch(x)
{
case '1':sx();break;
case '2':cx();break;
case '3':tj();break;
case '4':break;
}
if(x=='4')
break;
printf("\n");
printf("%-6.2f",stu[count].ave);
count++;
printf("\n");}
}
printf("--------------------------------------------------\n");
}
void tjbhgrs()
{
int j,count=0;
printf("有不及格科目的学生是:\n");
二、实验内容
编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。系统功能模块如下图:
具体要求为:
1.建立学生信息,每个学生的信息应包括:学号、姓名、性别、班级、至少3门课程的成绩;
2.数据输入:输入学生的各项信息;
3.数据修改:根据输入学生的学号可以选择修改该学生的信息;
4.数据处理:可以选择处理方式为:排序、查询、统计。其中:
#include<iostream.h>
#include<string.h>
struct student
{
char num[10];
char name[10];
char sex[4];
char clas[20];
int yw,sx,yy;
float ave;
}stu[100];
int i,j;
void InputData()
cin>>str;
while (count<i)
{
if(strcmp(str,stu[count].num)==0)
{
printf("学号姓名性别班级语文数学英语\n");
printf("----------------------------------------------------------------\n");
printf("%-11s",stu[count].num);