学生信息管理系统C语言设计

合集下载

c语言课程设计--学生信息管理系统

c语言课程设计--学生信息管理系统

目录1.摘要 (2)2.功能与数据分析 (3)2.1 功能分析 (3)2.2 数据分析 (3)3.总体设计 (4)4.模块介绍 (5)4.1 查询功能 (5)4.2 修改功能 (5)4.3 删除功能 (7)4. 输出功能 (7)5.编写与测试 (8)6.用法说明 (9)6.1 在vc环境下运行 (9)6.2 查询功能 (9)6.3 修改功能 (10)6.4 删除功能 (11)6.5 输出功能 (12)7.总结 (13)8.附录 (14)摘要学生信息管理系统的主要的目的在于便于老师掌握学生的信息,对学生的信息进行查询和添加,也有利于学生按各种不同的方式查询、修改自己的信息。

摆脱了曲折的路径,提高了学生相互了解、交流的效率。

便于老师、同学及时准确地获得需要的信息。

主要通过数组存放数据,应用循环和选择语句对数据实现录入和删除功能。

关键词:学生信息,链表,选择结构,循环结构2 功能分析2.1功能分析这是一个便于老师管理,便于学生查询学生信息的一个系统。

既然如此,系统必定少不了数据的输入和删除。

数据以文件的形式保存在文件中。

显示时,数据从文件中输入到显示器。

接受数据的是一个结构体链表。

查询功能的实现,把数据从文件中取出来。

查询可按学号查询和按姓名查询两种方法,按学号查询时,将输入的学号和文件中每个学生的学号比较,如果相等,显示该行的数据到显示器,即是要查找的内容。

然后关闭文件。

按姓名查询时,将输入的姓名和文件中每个学生的姓名比较,如果相等,显示该行的数据到显示器,即是要查找的内容。

然后关闭文件。

修改功能的实现,把数据从文件中取出来。

进入修改操作时,学生先找到自己的信息,然后选择修改项目:地址、电话或Email。

选择地址项,则输入新地址,把它赋给存储地址的变量。

选择电话项,则输入新电话,把它赋给存储电话的变量。

选择Email 项,则输入新Email,把它赋给存储Email的变量。

然后关闭文件。

删除功能的实现,需要首先打开文件,把文件里面的信息全部输入到结构体链表中。

学生信息管理系统c语言程序设计

学生信息管理系统c语言程序设计

学生信息管理系统c语言程序设计
一、主要思想。

(1)使用结构体数组来存储学生信息;
(2)创建查询、添加、修改、删除等操作函数来实现学生信息的管理;
(3)设置菜单,程序通过switch-case语句来识别用户输入,实现
不同的操作。

二、具体实现。

(1)定义一个学生信息的结构体,存储学号、姓名、年龄、性别等
信息;
(2)为学生信息管理系统添加菜单,当用户输入要求时,通过
switch语句来调用响应的函数;
(3)定义查询函数:用户可以根据学号、姓名或性别查询学生信息;
(4)定义添加函数:根据用户输入添加学生信息,需要排重处理;
(5)定义修改函数:根据学号查询到学生的信息后,用户可以修改
相应的内容;
(6)定义删除函数:根据学号查询学生信息后,用户可以删除学生
信息;
(7)定义退出系统函数:用户输入0,就可以退出学生信息管理系统。

c语言学生管理系统课程设计报告

c语言学生管理系统课程设计报告

C语言学生管理系统课程设计报告一、引言学生管理系统是一种用来管理学生信息的软件系统。

C语言学生管理系统课程设计旨在帮助学生掌握C语言的基本语法和编程能力,同时熟悉软件开发过程中的分析、设计和实现等环节。

本报告将详细介绍C语言学生管理系统的设计和实现过程。

二、需求分析为了明确系统的功能需求,在进行系统设计之前,我们需要进行需求分析。

对于一个学生管理系统,常见的功能包括学生信息录入、查找学生信息、修改学生信息和删除学生信息等。

2.1 学生信息录入学生信息录入是系统的基本功能之一。

管理员可以通过系统按照一定的格式输入学生的基本信息,包括学号、姓名、性别、年龄、班级等。

2.2 查找学生信息系统应提供根据学号或姓名快速查找学生信息的功能。

用户可以输入学号或姓名进行查询,并显示该学生的详细信息。

2.3 修改学生信息管理员可以通过系统修改学生的基本信息。

用户可以选择指定要修改的学生的学号,并对学生的姓名、班级、年龄等信息进行修改。

2.4 删除学生信息管理员可以通过系统删除指定学生的信息。

用户可以输入学号或姓名进行查询,并选择删除该学生的信息。

三、系统设计在需求分析的基础上,进行系统设计是为了明确系统的整体架构和各个模块之间的关系。

本章将对C语言学生管理系统的设计进行详细介绍。

3.1 系统架构C语言学生管理系统采用单层架构,将所有功能模块整合在一个程序中。

系统采用面向过程的设计思路,通过函数的调用和参数传递实现不同模块之间的交互。

3.2 数据结构设计系统的核心数据结构是学生信息结构体。

学生信息结构体包括学号、姓名、性别、年龄、班级等字段。

为了方便管理学生的信息,可以使用链表来存储学生信息。

链表的每个节点代表一个学生,通过指针连接起来形成一个链表。

3.3 模块设计系统的功能可以划分为若干个模块,包括学生信息录入模块、查找学生信息模块、修改学生信息模块和删除学生信息模块。

3.3.1 学生信息录入模块学生信息录入模块通过从键盘读取用户输入的信息,并将输入的信息保存到链表中。

学生管理系统c语言课程设计

学生管理系统c语言课程设计

学生管理系统c语言课程设计一、课程目标知识目标:1. 理解结构体在C语言中的应用,掌握学生管理系统中的数据结构设计。

2. 掌握文件操作在C语言中的实现,实现对学生的信息存储和读取。

3. 熟悉指针和数组在C语言中的应用,实现对大量学生数据的有效管理。

技能目标:1. 能够运用结构体、指针和文件操作编写一个简单的学生管理系统。

2. 学会分析实际问题,设计合适的算法和数据结构,解决学生管理中的查询、增加、删除和修改等问题。

3. 培养良好的编程习惯,编写规范、简洁、高效的代码。

情感态度价值观目标:1. 培养学生的团队协作意识,学会与他人共同解决问题。

2. 增强学生的自信心,敢于面对编程挑战,积极寻求解决问题的方法。

3. 激发学生的学习兴趣,认识到编程在实际生活中的广泛应用和价值。

本课程针对高年级学生,以C语言为基础,结合学生管理系统实际案例,注重培养学生的实际编程能力和解决问题的能力。

课程目标明确,可衡量,旨在帮助学生掌握C语言的核心知识,提高编程技能,同时培养学生的情感态度价值观,为后续学习奠定坚实基础。

二、教学内容1. 数据结构设计:- 结构体的定义和使用;- 结构体数组的创建和管理;- 指针在结构体中的应用。

2. 文件操作:- 文件的打开、读取、写入和关闭;- 文件存储结构设计;- 学生信息文件的读写操作。

3. 算法实现:- 学生信息管理系统的功能模块设计;- 查询、增加、删除和修改操作的实现;- 排序和筛选算法的应用。

4. 编程实践:- 设计学生管理系统界面;- 实现系统各功能模块;- 调试、优化和测试程序。

教学内容根据课程目标,结合教材相关章节进行组织。

课程涵盖数据结构、文件操作、算法实现和编程实践等方面,保证内容的科学性和系统性。

教学大纲明确教学内容安排和进度,以教材为基础,引导学生掌握C语言核心知识,提高实际编程能力。

