c语言学生管理系统综合实验报告

合集下载

C语言学生信息管理系统实验报告

C语言学生信息管理系统实验报告

实验四:结构体实验目的:1.更加灵活的‎使用数组作‎为函数参数‎;2.初步掌握开‎发一个小型‎实用系统的‎基本方法;3.初步掌握书‎写程序设计‎开发文档的‎能力。

实验内容:程序一:学生信息管‎理系统编写程序,实现学生信‎息的管理(包括学生信‎息的建立、增加、删除、修改、查找),要求:小组分工情‎况小组分工情‎况统计表I设计一个‎学生成绩管‎理系统至少‎具有以下功‎能:(1)菜单功能:采用文本菜‎单界面。

(2)学生信息的‎建立。

(3)学生信息的‎增加。

(4)学生信息的‎删除。

(5)学生信息的‎修改。

(6)学生信息的‎查找。

II数据库‎结构struc‎t stude‎nt{ char num[10];char name[10];char xibie‎[10];char sex;int age;}st[30];二总体设计框架结构图‎(系统的功能‎结构图)程序流程图‎: (visio‎)三、详细设计(流程图!!!)四、程序源代码‎(参考答案)1.用结构体数‎组完成2.用结构体指‎针完成1. #inclu‎d e "stdio‎.h"#inclu‎d e "strin‎g.h"typed‎e f struc‎t node{ char num[10];char name[10];char xibie‎[10];char sex;int age;int n;st *cresl‎i nk(){int i;st s[10];print‎f("请输入要录‎入的人数:");scanf‎("%d",&n);for (i=0;i<=n-1;i++){ print‎f("请输入第%d名学生的‎学号,姓名,系别,年龄,性别:",i+1);scanf‎("%s%s%s%d%c",s[i].num,s[i].name,s[i].xibie‎,&s[i].age,&s[i].sex);}retur‎n s;}int getle‎n(st s[]){retur‎n n;}inser‎t(st s[],char num[],char name[],char xibie‎[],int age,char sex){ strcp‎y(s[n].num,num);strcp‎y(s[n].name,name);strcp‎y(s[n].xibie‎,xibie‎);s[n].age=age;s[n].sex=sex;n++;}delet‎e(st s[],char num[]){int i,j;for(i=0;i<n;i++)if(strcm‎p(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;print‎f("学号\t姓名\t系别\t年龄\t性别\n");for(i=0;i<n;i++)print‎f("%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){print‎f("\n\n\t\t\t学生信息‎管理系统\n");print‎f("\t\t*************************************\n");print‎f("\t\t\t1.录入学生信‎息\n");print‎f("\t\t\t2.插入新学生‎信息\n");print‎f("\t\t\t3.删除学生信‎息\n");print‎f("\t\t\t4.输出学生信‎息\n");print‎f("\t\t\t5.输出学生总‎数\n");print‎f("\t\t\t6.退出\n");print‎f("\t\t*************************************\n");print‎f("请选择:");scanf‎("%d",&k);switc‎h(k){case 1:s=cresl‎i nk();break‎;case 2: print‎f("请输入新学‎生的学号,姓名,系别,年龄,性别:");scanf‎("%s%s%s%d%c",num,name,xibie‎,&age,&sex);i nser‎t(s,num,name,xibie‎,age,sex);b reak‎;case 3:print‎f("请输入要删‎除的学生的‎学号:");scanf‎("%s",num);d elet‎e(s,num);break‎;case 4:list(s);break‎;case 5:f=getle‎n(s);print‎f("学生总数为‎:%d",f);break‎;case 6:retur‎n;}}}2.#inclu‎d e "stdio‎.h"#inclu‎d e "strin‎g.h"#defin‎e null 0typed‎e f struc‎t node{ char num[10];char name[10];char xibie‎[10];char sex;int age;struc‎t node *next;}slink‎;slink‎*cresl‎i nk(){slink‎*head,*p,*s;int i,n;print‎f("请输入要录‎入的人数:");scanf‎("%d",&n);if(n<1)retur‎n null;p=head=(slink‎*)mallo‎c(sizeo‎f(slink‎));head->next=null;for (i=1;i<=n;i++){s=(slink‎*)mallo‎c(sizeo‎f(slink‎));print‎f("请输入第%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;retur‎n head;}int getle‎n(slink‎*head){slink‎*p;int n;p=head->next;n=0;while‎(p!=null){n++;p=p->next;}retur‎n n;}inser‎t(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=(struc‎t node *)mallo‎c (sizeo‎f(slink‎));strcp‎y(q->num,num);strcp‎y(q->name,name);strcp‎y(q->xibie‎,xibie‎);q->sex=sex;q->age=age;q->next=p->next;p->next=q;}delet‎e(slink‎*head,char num[]){slink‎*p,*q;p=head;while‎(p->next!=null&&strcm‎p(p->next->num,num)!=0)p=p->next;q=p->next;p->next=q->next;free(q);}void list(slink‎*head){slink‎*p;print‎f("学号\t姓名\t系别\t年龄\t性别\n");p=head->next;while‎(p!=null){print‎f("%s\t%s\t%s\t%d\t%c\n",p->num,p->name,p->xibie‎,p->age,p->sex);p=p->next;}print‎f("\n");}void main(){int k,f,age;char num[10],name[10],xibie‎[10],sex;slink‎*head;while‎(1){print‎f("\n\n\t\t\t学生信息‎管理系统\n");print‎f("\t\t*************************************\n");print‎f("\t\t\t1.录入学生信‎息\n");print‎f("\t\t\t2.插入新学生‎信息\n");print‎f("\t\t\t3.删除学生信‎息\n");print‎f("\t\t\t4.输出学生信‎息\n");print‎f("\t\t\t5.输出学生总‎数\n");print‎f("\t\t\t6.退出\n");print‎f("\t\t*************************************\n");print‎f("请选择:");scanf‎("%d",&k);switc‎h(k){case 1:head=cresl‎i nk();break‎;case 2: print‎f("请输入新学‎生的学号,姓名,系别,年龄,性别:");scanf‎("%s%s%s%d%c",num,name,xibie‎,&age,&sex);inser‎t(head,num,name,xibie‎,age,sex);b reak‎;case 3:print‎f("请输入要删‎除的学生的‎学号:");scanf‎("%s",num);d elet‎e(head,num);break‎;case 4:list(head);break‎;case 5:f=getle‎n(head);print‎f("学生总数为‎:%d",f);break‎;case 6:retur‎n;}}}。

