c语言课程设计报告---学生信息管理系统
- 格式:doc
- 大小:105.50 KB
- 文档页数:14
C语言学生管理系统课程设计报告一、引言学生管理系统是一种用来管理学生信息的软件系统。
C语言学生管理系统课程设计旨在帮助学生掌握C语言的基本语法和编程能力,同时熟悉软件开发过程中的分析、设计和实现等环节。
本报告将详细介绍C语言学生管理系统的设计和实现过程。
二、需求分析为了明确系统的功能需求,在进行系统设计之前,我们需要进行需求分析。
对于一个学生管理系统,常见的功能包括学生信息录入、查找学生信息、修改学生信息和删除学生信息等。
2.1 学生信息录入学生信息录入是系统的基本功能之一。
管理员可以通过系统按照一定的格式输入学生的基本信息,包括学号、姓名、性别、年龄、班级等。
2.2 查找学生信息系统应提供根据学号或姓名快速查找学生信息的功能。
用户可以输入学号或姓名进行查询,并显示该学生的详细信息。
2.3 修改学生信息管理员可以通过系统修改学生的基本信息。
用户可以选择指定要修改的学生的学号,并对学生的姓名、班级、年龄等信息进行修改。
2.4 删除学生信息管理员可以通过系统删除指定学生的信息。
用户可以输入学号或姓名进行查询,并选择删除该学生的信息。
三、系统设计在需求分析的基础上,进行系统设计是为了明确系统的整体架构和各个模块之间的关系。
本章将对C语言学生管理系统的设计进行详细介绍。
3.1 系统架构C语言学生管理系统采用单层架构,将所有功能模块整合在一个程序中。
系统采用面向过程的设计思路,通过函数的调用和参数传递实现不同模块之间的交互。
3.2 数据结构设计系统的核心数据结构是学生信息结构体。
学生信息结构体包括学号、姓名、性别、年龄、班级等字段。
为了方便管理学生的信息,可以使用链表来存储学生信息。
链表的每个节点代表一个学生,通过指针连接起来形成一个链表。
3.3 模块设计系统的功能可以划分为若干个模块,包括学生信息录入模块、查找学生信息模块、修改学生信息模块和删除学生信息模块。
3.3.1 学生信息录入模块学生信息录入模块通过从键盘读取用户输入的信息,并将输入的信息保存到链表中。
c学生管理系统课程设计报告一、课程目标知识目标:1. 理解学生管理系统的基本概念,掌握其功能模块和工作原理。
2. 学习数据库的基本操作,如创建、查询、更新和删除数据。
3. 掌握使用编程语言(如Python)结合数据库进行学生信息管理的方法。
技能目标:1. 能够独立设计并实现一个简单的学生管理系统,包括学生信息的增删改查功能。
2. 学会使用数据库存储和管理数据,提高数据处理能力。
3. 培养问题分析、解决方案设计和编程实现的能力。
情感态度价值观目标:1. 培养学生对信息技术的兴趣和爱好,提高学习积极性。
2. 培养学生的团队协作精神,学会在项目中分工合作、共同解决问题。
3. 增强学生的责任感和使命感,认识到信息技术在学生管理系统中的重要作用。
课程性质:本课程属于信息技术学科,结合数据库和编程知识,注重实践操作,培养学生的动手能力和实际应用能力。
学生特点:学生处于高年级阶段,具备一定的信息技术基础和编程能力,对实际应用项目有较高的兴趣。
教学要求:结合学生实际情况,注重理论与实践相结合,充分调动学生的主观能动性,提高学生的实际操作能力和解决问题的能力。
将课程目标分解为具体的学习成果,以便进行后续的教学设计和评估。
二、教学内容1. 学生管理系统概述- 系统需求分析- 功能模块设计2. 数据库基础知识- 数据库概念及种类- 关系型数据库(如MySQL)的基本操作3. 编程语言选择与使用- Python编程基础- Python操作数据库(如使用SQLAlchemy)4. 学生管理系统实现- 系统架构设计- 学生信息模块实现(增删改查功能)- 用户权限管理5. 系统测试与优化- 功能测试- 性能测试- 系统优化策略6. 项目实践与展示- 团队合作完成学生管理系统- 系统演示与评价教学内容安排与进度:第一周:学生管理系统概述,数据库基础知识第二周:Python编程基础,Python操作数据库第三周:学生管理系统实现(学生信息模块)第四周:用户权限管理,系统测试与优化第五周:项目实践与展示教学内容与教材关联性:本教学内容与教材中关于数据库操作、Python编程以及实际应用项目开发等内容紧密相关,确保学生在学习过程中掌握学科知识,提高实际操作能力。
学生管理系统c语言课程设计报告1. 引言学生管理系统是现代教学管理中不可或缺的工具。
本报告将详细介绍一个基于C语言的学生管理系统的设计与实现。
学生管理系统用于记录学生信息、成绩管理、考勤管理、课程管理等功能,能够提高教学管理的效率和准确性。
2. 系统设计2.1 需求分析学生管理系统的主要功能包括: 1. 学生信息管理:添加、删除、修改学生的基本信息,如学号、姓名、年龄、性别等。
2. 成绩管理:录入学生的成绩,计算平均成绩。
3. 考勤管理:记录学生的考勤情况,统计缺勤次数。
4. 课程管理:添加、删除、修改课程信息,如课程编号、课程名称、教师姓名等。
2.2 系统架构学生管理系统采用模块化设计,分为四个模块: 1. 学生信息模块:实现学生信息的添加、删除、修改功能。
2. 成绩管理模块:实现成绩录入和平均成绩计算功能。
3. 考勤管理模块:实现考勤记录和缺勤次数统计功能。
4. 课程管理模块:实现课程信息的添加、删除、修改功能。
2.3 系统流程图st=>start: 开始op1=>operation: 添加学生信息op2=>operation: 删除学生信息op3=>operation: 修改学生信息op4=>operation: 成绩录入op5=>operation: 平均成绩计算op6=>operation: 考勤记录op7=>operation: 缺勤次数统计op8=>operation: 添加课程信息op9=>operation: 删除课程信息op10=>operation: 修改课程信息e=>end: 结束st->op1->op2->op3->op4->op5->op6->op7->op8->op9->op10->e 3. 功能实现3.1 学生信息管理3.1.1 添加学生信息通过输入学生的基本信息,将学生信息保存到系统中。
题目:学生信息管理系统一、需求分析任务要求:自学C语言中有关链表及外部文件得内容,设计学生信息管理系统。
具体要求如下:◆建立学生信息,信息至少包括名字、性别、年龄、学号、系别、家庭信息等内容;◆能够提供添加、删除与修改学生信息等功能;◆能将通讯录保存在文件中;◆能够按指定方式输出学生信息.系统功能需求分析:★1、为存储学生信息,需定义一个结构体类型,成员名字、性别、年龄、学号、系别、家庭信息等,并建立链表,定义该结构体类型得指针,用于指向各结点;★ 2、分别建立具有添加、删除、修改、查询等功能得子函数,完成相应功能,对程序实现模块化。
这其中要用到对链表得删除、插入等知识。
删除时用一结构体指针指向链表得第一个结点,检查该节点得值就是否等于输入得要删除得学号,若相等就删除,不相等则后移指针,直至表尾。
插入时也要先找到相应结点,再添加.★3、为实现存储功能,需用到文件得相关函数,打开文件,将添加、修改或删除得信息存入磁盘中。
★4、为以表格得形式输出文件,宏定义格式化输出语句,指定输出学生信息。
二、概要设计系统总体设计框架:对程序进行模块化,建立添加、修改、删除、查找与显示功能得子函数,各子函数中运用链表存储数据。
从主函数开始执行,调用各个子函数,并运用文件相关知识将信息存入磁盘中。
系统功能模块图:三、详细设计主要功能模块得算法设计思路如下:1、查询通讯录信息(void chakan())(1)为开辟一个新单元(2)输入查询关键字:(3)读取保存得文件数据输入ASCLL字符:(4)在链表中寻找相应结点;(5)调用输出函数,输出结点信息.2、添加信息函数(void add())(1)定义指向结构体变量得指针;(2)移动指针,找到插入结点;(3)在要插入得结点输入信息;(4)调用保存函数,打开文件,保存输入信息。
3、删除信息函数(void del())(1)定义指向结构体变量得指针;(2)用指针检验链表中就是否有记录,若没记录,返回主函数;(3)根据要修改得编号查找要删除得结点;(4)修改链表,删除对应结点。
c语言学生管理系统课程设计报告我见过太多关于学生管理系统的课程设计报告,这仅仅只是其中之一、希望对你有所帮助。
一、题目学生管理系统的设计与实现二、设计目的和要求1.根据实际需求,实现一个学生管理系统,包括对学生的基本信息的增删改查功能以及成绩查询功能;2.使用C语言编写代码,实现学生管理系统的核心功能;3.界面友好,操作简便,用户可以通过简单的指令实现对学生信息的管理和查询;4.提供用户权限管理,确保只有具备管理员权限的用户才能进行管理操作;三、系统基本功能1.学生信息的增删改查:学生的基本信息包括学号、姓名、性别、年龄等。
管理员可以对这些信息进行增加、删除、修改和查询的操作,方便学生信息的管理;2.成绩查询功能:管理员可以根据学号查询学生的成绩,系统将返回相应的成绩信息;3.用户权限管理:系统将设置管理员账号和密码,只有拥有管理员权限的用户才能进行学生信息的管理操作。
四、系统设计思路1.确定数据结构:创建一个学生结构体,包含学号、姓名、性别、年龄和成绩等信息;2.确定主要函数:设计主菜单函数,用户可以通过选择功能选项来进行不同的操作,如增加学生信息、删除学生信息、修改学生信息、查询学生信息和查询成绩等功能;3.设计增删改查函数:通过逐步引导用户输入信息或选择操作,实现相应功能;4.设计用户权限函数:管理员通过输入正确的用户名和密码,才能登录进入管理界面,否则无法进行管理操作;5.进行函数间的调试和优化,确保代码的完整性和稳定性;6.设计简易界面:通过打印相应的信息和提示,实现用户友好的界面设计。
五、实际实现效果和展示1.用户界面友好,简单易懂,用户能够通过选择相应的功能来实现对学生信息的管理和查询。
2.数据操作准确,能够准确地增加、删除、修改和查询学生信息以及查询学生成绩。
3.用户权限管理严密,只允许管理员进行管理操作,保证了学生信息的安全性。
六、总结和展望通过本次学生管理系统的设计与实现,我深刻感受到了系统设计的重要性和挑战性。
c语言课程设计学生学籍管理系统一、教学目标本课程旨在让学生掌握C语言的基本语法,培养学生编写结构化程序的能力,使学生能够运用C语言实现简单的学生学籍管理系统。
通过本课程的学习,学生将能够:1.知识目标:–理解C语言的基本数据类型、运算符和表达式;–掌握函数的定义和调用,理解局部变量和全局变量的概念;–熟悉控制结构,如if语句、for循环和while循环;–了解数组、字符串和指针的基本使用方法。
2.技能目标:–能够使用C语言编写简单的程序,解决实际问题;–掌握基本的调试技巧,能够找出并修复程序中的错误;–具备阅读和理解他人代码的能力。
3.情感态度价值观目标:–培养学生对计算机科学的兴趣和热情,提高学生的自主学习能力;–培养学生团队协作的精神,增强学生的沟通能力;–培养学生解决问题的能力,提高学生的创新意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言基本语法:数据类型、运算符、表达式、函数、局部变量和全局变量等;2.控制结构:if语句、for循环、while循环等;3.数据结构:数组、字符串、指针等;4.学生学籍管理系统的实现:学生信息的添加、删除、修改和查询等功能。
三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法相结合的方式进行教学:1.讲授法:通过讲解C语言的基本语法和概念,使学生掌握相关知识;2.案例分析法:通过分析实际案例,使学生理解并掌握C语言在学生学籍管理系统中的应用;3.实验法:让学生动手编写代码,实现学生学籍管理系统的功能,提高学生的实际操作能力。
四、教学资源本课程的教学资源包括:1.教材:《C语言程序设计》;2.参考书:《C语言 Primer》;3.多媒体资料:教学PPT、视频教程等;4.实验设备:计算机、网络等。
以上教学资源将有助于实现本课程的教学目标,提高学生的学习效果。
五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。
c语言课程设计信息管理系统一、教学目标本课程的教学目标是使学生掌握C语言程序设计的基本知识和技能,能够运用C语言设计简单的信息管理系统。
具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识,了解面向过程的编程思想。
2.技能目标:学生能够运用C语言编写简单的程序,具备调试和解决问题的能力,能够独立完成一个小型信息管理系统的设计。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高学生解决问题的能力,培养学生的创新精神和团队合作意识。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识,以及面向过程的编程思想。
具体安排如下:1.第一章:C语言基础知识,介绍C语言的基本语法、数据类型、运算符等。
2.第二章:控制结构,介绍条件语句、循环语句等控制结构。
3.第三章:函数,介绍函数的定义、声明和调用,以及递归函数。
4.第四章:数组和字符串,介绍一维数组、多维数组、字符串的基本操作。
5.第五章:指针,介绍指针的概念、运算和应用。
6.第六章:结构体和联合体,介绍结构体、联合体的定义和应用。
7.第七章:文件操作,介绍文件的概念、文件操作函数和文件指针。
8.第八章:面向过程的编程思想,介绍模块化编程、函数指针等概念。
三、教学方法本课程的教学方法采用讲授法、案例分析法和实验法相结合的方式。
在教学过程中,教师会通过讲解和示例让学生掌握C语言的基本知识和编程技巧,同时通过案例分析法让学生了解信息管理系统的实现过程。
此外,实验法将用于培养学生的实际编程能力和问题解决能力。
四、教学资源本课程的教学资源包括教材、多媒体资料和实验设备。
教材选用《C程序设计语言》(K&R)作为主要参考书,多媒体资料包括教学PPT、视频教程等,实验设备包括计算机、网络等。
这些教学资源将用于支持教学内容和教学方法的实施,丰富学生的学习体验。
c语言课程设计(学生信息管理系统)一、系统功能学生信息管理系统是一款基于C语言开发的数据管理程序,可实现对学生信息的增删改查等功能。
具体功能列表如下: a. 添加学生信息:可根据学生的基本信息,如学生学号、姓名、性别、地址、联系电话等,依次记录入系统; b. 删除学生信息:可根据学生学号、姓名等信息,从系统中删除不必要的学生信息; c. 修改学生信息:可根据已有的学生信息,修改学生某些属性内容,以更新系统中的数据; d. 查看学生信息:可根据学生学号、姓名等信息,查看指定学生的所有信息及多种查询功能; e. 数据保存功能:可将当前系统中的学生信息,保存成文件的形式; f. 备份/恢复功能:可对学生信息文件进行备份并对备份文件进行恢复; g. 查询统计功能:可根据学院代号、专业代号等信息,进行不同的查询统计; h. 排序功能:可根据学生学号、姓名等信息,对学生信息进行排序; i. 帮助功能:可提供详细的使用帮助文档,以帮助用户更好地使用系统;二、程序实现及结构1. 主程序:此程序用于控制整个系统的运行,可实现系统菜单显示、功能调用及功能切换等功能,可根据用户的操作需求,调用其他子程序实现各项功能。
2. 子程序:此程序是系统的主要部分,可实现学生信息的增删改查等功能,并可支持学生信息的备份,恢复,排序及查询统计等功能,用于实现主程序调用的功能。
3. 管理模块:此模块可实现对用户的登录及注册功能,可检测用户登录及注册的账号是否正确,以及是否有权限使用系统;4. 数据库模块:此模块可实现对学生信息的存储及调用,便于对各类学生信息进行更方便的管理。
此模块还可以负责系统的备份及恢复功能的实现。
5. 图形界面模块:此模块负责实现系统的图形化界面,使用户可以更加友好地操作系统,可以根据用户的需求,随时更改系统界面设置。
三、程序设计学生信息管理系统的设计主要有四个部分:1. 主程序:主程序的设计要求负责控制整个系统的运行,并根据用户的操作调用子程序实现各个功能。
C语言课程设计报告 --学生管理系统一、实验目的:通过本次实验,学习C语言的语法和数据类型,设计一个简单的学生管理系统,结合文件I/O所学,可以将学生信息保存至文件中,再读取时自动填充至程序中。
同时,体验软件开发的流程,从需求分析到具体实现。
二、需求分析:1、学生信息包括:学号、姓名、性别、年龄、成绩。
2、学生信息需要添加、删除、修改、查找和显示。
3、程序启动时自动从文件中读取数据,退出时自动保存数据。
三、实验过程:1、确定数据结构和变量类型通过分析需求,学生信息包含多个属性,可以使用结构体来保存每个学生的信息。
同时,为了便于程序运行,需要定义一个链表来保存所有学生信息。
/* 学生信息结构体 */typedef struct _Student {char id[12]; // 学号char name[20]; // 姓名char gender; // 性别int age; // 年龄double score; // 成绩} Student;/* 学生信息链表节点 */typedef struct _StudentNode {Student data; // 学生信息struct _StudentNode *next; // 下一节点指针} StudentNode;/* 学生信息链表头节点 */StudentNode *head = NULL;2、设计主菜单功能考虑学生管理系统的主要功能,可以设计以下主菜单:---------------------------1. 添加学生2. 删除学生3. 修改学生信息4. 查找学生5. 显示所有学生6. 退出---------------------------可以使用一个while循环来循环处理,直到用户选择退出。
3、实现主菜单功能添加学生:先从用户输入中获取学生信息,然后创建一个新的学生信息节点,并将其添加到链表的末尾。
1. 定义变量/* 输入缓存区大小 */#define BUFFER_SIZE 2562. 实现函数/* 添加学生到链表末尾 */void add_student() {Student student; // 待添加的学生信息printf("请输入学号:");scanf("%s", student.id);printf("请输入姓名:");scanf("%s", );printf("请输入性别(M/F):");scanf(" %c", &student.gender);printf("请输入年龄:");scanf("%d", &student.age);printf("请输入成绩:");scanf("%lf", &student.score);StudentNode *node =(StudentNode*)malloc(sizeof(StudentNode));node->data = student;node->next = NULL;if (head == NULL) {head = node;} else {StudentNode *p = head;while (p->next != NULL) {p = p->next;}p->next = node;}printf("添加学生成功!\n");}删除学生:先从用户输入中获取学生学号,然后遍历链表,找到该学号对应的学生信息节点,并删除。
c语言课程设计学生信息管理系统一、教学目标本课程旨在通过学习C语言,使学生掌握学生信息管理系统的基本概念、设计方法和实现技巧。
具体目标如下:1.知识目标:学生应掌握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语言中有关链表及外部文件的内容,设计学生信息管理系统。
具体要求如下:◆建立学生信息,信息至少包括名字、性别、年龄、学号、系别、家庭信息等内容;◆能够提供添加、删除和修改学生信息等功能;◆能将通讯录保存在文件中;◆能够按指定方式输出学生信息。
系统功能需求分析:★1、为存储学生信息,需定义一个结构体类型,成员名字、性别、年龄、学号、系别、家庭信息等,并建立链表,定义该结构体类型的指针,用于指向各结点;★ 2、分别建立具有添加、删除、修改、查询等功能的子函数,完成相应功能,对程序实现模块化。
这其中要用到对链表的删除、插入等知识。
删除时用一结构体指针指向链表的第一个结点,检查该节点的值是否等于输入的要删除的学号,若相等就删除,不相等则后移指针,直至表尾。
插入时也要先找到相应结点,再添加。
★3、为实现存储功能,需用到文件的相关函数,打开文件,将添加、修改或删除的信息存入磁盘中。
★4、为以表格的形式输出文件,宏定义格式化输出语句,指定输出学生信息。
系统总体设计框架:对程序进行模块化,建立添加、修改、删除、查找和显示功能的子函数,各子函数中运用链表存储数据。
从主函数开始执行,调用各个子函数,并运用文件相关知识将信息存入磁盘中。
系统功能模块图:主要功能模块的算法设计思路如下:1、查询通讯录信息(void chakan())(1)为开辟一个新单元(2)输入查询关键字:(3)读取保存的文件数据输入ASCLL字符:(4)在链表中寻找相应结点;(5)调用输出函数,输出结点信息。
2、添加信息函数(void add())(1)定义指向结构体变量的指针;(2)移动指针,找到插入结点;(3)在要插入的结点输入信息;(4)调用保存函数,打开文件,保存输入信息。
3、删除信息函数(void del())(1)定义指向结构体变量的指针;(2)用指针检验链表中是否有记录,若没记录,返回主函数;(3)根据要修改的编号查找要删除的结点;(4)修改链表,删除对应结点。
4、修改信息函数(void xiugai())(1)定义指向结构体变量的指针;(2)读取保存的文件数据输入ASCLL字符:(3)用指针检验链表中是否有记录,若没记录,返回主函数;(4)根据要修改的编号查找对应结点;(5)修改信息;(6)打开文件,保存修改记录。
5、保存信息函数(baocun())(1)定义指向结构体变量的指针;(2)用文件指针指向要读写的磁盘文件名,若没有则新建此文件名:(3)用指针检验链表中是否有记录,若没记录,返回主函数:(4)打开文件,保存记录:6、屏幕操作函数(void stubent187())(1)以一定格式输出所想要的图形:四、主要源程序代码定义变量:(对整个程序定义全局变量)#include "stdio.h"#include "conio.h"#define STUDENT ID /*所有STUDENT都用ID来代替*/typedef struct node /*定义结构体*/{ char ming[50]; /*名字*/char xing[50]; /*性别*/char nian[50]; /*年龄*/int xuehao; /*学号*/char xibie[50]; /*专业*/char sushe[50]; /*宿舍号*/char jia[50]; /*家庭地址*/struct node *next;}ID; /*学生信息(变量名)*/ID *head=NULL; /*定义一个头指针*/FILE *zhi; /*定义一个文件指针*/主菜单界面:(进入屏幕界面的形式)void stubent187() /*屏幕格式函数*/{ printf("****************************************\n");printf("* 学生信息管理系统*\n");printf("* *\n");printf("* 请选择:1:查看; 2:添加; 3:删除; *\n");printf("* 4:修改; 0:退出系统*\n");printf("* *\n");printf("*******************************************\n");printf(">>>>>>>>>>>>>输入0~4 数字<<<<<<<<<<<<<\n");return ;}查看学生信息记录:(对以保存在磁盘文件的学生信息进行查询)void chakan(){ /* 查看*/ID *t;t=head;t=(ID *)malloc(sizeof(ID)); /*为t开辟一个新单元*/if((zhi=fopen("yihu1.txt","rb"))==NULL) printf("没有此文件\n");else{ printf("%10s%10s%10s%10s%10s%10s%10s\n","ming","xing","nian","xuehao" ,"eng","sushe","jia"); /*输出一个屏幕格式*/while (!feof(zhi)){ fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&t->ming,&t->xing, &t->nian,&t->xuehao,&t->xibie,&t->sushe,&t->jia); /*读取保存的文件数据输入ASCLL字符:*/printf("%10s%10s%10s%10d%10s%10s%10s\n",t->ming,t->xing,t->nian,t->xuehao,t ->xibie,t->sushe,t->jia); /*以这形式输出各个学生信息*/t->next=(ID *)malloc(sizeof(ID));t=t->next;}};}添加学生信息记录:()void add(){char i; /*添加*/ID *t1,*t2;t1=t2=NULL;loop: t1=(ID *)malloc(sizeof(ID)); /*为t1开辟一个新单元*/printf("请输入姓名:");scanf("%s",&t1->ming); /* 姓名*/printf("请输入性别:");scanf("%s",&t1->xing); /* 性别*/printf("请输入年龄:");scanf("%s",&(t1->nian)); /* 年龄*/printf("请输入学号:");scanf("%d",&(t1->xuehao)); /* 学号*/printf("请输入系别:");scanf("%s",&(t1->xibie)); /*系别*/printf("请输入宿舍号:");scanf("%s",&(t1->sushe)); /*宿舍号*/printf("请输入家庭地址:");scanf("%s",&(t1->jia)); /*家庭地址*/t1->next=NULL;if (head==NULL) /*如果头结点为空*/{ head=t1; /*t1指向头结点*/t2=t1;}else {t2=head;while (t2->next!=NULL) t2=t2->next; /*没有成立则指向下个结点*/ t2->next=t1;} getchar();printf("是否继续添加(Y/N):\n");scanf("%s",&i); /*输入Y/N*/if(i=='y'||i=='Y'){clrscr(); goto loop; /* 清屏在循环*/}else {printf("是否保存此次添加(Y/N)\n");scanf("%s",&i);if(i=='y'||i=='Y') /*是否要保存*/{baocun(); /*调用保存*/clrscr(); /*清屏*/stubent187();/*调用屏幕函数*/printf("保存成功");}else if(i=='n'||i=='N'){clrscr(); /*清屏*/stubent187();} /*调用屏幕函数*/}return ;}删除学生信息操作:(对以存的学生信息进行删除)void del(){ /*删除*/ID *A,*B; /*定义指针*/char t,i;int xuehao; /*定义整型变量与字符型变量*/A=B=NULL;if((zhi=fopen("yihu1.txt","a+"))==NULL) printf("没有此信息文件\n");else{ loop: printf("请输入要删除的学生学号:");scanf("%d",&xuehao);while (!feof(zhi)){ fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&A->ming,&A->xing,&A ->nian,&A->xuehao,&A->xibie,&A->sushe,&A->jia); /*读取保存的文件数据输入ASCLL字符:*/if(A!=NULL && A->xuehao!=xuehao)A=A->next;else break;}if (A->xuehao==xuehao){ head=A->next;free(*A);printf("成功!\n");printf("是否继续删除(Y/N)");scanf("%s",&i);if(i=='y'||i=='Y'){clrscr(); goto loop;}if(i=='n'||i=='N')printf("是否保存此次删除(Y/N)\n");scanf("%s",&i);if(i=='y'||i=='Y')baocun();elseclrscr();stubent187();}else printf("无法找到此编号\n");}}修改学生信息操作:(对保存的学生信息进行修改)void xiugai(){ /*修改*/ID *t1,*t2; /*定义指针*/int i;char xuehao; /*定义整型变量与字符型变量*/t1=head;if((zhi=fopen("yihu1.txt","a+"))==NULL) printf("没有此信息文件\n"); loop: printf("请输入要修改的学号:");scanf("%s",&xuehao); /* 输入编号*/while (!feof(zhi)){fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&t1->ming,&t1->xing,&t1->n ian,&t1->xuehao,&t1->xibie,&t1->sushe,&t1->jia); *读取保存的文件数据输入ASCLL字符:*/if(t1!=NULL && t1->xuehao!=xuehao)t1=t1->next;else break;}if (t1->xuehao==xuehao){ fprintf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",t1->ming,t1->xing,t1-> nian,t1->xuehao,t1->xibie,t1->sushe,t1->jia);printf("输入名字:");scanf("%s",&t1->ming); /*名字*/printf("输入性别:");scanf("%s",&(t1->xing)); /*性别*/printf("输入年龄:");scanf("%s",&(t1->nian)); /*年龄*/printf("输入学号:");scanf("%s",&t1->xuehao); /*学号*/printf("输入系别:");scanf("%s",&(t1->xibie)); /*系别*/ printf("输入专业:");scanf("%s",&(t1->sushe)); /* 宿舍号*/ printf("输入家庭地址:");scanf("%s",&(t1->jia)); /* 家庭地址*/printf("成功!\n");printf("是否继续修改(Y/N)");scanf("%d",&i);if(i=='y'||i=='Y'){clrscr(); goto loop;}if(i=='n'||i=='N')printf("是否保存此次修改(Y/N)\n");scanf("%c",&i);if(i=='y'||i=='Y')baocun();elseclrscr(); /*清屏*/stubent187(); /*调用屏幕函数*/}else printf("没有此编号\n");return;}保存添加,删除,修改学生的信息:(操作过后是否保存)baocun() /*保存*/{ID *t=head; /*定义指针*/zhi=fopen("yihu1.txt","a+"); /*(读写yihu.txt文本) */while (t!=NULL){fprintf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",t->ming,t->xing,t->nian,t->xue hao,t->xibie,t->sushe,t->jia); /*以zhi为文件指针保存*/t=t->next;}fclose(zhi); /*关闭此文件*/printf("成功!\n");return ;}主菜单操作:(选择所需要的操作)main() /*主函数*/{int i; /*定义整形变量i*/stubent187(); /*调用屏幕函数*/while(1){scanf("%d",&i); /*输入要执行的操作*/switch(i){ case 1:chakan();break; /*调用查看函数*/case 2:add();break; /*调用添加函数*/case 3:del();break; /*调用删除函数*/case 4:xiugai();break; /*调用修改函数*/case 0:exit(0); /*结束*/default:printf("输入错误,请在此输入\n");continue;} /*输入不是0~4的,则返回*/}}Ⅰ源函数代码:void chakan(){ /* 查看*/ID *t;t=head;t=(ID *)malloc(sizeof(ID)); /*为t开辟一个新单元*/if((zhi=fopen("yihu1.txt","rb"))==NULL) printf("没有此文件\n");else{ printf("%10s%10s%10s%10s%10s%10s%10s\n","ming","xing","nian","xuehao" ,"eng","sushe","jia"); /*输出一个屏幕格式*/while (!feof(zhi)){ fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&t->ming,&t->xing, &t->nian,&t->xuehao,&t->xibie,&t->sushe,&t->jia); /*读取保存的文件数据输入ASCLL字符:*/printf("%10s%10s%10s%10d%10s%10s%10s\n",t->ming,t->xing,t->nian,t->xuehao,t ->xibie,t->sushe,t->jia); /*以这形式输出各个学生信息*/t->next=(ID *)malloc(sizeof(ID));t=t->next;}};}void add(){char i; /*添加*/ID *t1,*t2;t1=t2=NULL;loop: t1=(ID *)malloc(sizeof(ID)); /*为t1开辟一个新单元*/ printf("请输入姓名:");scanf("%s",&t1->ming); /* 姓名*/printf("请输入性别:");scanf("%s",&t1->xing); /* 性别*/printf("请输入年龄:");scanf("%s",&(t1->nian)); /* 年龄*/printf("请输入学号:");scanf("%d",&(t1->xuehao)); /* 学号*/printf("请输入系别:");scanf("%s",&(t1->xibie)); /*系别*/printf("请输入宿舍号:");scanf("%s",&(t1->sushe)); /*宿舍号*/printf("请输入家庭地址:");scanf("%s",&(t1->jia)); /*家庭地址*/t1->next=NULL;if (head==NULL) /*如果头结点为空*/{ head=t1; /*t1指向头结点*/t2=t1;}else {t2=head;while (t2->next!=NULL) t2=t2->next; /*没有成立则指向下个结点*/ t2->next=t1;} getchar();printf("是否继续添加(Y/N):\n");scanf("%s",&i); /*输入Y/N*/if(i=='y'||i=='Y'){clrscr(); goto loop; /* 清屏在循环*/}else {printf("是否保存此次添加(Y/N)\n");scanf("%s",&i);if(i=='y'||i=='Y') /*是否要保存*/{baocun(); /*调用保存*/clrscr(); /*清屏*/stubent187();/*调用屏幕函数*/printf("保存成功");}else if(i=='n'||i=='N'){clrscr(); /*清屏*/stubent187();} /*调用屏幕函数*/}return ;}void del(){ /*删除*/ID *A,*B; /*定义指针*/char t,i;int xuehao; /*定义整型变量与字符型变量*/A=B=NULL;if((zhi=fopen("yihu1.txt","a+"))==NULL) printf("没有此信息文件\n");else{ loop: printf("请输入要删除的学生学号:");scanf("%d",&xuehao);while (!feof(zhi)){ fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&A->ming,&A->xing,&A ->nian,&A->xuehao,&A->xibie,&A->sushe,&A->jia); /*读取保存的文件数据输入ASCLL字符:*/if(A!=NULL && A->xuehao!=xuehao)A=A->next;else break;}if (A->xuehao==xuehao){ head=A->next;free(*A);printf("成功!\n");printf("是否继续删除(Y/N)");scanf("%s",&i);if(i=='y'||i=='Y'){clrscr(); goto loop;}if(i=='n'||i=='N')printf("是否保存此次删除(Y/N)\n");scanf("%s",&i);if(i=='y'||i=='Y')baocun();elseclrscr();stubent187();}else printf("无法找到此编号\n");}}void xiugai(){ /*修改*/ID *t1,*t2; /*定义指针*/int i;char xuehao; /*定义整型变量与字符型变量*/t1=head;if((zhi=fopen("yihu1.txt","a+"))==NULL) printf("没有此信息文件\n"); loop: printf("请输入要修改的学号:");scanf("%s",&xuehao); /* 输入编号*/while (!feof(zhi)){fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&t1->ming,&t1->xing,&t1->n ian,&t1->xuehao,&t1->xibie,&t1->sushe,&t1->jia); *读取保存的文件数据输入ASCLL字符:*/if(t1!=NULL && t1->xuehao!=xuehao)t1=t1->next;else break;}if (t1->xuehao==xuehao){ fprintf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",t1->ming,t1->xing,t1-> nian,t1->xuehao,t1->xibie,t1->sushe,t1->jia);printf("输入名字:");scanf("%s",&t1->ming); /*名字*/printf("输入性别:");scanf("%s",&(t1->xing)); /*性别*/printf("输入年龄:");scanf("%s",&(t1->nian)); /*年龄*/printf("输入学号:");scanf("%s",&t1->xuehao); /*学号*/printf("输入系别:");scanf("%s",&(t1->xibie)); /*系别*/ printf("输入专业:");scanf("%s",&(t1->sushe)); /* 宿舍号*/ printf("输入家庭地址:");scanf("%s",&(t1->jia)); /* 家庭地址*/printf("成功!\n");printf("是否继续修改(Y/N)");scanf("%d",&i);if(i=='y'||i=='Y'){clrscr(); goto loop;}if(i=='n'||i=='N')printf("是否保存此次修改(Y/N)\n");scanf("%c",&i);if(i=='y'||i=='Y')baocun();elseclrscr(); /*清屏*/stubent187(); /*调用屏幕函数*/}else printf("没有此编号\n");return;}baocun() /*保存*/{ID *t=head; /*定义指针*/zhi=fopen("yihu1.txt","a+"); /*(读写yihu.txt文本) */while (t!=NULL){fprintf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",t->ming,t->xing,t->nian,t->xue hao,t->xibie,t->sushe,t->jia); /*以zhi为文件指针保存*/t=t->next;}fclose(zhi); /*关闭此文件*/printf("成功!\n");return ;}main() /*主函数*/{int i; /*定义整形变量i*/stubent187(); /*调用屏幕函数*/while(1){scanf("%d",&i); /*输入要执行的操作*/switch(i){ case 1:chakan();break; /*调用查看函数*/case 2:add();break; /*调用添加函数*/case 3:del();break; /*调用删除函数*/case 4:xiugai();break; /*调用修改函数*/case 0:exit(0); /*结束*/default:printf("输入错误,请在此输入\n");continue;} /*输入不是0~4的,则返回*/}}5、归纳总结①实训中遇到的问题及解决方法:在这次的实训中,主要遇到的问题是在修改第一个操作—查看时,出现了一些乱码,与规格不是所想实现的要求。