三、教学方法本课程采用以下教学方法,旨在激发学生学习兴趣,提高教学效果:1. 讲授法:- 对课程中的基本概念、原理和知识点进行详细讲解,为学生奠定扎实的理论基础。

学生管理系统c语言简单版

学生管理系统c语言简单版

学生管理系统c语言简单版学生管理系统c语言简单版介绍:学生管理系统是一种用于管理学生信息的软件,它可以方便地对学生的基本信息、课程成绩等进行录入、查询、修改和删除等操作。

本文将介绍如何使用C语言编写一个简单的学生管理系统。

功能:1. 添加学生信息2. 查询学生信息3. 修改学生信息4. 删除学生信息5. 显示所有学生信息实现方法:1. 添加学生信息添加学生信息需要输入以下内容:姓名、性别、年龄、班级和电话号码。

我们可以定义一个结构体来存储这些信息,代码如下:```struct Student {char name[20];char sex[10];int age;char class[20];char phone[20];};```然后定义一个数组来存储多个学生的信息:```struct Student students[100];int count = 0; // 学生数量```接下来,我们可以编写一个函数来添加新的学生信息:```void addStudent() {struct Student student;printf("请输入姓名:");scanf("%s", );printf("请输入性别:");scanf("%s", student.sex);printf("请输入年龄:");scanf("%d", &student.age);printf("请输入班级:");scanf("%s", student.class);printf("请输入电话号码:");scanf("%s", student.phone);students[count++] = student; // 将新的学生信息存储到数组中 printf("添加成功!\n");}```2. 查询学生信息查询学生信息可以按照姓名或电话号码进行查询。

用C语言编写的一个学生信息管理系统

用C语言编写的一个学生信息管理系统

用C语言实现线性表的基本操作,能创建一个基于学生信息管理的链表,至少包含数据输入、数据输出、数据处理等操作。

在主函数里能实现以下功能。

运行后出现一个选择提示。

可选择的功能有1)创建新的学生信息链表2)增加一个新的学生信息3)按学号删除某个学生信息4)按学号查找某个学生信息5)可以按照学生成绩对链表排序6)退出系统#include "stdio.h"#include "stdlib.h"#include "string.h"#include "conio.h"jiemian();struct student{char name[50];char sex[5];int age;char num[50];float score1;float score2;float score3;float sum;float ave;}stu[50],del;void gn1(){int i=0;char num1;for(i=0;i<50;i++){printf("请输入要添加的学生资料:\n");printf("学号:");scanf("%s",stu[i].num);printf("姓名:");scanf("%s",stu[i].name);printf("性别:");scanf("%s",&stu[i].sex);printf("年龄:");scanf("%d",&stu[i].age);printf("请输入学生的三门成绩:\n");printf("语文:");scanf("%f",&stu[i].score1);printf("数学:");scanf("%f",&stu[i].score2);printf("英语:");scanf("%f",&stu[i].score3);printf("是否继续添加:y/n\n");scanf("%c",&num1);scanf("%c",&num1);if(num1=='N' || num1=='n'){system("cls");jiemian();}}}void gn2(){int i;char num[50];printf("请输入要查找的学生学号:\n");scanf("%s",num);for(i=0;i<50;i++)if(strcmp(stu[i].num,num)==0){stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);break;}if(i==50)printf("查找不到!请重新输入!\n");getch();system("cls");jiemian();}void gn3(){char num1,i=0;printf("请输入要修改的学生学号:\n");scanf("%s",stu[i].num);printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);printf("姓名:");scanf("%s",stu[i].name);printf("性别:");scanf("%s",stu[i].sex);printf("年龄:");scanf("%d",&stu[i].age);printf("请输入学生的三门成绩:\n");printf("语文:");scanf("%f",&stu[i].score1);printf("数学:");scanf("%f",&stu[i].score2);printf("英语:");scanf("%f",&stu[i].score3);printf("是否继续修改:y/n?\n");scanf("%c",&num1);scanf("%c",&num1);if(num1=='N' || num1=='n')system("cls");jiemian();}void gn4(){int i;char num[50];printf("请输入要删除的学生学号:\n");scanf("%s",num);for(i=0;i<50;i++)if(strcmp(num,stu[i].num)==0){printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);stu[i]=del;printf("信息已删除,按任意键返回..\n");break;}if(i==50)printf("您输入的信息不存在!\n");getch();system("cls");jiemian();}void gn5(){int i=0;stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("学号\t姓名\t性别\t年龄\t语文\t数学\t英语\t总成绩\t 平均成绩\n"); for(i=0;i<50;i++){if(stu[i].age==0)break;printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);}printf("按任意键返回...");getch();system("cls");jiemian();}void gn6(){FILE *fp;int i;char filename[50];printf("\n");printf("\n");printf("请输入要保存的文件名:");scanf("%s",filename);if((fp=fopen(filename,"wb"))==NULL)printf("文件名为空,不能保存!\n");for(i=0;i<50;i++){if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)printf("文件保存失败!\n");}fclose(fp);printf("文件已保存!\n");printf("按任意键返回...\n");getch();system("cls");jiemian();}void gn7(){FILE *fp;int i=0; //打开文件流char filename[50];printf("请输入文件名:");scanf("%s",filename); //输入要载入的文件名if((fp=fopen(filename,"rb"))==0) //如果当前目录下不存在相对应的文件,输出文件不存在,退出系统。

学生信息管理系统详细设计说明c语言

学生信息管理系统详细设计说明c语言

学生信息管理系统详细设计说明c语言如何设计一个学生信息管理系统。

一、需求分析学生信息管理系统是以管理学生信息为主要功能的软件系统。

在设计之前,我们需要了解用户的需求。

通过对用户需求的分析,我们得出以下功能模块:1、学生信息录入:录入学生信息,包括学号、姓名、性别、出生日期、班级等信息。

2、学生信息查询:根据学号、姓名等关键字进行学生信息的查询,支持模糊查询。

3、学生信息修改:可以修改学生的相关信息,包括学号、姓名、班级等。

4、学生信息删除:删除已经录入的学生信息。

5、学生成绩查询:根据学号查询该学生的相关成绩信息。

6、学生成绩录入:录入学生的相关成绩信息,包括语文、数学、英语等。

二、系统设计在需求分析的基础上,我们可以开始进行系统设计。

1、数据结构设计(1)学生信息结构体/* 学生信息结构体*/typedef struct {/* 学号*/char id[11];/* 姓名*/char name[21];/* 性别*/char sex[3];/* 出生日期*/char birthday[11];/* 班级*/char class[21];} Info;(2)学生成绩结构体/* 学生成绩结构体*/typedef struct {/* 学号*/char id[11];/* 语文成绩*/int chinese;/* 数学成绩*/int math;/* 英语成绩*/int english;} Score;2、功能模块设计(1)学生信息录入在学生信息录入模块中,我们需要设计一个函数来进行学生信息的录入。

void AddInfo(Info *info);该函数的参数是学生信息结构体的指针,通过该参数可以将学生信息录入到系统中。

在该函数中,我们需要进行如下操作:1、提示用户输入学生信息;2、从键盘获取用户输入;3、将用户输入保存到结构体中;4、将结构体保存到文件中。

(2)学生信息查询在学生信息查询模块中,我们需要设计一个函数来查询学生信息。

C语言--学生信息管理系统设计

C语言--学生信息管理系统设计

目录1.前言 (2)2.设计目的 (2)3.功能描述 (2)4.总体设计 (3)1、功能模块设计 (3)2、数据结构设计 (4)3、函数功能描述 (5)5.程序实现 (7)1、源程序(略) (7)2、运行结果 (7)6.小结 (10)1.前言在计算机技术和互联网飞速发展的今天,计算机成为了现代生活中一个重要的工具。