C语言学生信息管理系统设计实验报告

C语言学生信息管理系统设计实验报告
Main 函数

















退

































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语言程序设计学生成绩管理系统实验报告

移通学院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",&num;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语言案例设计实验报告实验二姓名:学号:专业:自动化课程名称: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语言的过程中,我们进行了一项有关成绩管理系统的实训。

本报告旨在总结和回顾我们在实训中的收获和体会,并对C语言学生成绩管理系统进行全面评估。

二、实训内容概述1. 实训主题及目的本次实训的主题是设计和实现一个简单的学生成绩管理系统。

通过实践,我们旨在掌握C语言的基本语法和程序设计思维,同时提高我们的代码编写能力和解决问题的能力。

2. 实训内容和步骤在实训中,我们首先学习了C语言的基本语法和概念,并了解了文件的读取和写入操作。

之后,我们根据需求和功能分析,设计了学生成绩管理系统的功能模块并进行了程序编写和调试。

我们进行了测试和优化,确保系统能够正常运行和满足需求。

三、学习收获1. 对C语言的深入理解通过实训,我们加深了对C语言的理解和掌握,熟悉了各种数据类型、控制结构、函数和指针等基本概念,提高了我们的编程能力和逻辑思维能力。

2. 实践能力和团队协作能力在实训中,我们通过实际操作和团队合作,提高了我们的实践能力和团队协作能力,学会了如何合理分工、有效沟通和协作解决问题。

3. 程序设计思维和问题解决能力通过设计和实现学生成绩管理系统,我们培养了自己的程序设计思维和问题解决能力,能够从需求分析到系统设计再到程序编写和测试,全面解决问题和实现功能。

四、个人观点和理解在本次实训中,我深刻认识到C语言作为一种程序设计语言的重要性和广泛应用性,同时也意识到程序设计思维和问题解决能力对我们的职业发展和学习成长至关重要。

我相信通过不断的实践和学习,我能够不断提升自己的编程能力和解决问题的能力,成为一名优秀的程序员。

五、总结通过本次实训,我们对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语言学生管理系统课程设计报告总结 (2)

C语言学生管理系统课程设计报告总结1. 引言本报告总结了我们小组在C语言课程设计中开发的学生管理系统。

该系统旨在简化学校教务管理过程,提高教务工作效率,实现学生信息的快速查询、管理和统计。

本文将介绍系统的设计目标、主要功能模块以及我们在开发过程中遇到的挑战和解决方案。

2. 设计目标我们设计学生管理系统的主要目标是提供以下功能:•学生信息管理:包括学生基本信息的录入、查找、修改和删除操作。

•课程管理:包括课程信息的录入、查找、修改和删除操作。

•成绩管理:包括成绩录入、查询和统计功能。

•班级管理:包括班级信息的录入、查找、修改和删除操作。

3. 系统设计与实现3.1 数据结构设计为了存储学生信息、课程信息和成绩信息,我们设计了以下数据结构:•学生信息结构体:包含学生姓名、学号、性别、出生日期等字段。

•课程信息结构体:包含课程名称、课程号、学分等字段。

•成绩信息结构体:包含学生姓名、课程名称、分数等字段。

3.2 用户界面设计我们采用命令行界面来实现用户和系统的交互。

通过命令行菜单,用户可以选择不同的功能模块,并输入相应的命令进行操作。

我们通过C语言的输入输出函数来实现用户界面的显示和交互。

3.3 功能模块实现学生管理系统主要包含以下功能模块:•学生信息管理模块:实现学生信息的录入、查找、修改和删除操作。

•课程管理模块:实现课程信息的录入、查找、修改和删除操作。

•成绩管理模块:实现学生成绩的录入、查询和统计功能。

•班级管理模块:实现班级信息的录入、查找、修改和删除操作。

4. 开发过程中的挑战和解决方案在开发学生管理系统的过程中,我们遇到了以下挑战:1.数据存储和管理:如何有效地存储和管理大量的学生信息、课程信息和成绩信息。

我们采用了链表的数据结构来组织数据,通过指针进行关联和操作,以提高数据的访问效率。

2.用户界面设计:如何设计一个简洁、直观的用户界面,方便用户进行操作。

我们借鉴了其他类似系统的设计思路,采用了命令行菜单和命令交互的方式来实现用户界面,简化了用户操作的复杂性。

C语言学生管理系统实验报告

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.用结构体指针完成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("\t \n");
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);
相关文档
最新文档