学生信息管理系统利用计算机对学生信息进行统一管理,为学校老师的工作提供便利。

本程序是利用结构数组实现此学生信息管理系统。

2.设计目的利用本课程设计的目的是要培养学生初步具有系统分析思想,并能利用开发工具开发一个简单实用的综合程序。

为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力,提高学生适应实际,实践编程的能力。

3.功能描述如图1所示,学生信息管理系统主要利用数组来实现,其数组元素是结构体类型,整个系统由如下几大功能模块组成。

图1 学生信息管理系统功能模块(1)输入记录模块。

输入记录模块主要完成将数据存入数组中的工作。

在此学生信息管理系统中,记录可以从以文本形式存储的数据文件中读入,也可从键盘逐个输入记录。

当从数据文件中读入记录时,它就是在以记录为单位存储的数据文件中,将记录逐条复制到结构体类型的数组元素中。

(2)查询记录模块。

查询记录模块主要完成在数组中查找满足相关条件的记录。

在此学生信息簿管理系统中,用户可以按照学生姓名或学生学号在数组中进行查找。

若找到该记录,则显示出此记录的信息;否则,显示出未找到该记录的提示信息。

(3)更新记录模块。

更新记录模块主要完成对记录的维护。

在此电话簿管理系统中,它实现对记录的修改、删除操作。

一般而言,系统进行了这些操作之后,需要将修改的数据存入源数据文件。

(4)输出记录模块。

输出记录模块主要完成两个任务。

第一,它实现对记录的存盘操作,即将数组中各元素中存储的记录信息写入数据文件中。

用c语言编写的一个学生信息管理系统

用c语言编写的一个学生信息管理系统

路漫漫其修远兮,吾将.上F而求索・百度文库用C语言实现线性表的基本操作,能创建一个基于学生信息管理的链表,至少包含数据输入、数据输出、数据处理等操作。

在主函数里能实现以下功能。

运行后出现一个选择提示。

可选择的功能有1)创建新的学生信息链表2)增加一个新的学生信息3)按学号删除某个学生信息4)按学号查找某个学生信息5)可以按照学生成绩对■链表排序6)退出系统#include "stdio.h"#include "stdlib.h"#include "string.h n#include ,,conio.h Hjiemian();struct student(char name[50];char sex[5];int age;char num[50];float scorel;float score2;float score3;float sum;float ave;}stu[50],del;void gnl()(int i=0;char numl;for(i=0;i<50;i++)(printf「请输入要添加的学生资料:\n“);printf(“学号巧;scanf("%s",stu[i].num);printf("姓名巧;scanf("%s",stu[i].name);printf(“性别巧;scanf("%s",&stu[i].sex);printf(“年龄巧;scanf("%d",&stu[i].age);11目上下而求索•百度文库printf(”请输入学生的三门成绩:'俏;printf("语文门;scanf(,,%f,,,&stu[i].scorel);printf(“数学门;scanf(,,%f,,,&stu[i].score2);printf("英语巧;scanf(,,%f,,,&stu[i].score3);printf("是否继续添加:y/n\n“); scanf(,,%c,,,&numl);scanf(,,%c,,,&numl);if(numl==,N, 11 numl=="n,){system(,,cls"); jiemian();)))void gn2()(int i;char num[50];printf「请输入要查找的学生学号:\n“);scanf(,,%s,,/num);for(i=0;i<50;i++)if(strcmp(stu[i].num,num)==O) (stu[i].sum=stu[i].scorel+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum^;printf(',%s\t%s\t%s\t%d\t%,2f\t%.2f\t%.2f\t%.2f\t%.2f:\n'l/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,s tu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);break;)if(i==50)printf("查找不到!请重新输入!\n");22路漫漫其修远兮,吾将上F而求索・百度文库getch(); systemf'cls"); jiemian();)void gn3()(char numlJ=0;printf("请输入要修改的学生学号:\n“);scanf(,,%s,,/stu[i].num);printf(,l%s\t%s\t%s\t%d\t%,2f\t%.2f\t%.2f\t%.2f\t%.2f:\n'l/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,s tu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);printf("姓名门;scanf(,,%s,,/stu[i].name);printf(“性别门;scanf(,,%s,,/stu[i].sex);printf("年龄门;scanf(,,%d,,,&stu[i].age);printf(“请输入学生的三门成绩:\n“);printf("语文门;scanf(,,%f,,,&stu[i].scorel);printf(“数学门;scanf(,,%f,,,&stu[i].score2);printf("英语门;scanf(,,%f,,,&stu[i].score3);printf("是否继续修改:y/n?\n“);scanf(,,%c"/&numl);scanf(,,%c,\&numl);if(numl==,N, 11 numl==,n,)systemf'cls"); jiemian();)void gn4()(int i;char num[50];printf("请输入要删除的学生学号:\n“);scanf(,,%s,,,num);for(i=0;i<50;i++) 33if(strcmp(num,stu[i].num)==O)(printf(,,%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n,,/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,stu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);stu[i]=del;printf("信息已删除,按任意键返回..\n“); break;)if(i==50)printf ("您输入的信息不存在!\n”);getch();system("cls"); jiemian();)void gn5()(int i=0;stu[i].sum=stu[i].scorel+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("学号\t姓名\t性别\t年龄\t语文\t数学\t英语\t总成绩\t平均成绩\n");for(i=0;i<50;i++)(if(stu[i].age==O)break;printf(,,%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n,,/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,stu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);)printf("按任意键返回.getch();system(,,cls n);jiemian();)void gn6()(FILE *fp;int i;char filename[50];printf(,,\n N); 44路漫漫其修远兮,吾将上F而求索・百度文库printf(,,\n M);printf(“请输入要保存的文件名:");scanf(”%s”,filename);if((fp=fopen(filename/,wb,,))==NULL)printf("文件名为空,不能保存!\n");for(i=0;i<50;i++)(if(fwrite(&stu[i],sizeof(struct student),l,fp)!=l) printf("文件保存失败!\n”);)fclose(fp);printf (“文件己保存!\n“);printf。

c语言课程设计学生信息管理系统

c语言课程设计学生信息管理系统

2>N-S流程图三、详细设计说明:1>头文件#include <stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>2>数入口说明main();主函数;void menu();主菜单界面;void add();添加新的学生信息;void print(int i);打印学生信息;void scan();查找学生信息;void res();检索学生信息界面;void res_name();按姓名检索;void res_num();按学号检索;void del(int i);删除学生信息;void modify(int i);修改学生信息;void fileopen();打开文件;void filesave();保存文件;2>调用关系4.调试与测试: 编译工具1.C/C++程序设计学习与实验系统2.Tcmain() filesave()res()res_num()res_name()modify(int i)del(int i)menu()3.VC++6.0均通过调试!主菜单添加新的学生信息浏览所有学生信息检索信息库继续查找下一条修改学生信息删除信息库所有记录五、调试中所遇到的问题及解决方法1>问题:程序退出后,再次打开,上次输入的数据无法保存。

解决:调用fileopen()与filesave()保存文件数据,方便第二次打开程序时仍能调用上次输入的数据。

2>问题:跳出的界面与选择分支中的对应项不符合。

解决:改getchar()为getch(),头文件中加”conio.h”.因为getchar()从输入输出流中一次只能读取一个字符,而且需要以回车来确认输入。

本文件中多次用到getchar(),键盘缓冲区的’\n’会被下次调用getchar()时接收。

而getch()则不会,从键盘上读入一个数据,不给回显,不需要回车确认,按下键就实现了函数。

c语言课程设计学生管理系统

c语言课程设计学生管理系统

c语言课程设计学生管理系统一、教学目标本课程的目标是让学生掌握C语言编程的基本技能,通过实现一个学生管理系统,让学生了解和掌握面向对象编程的思想和方法,培养学生的编程能力和问题解决能力。

具体目标如下:1.知识目标:使学生掌握C语言的基本语法、数据结构、算法和面向对象编程思想。

2.技能目标:使学生能够使用C语言独立编写和调试程序,具备基本的软件开发能力。

3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,增强学生的自主学习意识和团队合作精神。

二、教学内容教学内容以C语言编程为核心,主要包括以下几个部分:1.C语言基础:介绍C语言的基本语法、数据类型、运算符、控制结构等。

2.数据结构:讲解常用的数据结构,如数组、链表、栈和队列等,以及如何在C语言中实现和应用。

3.算法:介绍基本的算法思想和实现方法,如排序、查找等。

4.面向对象编程:讲解面向对象编程的基本概念,如类、对象、封装、继承和多态等,以及如何在C语言中实现面向对象编程。

5.学生管理系统实现:以学生管理系统为案例,引导学生运用所学知识解决实际问题。

三、教学方法为了提高教学效果,将采用多种教学方法相结合的方式进行教学:1.讲授法:讲解C语言的基本语法、数据结构、算法和面向对象编程思想。

2.案例分析法:通过分析学生管理系统的实现,使学生理解和掌握面向对象编程的思想和方法。

3.实验法:安排实验室实践环节,让学生动手编写代码,培养学生的实际编程能力。

4.讨论法:学生进行小组讨论,分享学习心得和解决问题的方法,提高学生的团队合作能力。

四、教学资源为了支持教学内容和教学方法的实施,将准备以下教学资源:1.教材:《C程序设计原理与应用》。

2.参考书:《C语言程序设计》。

3.多媒体资料:制作课件和教学视频,以便于学生复习和自学。

4.实验设备:为学生提供计算机实验室,让学生能够进行实际编程练习。

五、教学评估为了全面、客观地评估学生的学习成果,将采用多种评估方式相结合的方法:1.平时表现:评估学生在课堂上的参与程度、提问和回答问题的积极性等,占总评的20%。

c语言课程设计学生信息管理系统

c语言课程设计学生信息管理系统

c语言课程设计学生信息管理系统一、教学目标本课程旨在通过学习C语言,使学生掌握学生信息管理系统的基本概念、设计方法和实现技巧。

具体目标如下:1.知识目标:学生应掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识。

学生应了解学生信息管理系统的需求分析、系统设计、编码实现、测试等基本过程。

2.技能目标:学生能够运用C语言编写简单的程序,解决实际问题。

学生能够独立完成学生信息管理系统的设计和实现。

3.情感态度价值观目标:学生应培养对计算机科学的兴趣和热情,形成良好的学习习惯和团队合作精神。

学生应理解编程不仅仅是一种技能,更是一种思考问题和解决问题的方式。

二、教学内容本课程的教学内容主要包括C语言的基本语法和编程方法,以及学生信息管理系统的设计和实现。

具体安排如下:1.C语言基本语法:数据类型、运算符、控制结构、函数等。

2.学生信息管理系统需求分析:系统功能、数据结构、界面设计等。

3.学生信息管理系统设计:模块划分、算法实现、接口设计等。

4.学生信息管理系统实现:编码、调试、测试等。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解C语言的基本语法和概念,学生信息管理系统的需求分析和设计方法。

2.案例分析法:分析实际案例,引导学生运用C语言解决实际问题。

3.实验法:学生动手编写代码,实现学生信息管理系统。

4.讨论法:分组讨论,促进学生之间的交流与合作。

四、教学资源本课程所需教学资源包括:1.教材:《C语言程序设计》等相关教材。

2.参考书:提供给学生额外的学习资料,以加深对C语言和编程的理解。

3.多媒体资料:PPT、视频教程等,用于辅助讲解和演示。

4.实验设备:计算机、编程环境等,用于学生动手实践。

五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的学习态度和积极性。

2.作业:布置适量的作业,评估学生的编程能力和对知识的理解程度。

c学生信息管理系统课程设计

c学生信息管理系统课程设计

c 学生信息管理系统课程设计一、教学目标本课程的教学目标是使学生掌握学生信息管理系统的基本概念、原理和应用,培养学生运用编程语言进行实际项目开发的能力。

具体分为以下三个部分:1.知识目标:(1)了解学生信息管理系统的起源、发展及其在我国的应用现状。

(2)掌握学生信息管理系统的基本功能和模块划分。

(3)熟悉常见编程语言及其在学生信息管理系统开发中的应用。

2.技能目标:(1)能够使用至少一种编程语言进行学生信息管理系统的开发。

(2)具备数据库设计和管理的的基本能力,能够实现学生信息的增删改查操作。

(3)掌握学生信息管理系统的测试和调试方法,保证系统的稳定运行。

3.情感态度价值观目标:(1)培养学生对信息技术应用的兴趣,提高学生运用信息技术解决实际问题的意识。

(2)培养学生团队合作精神,增强学生解决复杂问题的信心。

二、教学内容本课程的教学内容主要包括以下几个部分:1.学生信息管理系统的基本概念和原理:介绍学生信息管理系统的发展历程、基本功能和模块划分。

2.编程语言及数据库知识:学习至少一种编程语言,掌握数据库的设计和管理方法。

3.学生信息管理系统的开发实践:以实际项目为载体,引导学生完成学生信息管理系统的开发。

4.系统测试与调试:学习学生信息管理系统的测试和调试方法,确保系统的稳定运行。

三、教学方法为了达到本课程的教学目标,我们将采用以下教学方法:1.讲授法:讲解学生信息管理系统的基本概念、原理和应用。

2.案例分析法:分析实际项目案例,使学生更好地理解学生信息管理系统的开发过程。

3.实验法:引导学生动手实践,完成学生信息管理系统的开发和调试。

4.讨论法:学生进行分组讨论,培养学生的团队合作精神和解决问题的能力。

四、教学资源为了支持本课程的教学内容和教学方法,我们将准备以下教学资源:1.教材:选择权威、实用的教材,为学生提供系统的学习资料。

2.参考书:提供相关领域的参考书籍,丰富学生的知识体系。

3.多媒体资料:制作精美的PPT、视频等多媒体资料,提高学生的学习兴趣。

用C语言编写学生信息管理系统

用C语言编写学生信息管理系统

用C语言编写学生信息管理系统Design Purpose:Design Content:1. Problem n:Design a student n management system that includes student n such as student ID, name, age, gender, date of birth, address, phone number, and email.2. nal Requirements:1. The system works in menu mode.2. Student n entry n (student n is saved in a file) - input.3. Student n browsing n - output.4. Student n query n - algorithm according to student ID query and name query.Detailed Design:1. Menu: void menu() {}2. Establish n: void readfile() {}3. Search: void seek() {}4. Modify n: void modify() {}5. Insert n: void insert() {}6. Delete n:void del(){}7. Browse n:void display(){}8. Save:void save(){Debugging and Testing:1. System nal menu.2. Select the menu "", enter the system help and ns n.3. Select menu "4" to add student n. (1) Input the number of people to be added. (2) Enter the student ID, name, age, gender, date of birth, address, phone number, and email in order. After input, the menu pops up.#include#include#include#define BUFLEN 100 #define LEN 15struct record{char code[LEN+1]; char name[LEN+1]; int age;char sex[3];char time[LEN+1];char add[30];char tel[LEN+1];char mail[30];void readfile();void seek();void modify();void modify() {int i, item, num;char sex1[3], s1[LEN+1], s2[LEN+1];printf("请输入要修改的学生的学号:\n"); scanf("%s", s1);for (i = 0; i < n; i++) {if (strcmp(stu[i].code, s1) == 0) {num = i;}}printf("------------------\n");printf("1.修改姓名\n");printf("2.修改年龄\n");printf("3.修改性别\n");printf("4.修改出生年月\n");printf("5.修改地址\n");printf("6.修改电话号码\n");printf("7.修改E-mail地址\n");printf("8.退出本菜单\n");printf("------------------\n");while (1) {printf("请选择子菜单编号:");scanf("%d", &item);switch (item) {case 1:printf("请输入新的姓名:\n"); scanf("%s", s2);strcpy(stu[num].name, s2);break;case 2:printf("请输入新的年龄:\n");scanf("%d", &stu[num].age);break;case 3:printf("请输入新的性别:\n");scanf("%s", sex1);strcpy(stu[num].sex, sex1);break;case 4:printf("请输入新的出生年月:\n"); scanf("%s", s2);strcpy(stu[num].time, s2);break;case 5:printf("请输入新的地址:\n");scanf("%s", s2);strcpy(stu[num].add, s2);break;case 6:printf("请输入新的电话号码:\n");scanf("%s", s2);strcpy(stu[num].phone, s2);break;case 7:printf("请输入新的E-mail地址:\n");scanf("%s", s2);strcpy(stu[num].email, s2);break;case 8:return;default:printf("输入有误,请重新选择子菜单编号\n"); break;}}void input(){int i;char s[10];printf("请输入学生人数:\n"); scanf("%d",&n);for(i=0;i<n;i++){printf("请输入学号:\n");scanf("%s",stu[i].code);printf("请输入姓名:\n");scanf("%s",stu[i].name);printf("请输入性别:\n");scanf("%s",stu[i].sex);printf("请输入年龄:\n");scanf("%d",&stu[i].age);printf("请输入出生日期:\n"); scanf("%s",stu[i].time);printf("请输入家庭住址:\n"); scanf("%s",stu[i].add);printf("请输入电话号码:\n");scanf("%s",stu[i].tel);printf("请输入E-mail地址:\n");scanf("%s",stu[i].mail);}void modify(){int num,choice;char s2[10];printf("请输入要修改信息的学生的学号:\n");scanf("%s",s2);for(num=0;num<n;num++){if(strcmp(stu[num].code,s2)==0){printf("请选择要修改的信息:\n");printf("1.学号 2.姓名 3.性别 4.年龄 5.出生日期\n");printf("6.家庭住址 7.电话号码 8.E-mail地址 9.退出\n");scanf("%d",&choice);switch(choice){case 1:printf("请输入新的学号:\n"); scanf("%s",s2);strcpy(stu[num].code,s2);break;case 2:printf("请输入新的姓名:\n"); scanf("%s",s2);strcpy(stu[num].name,s2);break;case 3:printf("请输入新的性别:\n"); scanf("%s",s2);strcpy(stu[num].sex,s2);break;case 4:printf("请输入新的年龄:\n");scanf("%d",&stu[num].age);break;case 5:printf("请输入新的出生日期:\n"); scanf("%s",s2);strcpy(stu[num].time,s2);break;case 6:printf("请输入新的家庭住址:\n"); scanf("%s",s2);strcpy(stu[num].add,s2);break;case 7:printf("请输入新的电话号码:\n"); scanf("%s",s2);strcpy(stu[num].tel,s2);break;case 8:printf("请输入新的E-mail地址:\n"); scanf("%s",s2);strcpy(stu[num].mail,s2);break;case 9:return;default:printf("请在1-8之间选择\n"); }}}void sort(){int i,j,*p,*q,s;char temp[10];for(i=0;i<n-1;i++){for(j=n-1;j>i;j--){if(strcmp(stu[j-1].code,stu[j].code)>0){strcpy(temp,stu[j-1].code);strcpy(stu[j-1].code,stu[j].code); strcpy(stu[j].code,temp);strcpy(temp,stu[j-1].name);strcpy(stu[j-1].name,stu[j].name); strcpy(stu[j].name,temp);strcpy(temp,stu[j-1].sex);strcpy(stu[j-1].sex,stu[j].sex);strcpy(stu[j].sex,temp);strcpy(temp,stu[j-1].time);strcpy(stu[j-1].time,stu[j].time); strcpy(stu[j].time,temp);strcpy(temp,stu[j-1].add);strcpy(stu[j-1].add,stu[j].add);strcpy(stu[j].add,temp);strcpy(temp,stu[j-1].tel);strcpy(stu[j-1].tel,stu[j].tel);strcpy(stu[j].tel,temp);strcpy(temp,stu[j-1].mail);strcpy(stu[j-1].mail,stu[j].mail);strcpy(stu[j].mail,temp);p=&stu[j-1].age;q=&stu[j].age;s=*q;*q=*p;*p=s;}}}}void insert() {int i = n, j, flag;printf("请输入待增加的学生数:\n");scanf("%d", &m);do {flag = 1;while (flag) {flag = 0;printf("请输入第%d个学生的学号:\n", i + 1);scanf("%s", stu[i].code);for (j = 0; j < i; j++) {if (strcmp(stu[i].code, stu[j].code) == 0) {printf("已有该学号,请检查后重新录入!\n");flag = 1;break;}}}printf("请输入第%d个学生的姓名:\n", i + 1);scanf("%s", stu[i].name);printf("请输入第%d个学生的年龄:\n", i + 1);scanf("%d", &stu[i].age);printf("请输入第%d个学生的性别:\n", i + 1);scanf("%s", stu[i].sex);printf("请输入第%d个学生的出生年月:(格式:年.月)\n", i + 1);scanf("%s", stu[i].time);printf("请输入第%d个学生的地址:\n", i + 1);scanf("%s", stu[i].add);printf("请输入第%d个学生的电话:\n", i + 1); scanf("%s", stu[i].tel);printf("请输入第%d个学生的E-mail:\n", i + 1); scanf("%s", stu[i].mail);if (flag == 0) {i++;}} while (i < n + m);n += m;printf("录入完毕!\n\n");sort();void del() {int i, j, flag = 0;char s1[LEN + 1];printf("请输入要删除学生的学号:\n");scanf("%s", s1);for (i = 0; i < n; i++) {if (strcmp(stu[i].code, s1) == 0) {flag = 1;for (j = i; j < n - 1; j++) {stu[j] = stu[j + 1];}n--;printf("删除成功!\n\n"); break;}}if (flag == 0) {printf("未找到该学号!\n\n"); }。

设计一个C语言课程的学生信息管理系统

设计一个C语言课程的学生信息管理系统

1. 设计一个C语言课程的学生信息管理系统在计算机编程领域,学生信息管理系统是一种常见且重要的工具。

针对C语言课程,设计一个学生信息管理系统可以使教师和学生更有效地管理和跟踪课程进展。

本文将基于这一需求,介绍一个设计方案,并讨论其实现和应用。

1.1 系统需求分析设计学生信息管理系统的首要步骤是确定系统的需求。

在C语言课程中,我们通常需要管理学生的基本信息(例如尊称、学号、通信方式等),以及他们的课程成绩、作业提交情况等。

针对这些需求,我们可以将学生信息管理系统的功能分为以下几个方面:1.学生信息录入:教师或管理员可以将学生的基本信息录入系统,包括尊称、学号、通信方式等。

2.成绩管理:系统可以记录和管理学生的课程成绩,并提供查询和统计功能。

3.作业管理:学生可以通过系统提交作业,教师可以查看和评分。

4.考勤管理:记录学生的出勤情况,方便教师管理课堂纪律。

1.2 系统设计与实现1.2.1 数据结构设计为了有效地管理学生信息,我们需要设计合适的数据结构。

在C语言中,可以使用结构体来表示学生的信息,其中包括尊称、学号、通信方式等字段。

为了便于管理多个学生,可以使用链表或数组来组织学生信息。

typedef struct Student {char name[50];int studentId;char contact[50];float grade;struct Student* next;} Student;在上述代码中,我们定义了一个Student结构体,包含了学生的尊称、学号、通信方式、课程成绩以及一个指向下一个学生的指针。

1.2.2 功能实现为了实现学生信息管理系统的各个功能,我们需要编写相应的函数。

下面是几个基本功能的示例代码:1.2.2.1 学生信息录入Student* createStudent(char name[50], int studentId, char contact[50]) { // 创建一个新的学生结构体Student* student = (Student*)malloc(sizeof(Student));// 设置学生的基本信息strcpy(student->name, name);student->studentId = studentId;strcpy(student->contact, contact);student->grade = 0.0;student->next = NULL;return student;}void addStudent(Student** head, Student* newStudent) {if (*head == NULL) {// 如果链表为空,则直接将新学生作为头节点*head = newStudent;} else {// 找到链表的尾节点,并将新学生添加到末尾Student* current = *head;while (current->next != NULL) {current = current->next;}current->next = newStudent;}}void inputStudentInformation(Student** head) {char name[50], contact[50];int studentId;printf("请输入学生尊称:");scanf("%s", name);printf("请输入学生学号:");scanf("%d", &studentId);printf("请输入学生通信方式:");scanf("%s", contact);// 创建新的学生信息Student* newStudent = createStudent(name, studentId, contact);// 将学生信息添加到链表addStudent(head, newStudent);printf("学生信息录入成功!\n");}在上述代码中,我们首先定义了一个createStudent函数,用于创建一个新的学生结构体并初始化其基本信息。

学生信息管理系统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语言课程设计学生信息管理系统.一、教学目标本课程的教学目标是使学生掌握C语言编程的基本方法,能够运用C语言设计学生信息管理系统。

通过本课程的学习,学生将能够理解C语言的基本语法、数据类型、运算符、控制结构等知识,掌握函数、数组、指针等高级概念,并能够运用这些知识设计、编写和调试C语言程序。

此外,学生还将通过课程学习,培养编程思维、解决问题的能力和团队合作精神。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数、数组、指针等知识。

在学习过程中,我们将以教材为基础,结合实际案例,引导学生掌握C语言编程的基本方法。

具体内容包括:1.C语言的基本语法和规则;2.数据类型、变量和常量;3.运算符和表达式;4.控制结构:条件语句、循环语句;5.函数的定义和调用;6.数组和指针的应用;7.学生信息管理系统的需求分析和设计。

三、教学方法为了提高学生的学习兴趣和主动性,我们将采用多种教学方法进行教学。

具体包括:1.讲授法:讲解C语言的基本语法、数据类型、运算符、控制结构等知识,为学生提供清晰的学习思路;2.案例分析法:通过分析实际案例,让学生了解和掌握C语言编程的方法和技巧;3.实验法:安排实验室实践环节,让学生动手编写C语言程序,提高编程能力;4.讨论法:学生进行分组讨论,培养团队合作精神和解决问题的能力。

四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的C语言教材,为学生提供系统、全面的学习资料;2.参考书:提供相关的C语言编程参考书籍,丰富学生的知识储备;3.多媒体资料:制作课件、教学视频等多媒体资料,提高课堂教学效果;4.实验设备:保障实验室硬件设施齐全,为学生提供良好的编程实践环境。

五、教学评估本课程的教学评估将采取多元化、全过程的方式进行,以全面、客观、公正地评估学生的学习成果。

评估方式包括:1.平时表现:通过课堂参与、提问、回答问题等方式,评估学生的学习态度和课堂表现;2.作业:布置适量的作业,评估学生的知识掌握和编程能力;3.实验报告:评估学生在实验室实践环节的表现和实验报告的质量;4.考试成绩:通过期末考试,评估学生的综合编程能力和知识掌握情况。

C语言上机实验报告--学生信息管理系统设计__内附源代码

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.删除学生信息运行界面六、感想在本次实验的过程中,出现了各种各样的问题。

C语言课程设计——学生信息管理系统

C语言课程设计——学生信息管理系统

目录摘要 (1)1.引言 (2)2.设计论述 (2)2.1系统功能 (2)2.2系统各模块及功能 (2)2.3功能模块流程图 (3)2.4目标程序 (8)3. 总结 (22)3.1C语言编程中遇到的问题 (22)3.2经验总结 (24)参考文献 (25)学生信息管理系统(德州学院计算机系,山东德州 253023)摘要:学生管理系统是为了方便管理学生信息而编写的一个系统。

此系统分别用不同的数组存储学生的学号,姓名,性别,出生年月,家庭地址,电话,邮箱地址信息;并用一个整形变量来存储学生的年龄。

本系统可以批量的输入学生信息并将学生信息下的student.txt文件中。

本系统主要有以下功能:1.依次录入多名学生的信息。

2.查询学生信息。

可以实现分别按学学号和按学生姓名查询学生信息。

3.修改学生信息。

可以实现修改指定学生的各项信息。

4.增加学生信息。

可以在已有的学生信息的基础上增加新的学生信息。

5.按学号删除学生信息。

可以按指定学号删除指定学生的信息。

6.显示当前信息。

可以显示当前已有的全部的学生信息。

7.保存当前信息。

可以将输入的信息保存在系统默认的D盘下student.txt文件中。

关键词:学生信息管理;学生信息查询;保存信息。

1.引言随着我国教育产业化的飞速发展,社会对教育水平和教学管理软硬件的要求日益提高,尤其是对一个学校能够具有一整套完善的学生信息管理软件提出了更多的要求。

为了适应这种形式,教育系统尤其是大学不仅首先要有坚实的硬件基础,还要有一整套完善的学生信息管理软件管理系统。

而要实现这一功能,就要求学校管理者配备一套高效的学生信息管理系统,以便在学校内实施良好的一整套完善的管理且以最快地速度响应学校相关部门管理学生信息的需求,为他们提供一个高效、便捷的环境。

学生信息管理系统是校园网络中一个重要的应用系统,它大大改善了学校教学、科研与管理的基础环境,在一定程度上反映出学校管理现代化的水平。

随着国家对于教育的重视逐渐加大,学校正向着大型化、规模化发展,而对于大中型学校,跟学生信息管理有关的信息随之急剧增加。

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

二○一一~二○一二学年第二学期电子与信息工程系课程设计报告书课程名称:程序设计基础实践班级:通信1112班学号:***********名:**指导教师:***二○一二年二月1.题目《学生成绩管理系统》的设计与实现2.要求(1)整个系统均用C语言实现;(2)利用指针、链表来实现学生成绩的数据结构设计;(3)系统具有录入、显示、查询、修改、删除、排序、插入、保存、装载、帮助基本功能;(4)系统的各个功能模块都用函数的形式来实现;(5)可以将学生成绩信息保存在文件中。

(6)可以将学生信息从文件中读取出来。

3.功能(1)每一条记录包括一个学生的学号、姓名、3门成绩、总成绩。

(2)输入功能:可以一次完成无数条记录的输入。

(3)显示功能:完成全部学生记录的显示。

(4)查询功能:完成按学号查找学生记录,并显示。

(5)删除功能:完成按学号删除学生信息。

(6)排序功能:按学生总成绩进行排序。

(7)插入功能:按总成绩高低插入一条学生记录。

(8)保存功能:将学生记录保存在任何自定义的文件中,如保存在:c:\score。

(9)装载取功能:将保存在文件中的学生记录读取出来。

(10)简单的帮助功能以及菜单4.内容设计系统设计了多个函数来完成各个不同的功能,同一个功能也可能由不同的函数来共同完成。

下面将对各个函数逐一进行说明:首先定义了结构体类型如下:typedef struct student{int num; //学号char name[20]; //姓名int score[3]; //三科成绩int sum; //三科总分int index; //为方便排序而设置的变量struct student *next;//指针域}STUDENT;4.1主函数void main()利用无限次循环while()和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。

4.2菜单选择函数void menu()这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的各大功能,根据每个功能前面的序号进行选择,中间还显示系统当前的时间。

等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!4.3帮主函数void help()这是一个无参函数,提供了本系统的相关信息以及在使用本系统时的一些相关的注意事项。

4.4输入记录函数STUDENT *creat()这是一个无参函数,用来执行学生成绩记录的输入,当学号为0时停止输入,函数结束后,带回一个指向链表头的指针head。

算法:先声明一个首节点head,并将headt设为NULL。

每输入一个数据就声明一个新节点p,并且链接到之前列表的。

4.5 数据显示函数void print(STUDENT *head)这是一个不返回值的有参函数,形参为“链表头的指针”,负责对全部学生成绩记录的输出,不足之处就是不能对学生成绩进行分页显示。

算法:先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。

然后再将p结点的指针指向p指针的的指针(即下一结点),将p结点(即第一结点)的数据输出。

重复执行此步聚直到p指针指向NULL为止。

N-S4.6 信息查询,由findnum(),search()连个函数组成4.6.1 查找函数STUDENT *findnum(int num,STUDENT *head)根据输入的学号来查找结点,并返回该结点的首地址。

利用while循环并且用if判断是否p->num==num,如果是则返回该结点首地址,否则执行p=p->next。

若找不到该信息则返回NULL。

4.6.2 查找并显示信息函数void search(STUDENT *head)4.7 信息修改函数void setnum(int num,STUDENT *head)本函数需要调用findnum()函数。

先根据学号找到该结点,再让用户完整的输入修改后的信息。

并执行p->num=num;strcpy(p->name,name);p->score[0]=score1;p->score[1]=score2;p->score[2]=score3;这些赋值语句对该学号的学生信息进行修改。

4.8删除函数STUDENT *delete(int num,STUDENT *head)4.9 排序操作由findiindex,length(),rewindindex();setindex()sort()共同完成。

4.9.1 查找函数STUDENT *findindex(int index,STUDENT*head)按index 查找结点。

N-S 图如下:4.9.2 计算长度的函数int length(STUDENT *head)先设一个计数变量s ,给他赋初值0.再利用for(p=head;p!=NULL;p=p->nexrt) s++,计 算链表的长度。

结果返回s 的值。

4.9.3 index “洗牌”函数void rewindindex(STUDENT *head)首先定义一个变量i ,使它的初值为1,然后利用循环for(p=head;p;p=p->next) s++来实现变量index 的“洗牌”。

4.9.4信息修改函数void setindex(int index,STUDENT*head,int num,char *name,int score1,int score2,int score3)这个函数是专门为下面的冒泡排序而设置的,它的参数较多。

先根据index 来找到以head为头结点的链表中的相关信息。

然后利用赋值语句以对信息进行修改。

需要调用前面的findindex ()函数。

4.9.5 排序函数STUDENT *sort(STUDENT *head)本函数利用冒泡排序法对链表信息进行排序。

4.10 插入函数STUDENT *insert(STUDENT *head,STUDENT *new)这是一个有参函数,形参有两个,一个是“链表头的指针”,一个是“待插入指针”,按照原来成绩总分的高低进行插入,插入后会重新进行排序,并返回头指针。

算法:插入一个新生的结点,要求按总分的高低顺序插入。

先用指针变量p0指向待插入的结点,p1指向第一个结点。

如果p0->average<p1->average,则待插入的结点不应插在p1所指的结点之前。

此时将p1后移,并使p2指向刚才p1所指的结点。

重复以上的步骤,直到p0->average>=p1->average为止。

这时将p0指向的结点插到p1所指结点之前。

但是如果p1所指的已是表尾结点,则p1就不应后移了。

如果p0->sum比所有结点的sum都小,则应将p0所指的结点插到链表末尾。

如果插入的位置既不在第一个结点之前,又不在表尾结点之后,则将p0的值赋给p2->next,使p2->next指向待插入的结点,然后将p1的值赋给p0->next,使得p0->next指向p1指向的变量。

如果插入位置为第一个结点之前,则将p0赋给head,将p1赋给p0->next。

如果要插到表尾之后,应将p0赋给p1->next,NULL赋给p0->next。

最后再调用排序的函数,将学生成绩重新排序.4.11 保存数据函数void save(STUDENT *head)这是一个不返回值的有参函数,形参为“链表头的指针”,可以把学生记录保存在电脑上由自己任意命名的二进制文件。

N-S流程图如下:4.12 数据装载函数STUDENT *load()这是一个无参函数,将从文件读取的数据保存在新建立的链表中,返回新创建的链表的头首地址。

N-S流程图如下5.调试分析1.系统存在的一些不足之处:(1)在信息录入时,必须以0学号作为结束标志才能创建成功;(2)信息修改时,先输入学号查找结点,然后必须重新输入完整的信息才能修改成功;(3)不能区分不同学号的学生信息;(4)界面的显示还存在一些问题。

2.刚开始执行输入函数,按学号顺序输入十个学生的成绩,输完后执行显示功能,学生成绩记录是按学号的反顺序显示的,试着在其中增加一些语句,希望能把学号按正常顺序显示,但暂时没有成功,所以在输入成绩时只能按学号反顺序输入,最后就按学号正常顺序输出了。

3输入太多个学生的成绩时,屏幕显示不能控制为一页一页显示,所以为了方便起见,不要输入太多记录。

4.一开始输入的姓名过长时会使显示内容显得不整齐,将输入数函数部分的姓名输入长度改为20后就整齐了。

5.在使用第八或者第九项功能时,必须输入完整的文件名,包括文件路径以及文件的扩展名都要书写正确方可操作成功,否则无法打开文件并自动退回系统。

6.总结本程序是使用链表设计的,整整花了将近两个星期,很有成就感!一开始由于对链表还不是特别熟悉,就又去查阅了一些其他资料,比如谭浩强的《C程序设计》以及严蔚敏的《数据结构》,感觉收获不少,又学到了一些新东西。

这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C语言的重要性。

这个学生成绩管理系统都是在自己知识范围内完成的,显得不是很成熟,但是还是挺实用的!由于这是第一次进行设计,写文档,难免会写得不好!以后有机会的话我想进一步学习C语言!附录:源代码#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>//******************结构体类型定义***********************typedef struct student{int num; //学号char name[20]; //姓名int score[3]; //三科成绩int sum; //三科总分int index; //为方便排序而设置的变量struct student *next;//指针域}STUDENT;//创建链表,无参函数,结果返回链表头结点指针STUDENT *creat(){STUDENT *p,*head;int i=0,j;//计数器变量head=NULL;p=(STUDENT*)malloc(sizeof(STUDENT));scanf("%d%s",&p->num,p->name);p->sum=0;p->index=i;for(j=0;j<3;j++){scanf("%d",&p->score[j]);p->sum+=p->score[j];}while(p->num!=0){p->next=head;head=p;p=(STUDENT*)malloc(sizeof(STUDENT));scanf("%d%s",&p->num,p->name);p->sum=0;p->index=(++i);for(j=0;j<3;j++){scanf("%d",&p->score[j]);p->sum+=p->score[j];}}//while控制信息录入,以0学号结束printf("创建成功!\n");free(p);return(head);}//显示学生信息,打印函数,空类型void print(STUDENT *head){STUDENT *p=head;int i;if(head==NULL)printf("空信息!");else{printf(" 学号姓名汉语高数");printf(" 英语总分\n");//提示信息do{printf("%10d%10s",p->num,p->name);for(i=0;i<3;i++) printf("%10d",p->score[i]);printf("%10d\n",p->sum);p=p->next;}while(p!=NULL);}}//print()//**********信息查询函数,由findnum()和search()组成********STUDENT *findnum(int num,STUDENT *head) //按学号查找结点,返//回查找到的结点地址,失败则返回空{ STUDENT *p=head;while(p!=NULL){if(p->num==num)return p;p=p->next;}return NULL;}void search(STUDENT *head) //按节点查找并显示信息{ int i,num;STUDENT *p;printf("输入学号:\n");scanf("%d",&num);if((p=findnum(num,head))==NULL)printf("不存在该信息!\n");else{printf(" 学号姓名汉语高数");printf(" 英语总分\n");//提示信息printf("%10d%10s",p->num,p->name);for(i=0;i<3;i++) printf("%10d",p->score[i]);printf("%10d\n",p->sum);}}//**********信息修改,找到要修改的学生信息,并作修改**********void setnum(int num,STUDENT *head){ STUDENT *p;char name[20];int score1,score2,score3;if((p=findnum(num,head))==NULL)printf("不存在该信息\n");else{printf("输入修改后的完整信息:\n");scanf("%d%s",&num,name);scanf("%d%d%d",&score1,&score2,&score3);p->num=num;strcpy(p->name,name);p->score[0]=score1;p->score[1]=score2;p->score[2]=score3;p->sum=score1+score2+score3;}}//*************删除学生信息,释放该节点,返回头节点********** STUDENT *delete(int num,STUDENT *head){ STUDENT *p,*pre;if(head==NULL) printf("空信息!\n");else{for(p=head;num!=p->num&&p!=NULL;pre=p,p=p->next);if(num==p->num){ if(p==head) head=p->next;elsepre->next=p->next;printf("删除成功!\n");free(p);}else printf("不存在该信息!\n");return head;}return NULL;}//*****排序操作,由findindex()length()rewindindex()***** //*****************setindex()sort()组成***************** void rewindindex(STUDENT *head)//将链表中的index按链表顺序标号{ int i=0;STUDENT *p;for(p=head;p!=NULL;p=p->next){p->index=i;i++;}}int length(STUDENT *head)//计算链表长度{ int s=0;STUDENT *p;for(p=head;p!=NULL;p=p->next)s++;return s;}STUDENT *findindex(int index,STUDENT *head)//按index查找结点,返回结点地址{ STUDENT *p=head;while(p){if(p->index==index) return p;p=p->next;}return NULL;}void setindex(int index,STUDENT *head,int num,char *name,int score1,int score2,int score3)//修改节点数据{ STUDENT *p;p=findindex(index,head);{p->num=num;strcpy(p->name,name);p->score[0]=score1;p->score[1]=score2;p->score[2]=score3;p->sum=score1+score2+score3;}}STUDENT *sort(STUDENT *head)//按总分排序,返回首地址{ void rewindindex(STUDENT*);int i,j;//计数器变量int tnum,t1,t2,t3;//作为交换的中间变量char name[20];//作为交换的中间变量int len;//测量长度变量STUDENT *p,*pre;if((len=length(head))==0) return NULL;else{rewindindex(head);//先将index"重洗"for(i=0;i<len-1;i++)for(j=0;j<len-i-1;j++)if(findindex(j+1,head)->sum>findindex(j,head)->sum){p=findindex(j+1,head);pre=findindex(j,head);{tnum=p->num;strcpy(name,p->name);t1=p->score[0];t2=p->score[1];t3=p->score[2];}setindex(j+1,head,pre->num,pre->name,pre->score[0],pre->score[1],pre->score[2]);setindex(j,head,tnum,name,t1,t2,t3);}//完成j与j+1之间的信息交换return head;}}//*********信息插入函数insert()返回头结点的地址**************STUDENT *insert(STUDENT *head,STUDENT *ne){ STUDENT *p0=ne,*p1=head,*p2;if(head==NULL){head=p0;head->next=NULL;}//空链表,直接将new作为头节点else{while(p0->sum<p1->sum&&p1->next!=NULL){p2=p1;p1=p1->next;}//查找插入位置if(p0->sum>=p1->sum){ if(p1==head){head=p0;p0->next=p1;}//表头插入else{p2->next=p0;p0->next=p1;}//链表中间插入}else{p1->next=p0;p0->next=NULL;}//表尾部插入head=sort(head);//排序}return head;}//*******************数据保存*************************void save(STUDENT *head)//空类型,将信息保存在给定的文件名的文件中{ STUDENT *p;char file[20];FILE *fp;printf("输入文件名:\n");scanf("%s",file);if((fp=fopen(file,"wb"))==NULL){printf("无法打开文件!\n");exit(0);}for(p=head;p!=NULL;p=p->next)fwrite(p,sizeof(STUDENT),1,fp);fclose(fp);}//********************数据的装载*************************** STUDENT *load() //创建链表,将信息导入其中,返回头结点地址{ FILE *fp;STUDENT *head,*p0,*p1;char file[20];printf("输入文件名:\n");scanf("%s",file);if((fp=fopen(file,"rb"))==NULL){printf("无法打开文件!\n");exit(0);}head=(STUDENT*)malloc(sizeof(STUDENT));fread(head,sizeof(STUDENT),1,fp);p0=head;while(p0->next){p1=(STUDENT*)malloc(sizeof(STUDENT));fread(p1,sizeof(STUDENT),1,fp);p0->next=p1;p0=p1;}return head;fclose(fp);}//**********************帮助函数********************void help(){ printf("1 本系统由通信工程1112班郭朝开发记录的数据是");printf("学生成绩的相关信息\n");printf("2 信息录入时,顺次输入学生的学号、姓名及三科");printf("成绩,数据之间以空格、Tab或回车间隔\n");printf("3 姓名及文件名要小于20个西文字符,文件名请写");printf("完整\n");}//*********************菜单显示函数******************** void menu(){ system("cls");printf("学生成绩信息管理系统\n");printf("1 信息录入\n");printf("2 信息显示\n");printf("3 信息查询\n");printf("4 信息修改\n");printf("5 信息删除\n");printf("6 成绩排序\n");printf("7 信息插入\n");printf("8 数据保存\n");printf("9 信息装载\n");printf("10 帮助\n");printf("请选择\n");}//**************************主函数*********************void main(){ int x,i,num;STUDENT *head=NULL,*p;menu();scanf("%d",&x);while(x){switch(x){case 1: printf("请输入信息,以0学号作为结束标志:\n");head=creat();break;case 2: print(head);break;case 3: if(head==NULL)printf("空信息!\n");elsesearch(head);break;case 4: if(head==NULL)printf("空信息!\n");else{printf("输入要修改的学号:\n");scanf("%d",&num);setnum(num,head);}break;case 5: printf("请输入要删除的学生学号:\n");scanf("%d",&num);head=delete(num,head);break;case 6: head=sort(head);print(head);break;case 7: printf("请输入插入的信息:\n");p=(STUDENT*)malloc(sizeof(STUDENT));scanf("%d%s",&p->num,p->name);p->sum=0;p->index=0;for(i=0;i<3;i++){scanf("%d",&p->score[i]);p->sum+=p->score[i];}head=insert(head,p);break;case 8: if(head==NULL) printf("空信息!\n");elsesave(head);break;case 9: head=load();break;case 10: help();break;}printf("按任意键继续\n");getchar();getchar();menu();scanf("%d",&x);}}。

相关文档
最新文档