学生学籍管理系统C课程设计报告-正文
- 格式:doc
- 大小:524.50 KB
- 文档页数:29
C++课程设计实验报告课题名称:学生学籍管理系统班级:学院:资源与安全工程学院指导老师:姓名:第1章概述1.1 系统实现的目标课程设计的任务:制作一个小型的学生学籍管理系统,要求制作一个菜单,实现数据的录入,数据的显示,数据查找,数据的删除,数据的保存,数据的修改,系统的退出。
系统的设计要求用到C++面向对象的程序设计,要求用到类来实现,同时每一个功能用到一个函数。
基本功能:学生基本信息(学号,姓名,性别,班级,联系方式,出生日期)扩展功能:学生数据的添加、修改、与删除学生数据的读取与存储系统特点:系统数据的录入为手工录入;系统统计学生的基本信息较全面,包括学号,姓名,学号,姓名,性别,班级,联系方式,出生日期;程序中查找运用了两种查找方式即班级查找和姓名查找。
1.2 系统实现方案第一步:分析题目,建立类并派生出它的子类,画出类图。
第二步:画出流程,根据流程图编写程序清单第三步:上机调试程序(使用单步调试,设置断点、分块调试的方法)。
第五步:及时整理资料,撰写课程设计报告中有关这个题目的内容。
第2章系统分析2.1 调查程序对学生学籍的数据处理要求①能够输入并浏览学生的基本信息;②能够实现对学生信息的查询和修改;;③能够对学生的信息进行保存;现行的系统功能:资料维护:系统维护包括对各学生信息的录入操作。
资料维护:对数据表中的信息进行浏览。
系统查询:可以对不同班级的学生进行信息查询。
2.2现行系统分析3.1 系统功能设计系统功能结构图:3.2 类设计类:student数据成员学号,姓名,性别,班级,联系方式,出生日期类:school成员函数录入函数Input():输入学生信息;查询函数found():按学号或姓名查找学生的信息;修改函数mend():按学号或姓名修改学生的信息;删除函数del():删除指定学号学生记录;输出函数show():输出班级所有学生信息;UML图:3.3 输入输出的设计1.界面的设计 ①、界面设计程序运行后会出现一个简捷的窗口,便于用户查询数据。
C语言学籍管理系统设计报告1. 引言学籍管理系统作为一种信息化管理工具,已经在现代教育管理中得到广泛应用。
本文将介绍一个基于C语言的学籍管理系统的设计方案。
2. 系统概述学籍管理系统是一个用于管理学生信息的软件系统。
它能够提供学生信息的录入、查询、修改、删除等功能,实现了学生信息的统一管理和快速检索。
本系统旨在简化教务管理流程,提高教务工作效率。
3. 功能需求学籍管理系统应满足以下功能需求:1.学生信息录入:系统提供学生信息录入界面,包括学生姓名、学号、性别、年龄、班级等基本信息。
2.学生信息查询:系统提供学生信息查询界面,可以按照学号、姓名、班级等条件进行查询,并能够显示查询结果。
3.学生信息修改:系统提供学生信息修改界面,可以修改学生的基本信息。
4.学生信息删除:系统提供学生信息删除功能,可以删除学生的信息。
5.成绩管理:系统可以记录学生的成绩信息,并提供相应的成绩查询和统计功能。
4. 系统设计学籍管理系统的设计主要包括以下几个方面:4.1 数据库设计系统使用数据库来存储学生信息和成绩信息。
可以使用关系型数据库(如MySQL)或者文件系统来实现。
•学生信息表:包括学生姓名、学号、性别、年龄、班级等字段。
•成绩信息表:包括学号、科目、成绩等字段。
4.2 用户界面设计系统的用户界面应简洁、直观,方便用户进行操作。
可以使用命令行界面或者图形界面来实现。
•学生信息录入界面:用户可以通过可视化界面输入学生信息,系统将学生信息添加到数据库中。
•学生信息查询界面:用户可以输入查询条件,系统将根据条件从数据库中检索学生信息并显示。
•学生信息修改界面:用户可以修改学生的基本信息,系统将修改后的信息更新到数据库中。
•删除学生信息界面:用户可以指定学生,系统将删除该学生的信息。
4.3 系统模块设计学籍管理系统可以将功能划分为多个模块,每个模块负责一个具体的功能。
下面列举几个主要的系统模块:•学生信息管理模块:负责学生信息的录入、查询、修改和删除。
c语言课程设计学生学籍管理系统一、教学目标本课程的教学目标是使学生掌握C语言的基本语法和编程方法,能够运用C语言设计学生学籍管理系统。
具体分为三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识。
2.技能目标:学生能够运用C语言进行程序设计,具备编写和调试程序的能力。
3.情感态度价值观目标:学生通过完成学生学籍管理系统的设计和实现,培养对计算机科学和编程的兴趣和热情,提高解决实际问题的能力。
二、教学内容根据课程目标,教学内容主要包括C语言的基本语法和编程方法,具体包括以下部分:1.C语言的基本语法:数据类型、变量、运算符、控制结构等。
2.函数:函数的定义、调用、参数传递、返回值等。
3.学生学籍管理系统的需求分析:系统的功能、数据结构、界面设计等。
4.编程实践:学生通过编写和调试程序,完成学生学籍管理系统的实现。
三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:教师通过讲解C语言的基本语法和编程方法,为学生提供系统的知识结构。
2.讨论法:教师引导学生进行问题讨论,培养学生的思考和解决问题的能力。
3.案例分析法:教师通过分析学生学籍管理系统的案例,引导学生理解和应用C语言编程。
4.实验法:学生通过动手编写和调试程序,提高编程实践能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。
1.教材:选用权威、实用的C语言教材,为学生提供系统的知识结构。
2.参考书:提供相关的参考书籍,丰富学生的知识视野。
3.多媒体资料:制作多媒体课件,生动、形象地展示C语言编程的方法和技巧。
4.实验设备:提供计算机实验室,让学生进行编程实践。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面、客观、公正地评价学生的学习成果。
1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。
信息学院课程设计I报告课程名称C语言程序设计_____ 题目名称学生学籍管理系统学生学院一信息学院______专业班级_ 计科12 _________ 学号___________________________ 学生姓名________________________指导教师______________________2013 年 12 月 26 日目录一、设计目的与要求 .... 错误! 未定义书签题目与设计要求 ........ 错误! 未定义书签本程序设计的知识点 ..... 错误! 未定义书签二、功能设计 .......... 错误! 未定义书签总体设计 .............. 错误! 未定义书签详细设计 .............. 错误! 未定义书签测试结果及分析 ........ 错误! 未定义书签五、总结 .............. 错误! 未定义书签六、参考文献错误! 未定义书签........................设计目的与要求题目与设计要求题目:学生学籍管理系统目的: 1、了解和熟悉 Visual C++ 软件编程开发环境2、熟练掌握结构化程序设计的步骤和模块化设计方法3、熟练掌握C语言数据类型,熟记字符型数据和整形数据的定义和使用4、熟练掌握用 while语句、do…while语句和for语句实现循环结构程序设计的方法5、掌握一维数组、二维数组的定义、赋值和输入输出的方法6、掌握与数组有关的算法(特别是排序算法,熟练掌握冒泡排序法)7、熟悉函数的定义、声明方法及全局变量和局部变量的概念与用法,掌握函数的调用方法8、掌握结构体类型变量的定义和使用及结构体类型数组的概念和应用设计要求:学生学籍信息管理系统设计删除1需求分析学生基本信息、学生成绩基本信息要存入文件当中,因而 要提供文件的输入输出操作;查询功能要求提供查找和显示操 作;删除功能要求实现删除操作;排序功能要求实现排序操作; 另外还应该提供键盘式选择菜单以实现功能选择。
学籍管理系统c语言课程设计报告一、引言学籍管理系统是一种管理学生信息的工具,它可以帮助学校更好地管理学生的个人信息、课程信息、成绩信息等。
本报告旨在介绍一个基于C语言的学籍管理系统的设计与实现。
二、需求分析1. 功能需求(1)学生信息管理:包括添加、修改和删除学生个人信息。
(2)课程信息管理:包括添加、修改和删除课程信息。
(3)成绩录入:可以输入每个学生在每门课程中的成绩。
(4)成绩查询:可以查询每个学生在每门课程中的成绩。
(5)统计分析:可以统计每门课程的平均分和及格率。
2. 非功能需求(1)界面友好:界面简洁明了,易于操作。
(2)数据安全性高:能够保证数据安全性,避免数据丢失或泄露等问题。
三、系统设计1. 总体设计思路本系统采用模块化设计思路,将整个系统划分为多个模块,以便于开发和维护。
主要模块包括:(1)学生信息模块;(2)课程信息模块;(3)成绩录入模块;(4)成绩查询模块;(5)统计分析模块。
2. 数据结构设计本系统采用链表存储学生和课程信息,每个节点包含学生或课程的基本信息,以及指向下一个节点的指针。
成绩信息则采用二维数组存储。
3. 界面设计本系统采用控制台界面,通过菜单进行操作。
每个菜单选项对应一个功能模块。
四、系统实现1. 学生信息模块(1)添加学生信息:输入学生姓名、性别、年龄等基本信息,并将该学生添加到链表中。
(2)修改学生信息:根据学生ID修改相应的学生信息。
(3)删除学生信息:根据学生ID删除相应的学生信息。
(4)显示所有学生信息:遍历链表输出所有学生的基本信息。
2. 课程信息模块(1)添加课程信息:输入课程名称、授课教师、上课时间等基本信息,并将该课程添加到链表中。
(2)修改课程信息:根据课程ID修改相应的课程信息。
(3)删除课程信息:根据课程ID删除相应的课程信息。
(4)显示所有课程信息:遍历链表输出所有课程的基本信息。
3. 成绩录入模块输入学生ID和课程ID,然后输入该学生在该课程中的成绩,将成绩保存到二维数组中。
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语言的语法和数据类型,设计一个简单的学生管理系统,结合文件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");}删除学生:先从用户输入中获取学生学号,然后遍历链表,找到该学号对应的学生信息节点,并删除。
《学生学籍管理系统》程序设计基础课程设计报告专业:班级:学号:姓名:指导教师:二OO八年六月二十六日C++课程设计——学籍管理系统实验报告1、对C++设计的《学生学籍管理系统》总体说明我这次做的课程设计是《学生学籍管理系统》,本程序采用C++程序语言编写,运用了基于对象和面向对象的程序设计。
它主要是完成对学生的基本信息和成绩进行录入、查询和删除功能。
实施起来简单快捷,虽然程序简单,但可以作为老师的辅助软件对学生的基本信息和各科成绩进行管理。
2、总体设计本程序的流程图如下:3、对《学生学籍管理系统》的介绍(1)具体功能:a)数据录入功能:对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运算(2)查询功能:分为学生基本情况查询和成绩查询两种:A:学生基本情况查询:A1----输入一个学号或(可实现选择),查出此生的基本信息并显示输出。
A2---输入一个宿舍,可查询出本室所有的学生的基本信息并显示输出。
B:成绩查询:B1:输入一个学号时,查询出此生的所有课程情况,格式如下:学号:xx 姓名:xxxxx课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx………………………共修:xx科,实得总学分为: xxxb)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。
c)排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
(2)源程序说明:源程序清单及注释如下:#include<iostream>#include<fstream>#include<iomanip>using namespace std;class Basic{public:virtual int input(ifstream &its)=0;virtual void input()=0;virtual void display(ofstream &its)=0;virtual void display()=0;virtual void display_1(){}friend class College;protected://把这些数放在这,方便调用Basic *next;//指针int number;//学号char name[40];//int dom_number;//宿舍号double mark; //综合成绩int credit; //实得学分};class Student:virtual public Basic{public:int input(ifstream &its)//输入流{its>>number;if(number==-1)return 0;else{its>>name>>sex>>dom_number>>phone_number;return 1;}}void input()//输入{cout<<"学号:";cin>>number;cout<<" :";cin>>name;cout<<"性别:";cin>>sex;cout<<"宿舍:";cin>>dom_number;cout<<":";cin>>phone_number;}void display(ofstream &its)//输出流{its<<number<<" "<<name<<" "<<sex<<" "<<dom_number<<" "<<phone_number<<endl;}void display()//输出{cout<<number<<setw(10)<<name<<setw(6)<<sex<<setw(10)<<dom_number<<setw(13)< <phone_number<<endl;}private:char sex[5];//性别char phone_number[20];//};class Course:virtual public Basic{public:int input(ifstream &its)//输入流函数{its>>number;if(number==-1)return 0;else{its>>chass_number>>chass_name>>chass_mark>>peacetime_mark>>experiment_mark>>txt_mark;account();return 1;}}void input()//输入函数{cout<<"学号=";cin>>number;cout<<"课程编号=";cin>>chass_number;cout<<"课程名称=";cin>>chass_name;cout<<"学分=";cin>>chass_mark;cout<<"平时成绩=";cin>>peacetime_mark;cout<<"实验成绩=";cin>>experiment_mark;cout<<"卷面成绩=";cin>>txt_mark;account();}void account()//计算综合成绩和实得学分{int i;if(experiment_mark==-1)mark=peacetime_mark*0.15+experiment_mark*0.15+txt_mark*0.7;else mark=peacetime_mark=peacetime_mark*0.3+txt_mark*0.7;i=mark/10;switch(i){case 10: credit=chass_mark;break;case 9: credit=chass_mark;break;case 8: credit=chass_mark*0.8;break;case 7: credit=chass_mark*0.7;break;case 6: credit=chass_mark*0.6;break;default:credit=0;break;}}void display(ofstream &its)//输出流函数{its<<number<<" "<<chass_number<<" "<<chass_name<<" "<<chass_mark<<" "<<peacetime_mark<<" "<<experiment_mark<<" "<<txt_mark<<endl;}void display()//输出函数{cout<<number<<setw(10)<<chass_number<<setw(11)<<chass_name<<setw(5)<<chass_ mark<<setw(7)<<peacetime_mark<<setw(10)<<experiment_mark<<setw(10)<<txt_mark<<setw(10)<<ma rk<<setw(10)<<credit<<endl;}void display_1(){cout<<"课程编号:"<<chass_number<<" "<<"课程名称:"<<chass_name <<" "<<"综合成绩:"<<mark<<" "<<"实得学分:"<<credit<<endl;}private:char chass_number[30];//课程编号char chass_name[30];//课程名称int chass_mark; //学分int peacetime_mark;//平时成绩int experiment_mark;//实验成绩int txt_mark; //卷面成绩};class College//链表类{public:College(int i)//构造函数建立初链,i=0建立Student链表,i=1建立Course 链表{ji=0;Basic *p;int t;PL=i;if(PL==0)//根据PL,打开相应的文件{f.open("A.txt",ios::in);head=new Student;p=new Student;}else{f.open("B.txt",ios::in);head=new Course;p=new Course;}if(!f)//判断f是否打开文件{cout<<"错误"<<endl;abort();}t=head->input(f);head->next=p;p->next=NULL;for(;;)//读入文件数据,并将数据插入链表中{if(i==0)p=new Student;else p=new Course;t=p->input(f);if(t==0)break;head=Build(p);}f.close();//关闭文件}~College(){save();}Basic *Build(Basic *p)//插入函数,将p有序的插入链表中{Basic *p1=head,*p2=head;int i;for(i=0;p1->next!=NULL;i++){if(i==0&&p->number<p1->number)//处理头链{p->next=p1;head=p;ji++;break;}else if(p->number<p1->number)//处理中间{p2->next=p;p->next=p1;ji++;break;}else if(i==ji)//处理尾{p2=p1;p1=p1->next;p2->next=p;p->next=p1;ji++;break;}p2=p1;p1=p1->next;}return head;}void display()//输出链表信息{Basic *a=head;for(;a->next!=NULL;a=a->next)a->display();}void find_number()//查找学号(student) {int i;Basic *h=head;cout<<"请输入你想找的学号:";cin>>i;for(;h->next!=NULL;h=h->next){if(h->number==i){h->display();break;}}}void find_name()//查找(student){char i[40];Basic *h=head;cout<<"请输入你想找的:";cin>>i;for(;h->next!=NULL;h=h->next){if(strcmp(h->name,i)==0){h->display();break;}}}void find_dom_number()//查找宿舍(student){int i;Basic *h=head;cout<<"请输入你想找的宿舍:";cin>>i;for(;h->next!=NULL;h=h->next)if(h->dom_number==i)h->display();}Basic *get_head(){return head;}void find(Basic *a)//输入一个学号时,查询出此生的所有课程情况(Course) {int i;Basic *h=head;cout<<"请输入你想查的学号:";cin>>i;for(;a->next!=NULL;a=a->next){if(a->number==i){cout<<"学号:"<<i<<" ";cout<<"姓名:"<<a->name<<endl;break;}}for(;h->next!=NULL;h=h->next)if(h->number==i)h->display_1();}void Delete(int j)//删除,j表示学号{Basic *p1=head,*p2=head;int i=0;for(;p1->next!=NULL;){if(i==0&&p1->number==j)//处理头{head=p1->next;i=-1;//保证下次还可以删除头链}else if(p1->number==j)//处理尾{p2->next=p1->next;}p2=p1;p1=p1->next;i++;}}void delete_student(College &b)//当在 A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息(student){int i;cout<<"请输入你想删除的学生的学号:";cin>>i;Delete(i);b.Delete(i);}void taxis_mark()//综合成绩排序(Course){Basic *a=head;Basic *m[90],*t;int i,j,k,b;cout<<"升序-1 降序-2"<<endl;cin>>b;if(b==1)//升序{for(i=0;a->next!=NULL;i++){m[i]=a;a=a->next;}for(j=0;j<i;j++)for(k=j;k<i;k++){if(m[j]->mark>m[k]->mark){t=m[j];m[j]=m[k];m[k]=t;}}cout<<"按综合成绩升序排序为"<<endl;for(j=0;j<i;j++)m[j]->display();}else if(b==2)//降序{for(i=0;a->next!=NULL;i++){m[i]=a;a=a->next;}for(j=0;j<i;j++)for(k=j;k<i;k++){if(m[j]->mark<m[k]->mark){t=m[j];m[j]=m[k];m[k]=t;}}cout<<"按综合成绩降序排序为"<<endl;for(j=0;j<i;j++)m[j]->display();}}void taxis_credit()//学分排序(Course){Basic *a=head;Basic *m[90],*t;int i,j,k,b;cout<<"升序-1 降序-2"<<endl;cin>>b;if(b==1)//升序{for(i=0;a->next!=NULL;i++){m[i]=a;a=a->next;}for(j=0;j<i;j++)for(k=j;k<i;k++){if(m[j]->credit>m[k]->credit){t=m[j];m[j]=m[k];m[k]=t;}}cout<<"按学分升序排序为"<<endl;for(j=0;j<i;j++)m[j]->display();}else if(b==2)//降序{for(i=0;a->next!=NULL;i++){m[i]=a;a=a->next;}for(j=0;j<i;j++)for(k=j;k<i;k++){if(m[j]->credit<m[k]->credit){t=m[j];m[j]=m[k];m[k]=t;}}cout<<"按学分降序排序为"<<endl;for(j=0;j<i;j++)m[j]->display();}}void save() //保存函数{Basic *h=head;int i=-1;if(PL==0)s.open("A.txt",ios::out);else if(PL==1)s.open("B.txt",ios::out);for(;h->next!=NULL;h=h->next)h->display(s);s<<i<<endl;s.close();}private:ifstream f;ofstream s;Basic *head;//链表的头指针int ji;//计算插入的数int PL;//判断建立怎样的链表};int main(){int i,k[10];Course *c;College a(0),b(1);cout<<" ************************* 欢迎进入!**********************"<<endl;cout<<" *************************学籍管理系统**********************"<<endl;cout<<" ******** ********"<<endl;cout<<" ******** ********"<<endl;to:cout<<" ******** <1> 录入 <2> 查询 <3> 删除********"<<endl;cout<<" ******** ********"<<endl;cout<<" ******** <4> 排序 <5> 全部输出 <其他> 结束********"<<endl;cout<<" ******** ********"<<endl;cout<<"****************"<<endl;cout<<"***********************************************************"<<endl;cin>>i;if(i==1){c=new Course;c->input();b.Build(c);goto to;}else if(i==2){cout<<"1-学生基本情况查询 2-成绩查询"<<endl;cin>>k[0];if(k[0]==1){cout<<"1-学号查询 2-查询 3-宿舍查询"<<endl;cin>>k[1];if(k[1]==1)a.find_number();else if(k[1]==2)a.find_name();else if(k[1]==3)a.find_dom_number();goto to;}else if(k[0]==2)b.find(a.get_head());goto to;}else if(i==3){a.delete_student(b);goto to;}else if(i==4){cout<<"1-综合成绩排序 2-实得学分排序"<<endl;cin>>k[2];if(k[2]==2)b.taxis_credit();else if(k[2]==1)b.taxis_mark();goto to;}else if(i==5){cout<<"学号性别宿舍 "<<endl;a.display();cout<<endl;cout<<"学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分"<<endl;b.display();goto to;}return 0;}4、遇到问题及解决方案本程序是运用类编写但与平时作业不同的是难度较大,涉及容较广。
c 课程设计学生学籍管理系统一、教学目标本课程旨在让学生掌握学生学籍管理系统的基本概念、设计与实现。
通过本课程的学习,学生将能够:1.理解学生学籍管理系统的需求和功能。
2.掌握学生学籍管理系统的数据库设计。
3.学会使用编程语言实现学生学籍管理系统的基本功能。
4.培养学生的团队协作能力和问题解决能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.学生学籍管理系统的需求分析:介绍学生学籍管理系统的功能和需求,使学生了解系统的设计背景。
2.数据库设计:教授学生如何设计学生学籍管理系统的数据库,包括表结构的设计和关系的建立。
3.系统实现:教授学生如何使用编程语言实现学生学籍管理系统的基本功能,包括数据的增删改查等。
4.测试与优化:介绍如何对实现的学生学籍管理系统进行测试和优化,以提高系统的稳定性和性能。
5.案例分析:分析一些实际的学生学籍管理系统案例,使学生更好地理解系统的设计和实现过程。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式进行教学:1.讲授法:教师讲解学生学籍管理系统的基本概念、需求分析和数据库设计等知识点。
2.案例分析法:分析实际案例,让学生更好地理解学生学籍管理系统的设计和实现过程。
3.实验法:学生动手实现学生学籍管理系统,培养学生的实际操作能力。
4.小组讨论法:学生分组讨论问题,培养学生的团队协作能力和问题解决能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:为学生提供学生学籍管理系统的基本概念、需求分析和数据库设计等知识点的教材。
2.参考书:提供一些与学生学籍管理系统相关的参考书,供学生课后自主学习。
3.多媒体资料:制作一些与课程相关的多媒体资料,如PPT、视频等,以便于学生更好地理解课程内容。
4.实验设备:为学生提供必要的实验设备,如计算机、数据库服务器等,以便于学生动手实践。
五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。
c语言学生管理系统课程设计报告C语言学生管理系统课程设计报告一、引言C语言学生管理系统是一款用于学校或教育机构管理学生信息和课程安排的软件系统。
本报告将详细介绍该系统的设计与实现过程,并对系统的功能、模块、算法等进行全面的阐述和分析。
二、系统需求分析1. 功能需求该系统应具备以下主要功能:(1)学生信息管理:包括学生基本信息的添加、修改、删除和查询等操作;(2)课程信息管理:包括课程的添加、修改、删除和查询等操作;(3)成绩管理:包括成绩的录入、查询和统计等操作;(4)学生选课管理:包括学生选课、退课和查询选课情况等操作;(5)教师信息管理:包括教师基本信息的添加、修改、删除和查询等操作;(6)用户权限管理:包括用户登录、权限分配和密码修改等操作;(7)系统设置:包括数据库备份、恢复和系统参数设置等操作。
2. 性能需求该系统应具备良好的性能,能够快速响应用户的操作请求,同时能够支持多用户同时访问。
三、系统设计1. 系统架构该系统采用客户端-服务器架构,客户端通过网络连接到服务器,服务器负责处理客户端发送的请求并返回相应结果。
2. 系统模块(1)学生信息模块:用于管理学生的基本信息,包括学号、姓名、性别、年龄、班级等。
(2)课程信息模块:用于管理课程的基本信息,包括课程编号、课程名称、授课教师、学分等。
(3)成绩管理模块:用于录入学生的成绩,并进行成绩查询和统计。
(4)选课管理模块:用于学生的选课和退课操作,同时提供选课情况的查询功能。
(5)教师信息模块:用于管理教师的基本信息,包括教师编号、姓名、性别、职称等。
(6)用户权限管理模块:用于管理系统用户的登录、权限分配和密码修改等操作。
(7)系统设置模块:用于进行数据库备份、恢复和系统参数设置等操作。
3. 数据库设计该系统采用关系型数据库存储数据,设计以下几个表:(1)学生表:包括学号、姓名、性别、年龄、班级等字段;(2)课程表:包括课程编号、课程名称、授课教师、学分等字段;(3)成绩表:包括学号、课程编号、成绩等字段;(4)选课表:包括学号、课程编号等字段;(5)教师表:包括教师编号、姓名、性别、职称等字段;(6)用户表:包括用户名、密码、权限等字段。
目录1 前言 (1)2 需求分析 (1)2.1 课程设计目的 (1)2.2 课程设计任务 (1)2.3 设计环境 (1)2.4 开发语言 (2)3 分析和设计 (2)3.1 模块设计 (3)3.2 系统流程图 (3)3.3 主要模块的流程图 (4)4 具体代码实现 (6)5 课程设计总结 (21)5.1 程序运行结果 (21)5.2 课程设计体会 (27)参考文献 (28)致谢 (28)1 前言现代科学飞速发展,世界也不断的变化,人类的生活随着科技的发展也发生着惊天动地的变化。
作为新时代的大学生,我们应该努力学习科学文化知识,以适应社会的发展要求。
以现代化的科学知识为祖国做贡献。
计算机C语言课程设计是一门实践性很强的课程,因此,我们可以从这里出发,将实践教学与理论教学达到密切结合。
根据实际题目,要求我小组编写一个程序来,用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。
通过一个结构体数组来存放输入的每一位同学的信息(包括学号,姓名,性别,年龄,籍贯,系别,专业,班级),然后将其信息存入文件中。
输入一个学号查询该同学的信息,并显示在屏幕上。
2 需求分析2.1 课程设计目的用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。
2.2 课程设计任务(1)系统以菜单方式工作。
(2)登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息;(3)删除已知学号的学生信息;(4)查找已知学号的学生信息;(5)显示同一系学生信息和统计人数;(6)显示所有学生信息和统计人数人数;2.3 设计环境(1)WINDOWS 2000/2003/XP/7/Vista系统(2)Visual C++或TC集成开发环境2.4 开发语言C语言3 分析和设计分析:用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。
(1)以系统以菜单方式工作,所以要有一个选项菜单。
printf(" **************************************** \n ");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(" **************************************** \n ");输出一个菜单。
(2)登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级定义函数ZHUCE(),用来输入学生信息,将信息存入123.txt中,int i=1; struct student temp;FILE *fp; fp=fopen("F://123.txt","w"); /*指针指向文件123.txt*/void save( struct student student[]){FILE *fp=NULL;fp=fopen("F://123.txt","ab+");fwrite(student,sizeof(struct student),1,fp); fclose(fp);/*将信息保存入123.txt中*/(3)按学号查找学生信息printf("\n 请输入要查找学生信息的学号: ");gets(tempXUEHAO);while(feof(fp)==0){ fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",&temp.XUEHAO,&temp.XIN GMING,&temp.XINGBIE,&temp.NIANLING,&temp.JIGUAN,&temp.ZHUANYE,&temp.BANJI,&temp.XIBIE);if(strcmp(tempXUEHAO,temp.XUEHAO)==0)/*根据输入的学号从文件中诸葛查找符合条件的*/…………… ..3.1 模块设计定义结构体类型struct student 表示学生信息(包括:学号,姓名,性别,年龄,籍贯,系别,专业,班级),定义一个结构体数组stud[],用来存放学生的信息,在F 盘建一123.txt用储存学生信息。
定义函数CAIDAN(),用来输出菜单。
定义函数ZHUCE(),用来输入学生信息,将信息存入123.txt中。
定义函数XIUGAI(),用来修改学生信息,将信息存入123.txt中。
定义函数SHANCHU(),用来删除学生信息。
定义函数CHAZHO(),用来查找学生信息,可以通过学号查找、姓名超找。
……………3.2 系统流程图系统流程图3.3 主要模块的流程图注册学生信息4 具体代码实现#include <stdio.h>#include <string.h>#include <conio.h>#include <malloc.h>#include <stdlib.h>#define N 100struct student{char XUEHAO[20];char XINGMING[10];char XINGBIE[4];char NIANLING[10];char JIGUAN[10];char ZHUANYE[10];char BANJI[6];char XIBIE[20];}student;void CAIDAN();void ZHUCE();void XIUGAI();void SHANCHU();void del_XUEHAO(FILE *fp); void del_XINGMING(FILE *fp); void CHAZHAO();void sch_XUEHAO(FILE *fp); void sch_XINGMING(FILE *fp); void TONGJI();void XIANSHI();void TIANJIA();void save( struct student student[]); main(){ char choose,yes_no;do{ CAIDAN();printf("\n 请输入序号: (1~8) ");choose=getch();system("cls");switch(choose){case'1': printf(" %c",choose);ZHUCE();break;case'2': printf(" %c",choose);XIUGAI();break;case'3': printf(" %c",choose);SHANCHU();break;case'4': printf(" %c",choose);TIANJIA();break;case'5': printf(" %c",choose);CHAZHAO();break;case'6': printf(" %c",choose);TONGJI();break;case'7': printf(" %c",choose);XIANSHI();break;case'8': break;default:printf("\n %c 序号不对!\n",choose);}if(choose=='8')break;printf("\n 要继续选择吗? (Y/N) \n");do{ yes_no=getch(); printf(" %c",yes_no);}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');}while(yes_no=='Y'||yes_no=='y');}void CAIDAN(){system("cls");printf("**************************************** \n ");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(" **************************************** \n ");}/*定义学生信息注册的函数*/void ZHUCE(){ int i=1;struct student temp;FILE *fp;fp=fopen("F://123.txt","w");if(fp==NULL){ printf("\n 打开文件失败! \n");return; }printf("\n 请输入第1个学生信息:\n");printf(" 学号(用#结束输入): ");do{ gets(temp.XUEHAO);}while(strcmp(temp.XUEHAO," ")==0);printf(" 姓名(用#结束输入): ");gets(temp.XINGMING);printf(" 性别(用#结束输入): ");gets(temp.XINGBIE);printf(" 年龄(用#结束输入): ");gets(temp.NIANLING);printf(" 籍贯(用#结束输入): ");gets(temp.JIGUAN);printf(" 专业(用#结束输入): ");gets(temp.ZHUANYE);printf(" 班级(用#结束输入): ");gets(temp.BANJI);printf(" 系别(用#结束输入): ");gets(temp.XIBIE);while(temp.XUEHAO[0]!='#'&&temp.XINGMING[0]!='#'&&temp.XINGBI E[0]!='#'&&temp.NIANLING[0]!='#'&&temp.JIGUAN[0]!='#'&&temp.ZHU ANYE[0]!='#'&&temp.BANJI[0]!='#'&&temp.XIBIE[0]!='#'&&temp.XIBIE ){ fprintf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",temp.XUEHAO,te mp.XINGMING,temp.XINGBIE,temp.NIANLING,temp.JIGUAN,temp.ZHU ANYE,temp.BANJI,temp.XIBIE,temp);i++;printf("\n 请输入第%d 个学生信息:\n ",i);printf(" 学号(用#结束输入): ");do{ gets(temp.XUEHAO);}while(strcmp(temp.XUEHAO," ")==0);printf(" 姓名(用#结束输入): ");gets(temp.XINGMING);printf(" 性别(用#结束输入): ");gets(temp.XINGBIE);printf(" 年龄(用#结束输入): ");gets(temp.NIANLING);printf(" 籍贯(用#结束输入): ");gets(temp.JIGUAN);printf(" 专业(用#结束输入): ");gets(temp.ZHUANYE);printf(" 班级(用#结束输入): ");gets(temp.BANJI);printf(" 系别(用#结束输入): ");gets(temp.XIBIE);}student=temp;save(&temp);fclose(fp);}/*定义保存函数*/void save( struct student student[]){FILE *fp=NULL;fp=fopen("F://123.txt","ab+");fwrite(student,sizeof(struct student),1,fp);fclose(fp);}/*定义查找学生信息的函数*/void CHAZHAO(){ char c;FILE *fp;fp=fopen("F://123.txt","r");if(fp==NULL){ printf("\n 打开文件失败! \n");return; } printf("\n 按学号查找( 1 ),还是按姓名查找( 2 )? ");c=getch();putch(c);if(c=='1') sch_XUEHAO(fp);else if(c=='2') sch_XINGMING(fp);else printf("\n 非法字符!\n");fclose(fp);}/*定义按学号查找学生信息的函数*/void sch_XUEHAO(FILE *fp){ int flag=0,n=0;char tempXUEHAO[20];struct student temp;printf("\n 请输入要查找学生信息的学号: ");gets(tempXUEHAO);while(feof(fp)==0){ fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",&temp.XUEHAO, &temp.XINGMING,&temp.XINGBIE,&temp.NIANLING,&temp.JIGUAN, &temp.ZHUANYE,&temp.BANJI,&temp.XIBIE);if(strcmp(tempXUEHAO,temp.XUEHAO)==0){ if(flag==0)printf(" 学号姓名姓别年龄籍贯专业班级系别\n");printf("%5s%10s%10s%10s%10s%10s%10s%10s\n",temp.XUEHAO,temp.X INGMING,temp.XINGBIE,temp.NIANLING,temp.JIGUAN,temp.ZHUANY E,temp.BANJI,temp.XIBIE);flag=1;}n++;}if(n==0) printf("\n 文件中无此信息!\n");else if(flag==0) printf("\n 文件中无此人!\n");}/*定义按姓名查找学生信息的函数*/void sch_XINGMING(FILE *fp){ int flag=0,n=0;char tempXINGMING[10];struct student temp;printf("\n 请输入要查找学生信息的姓名: ");gets(tempXINGMING);while(feof(fp)==0){ fscanf(fp, "%5s%10s%10s%10s%10s%10s%10s%10s\n",&temp.XUEHAO,&temp.XI NGMING,&temp.XINGBIE,&temp.NIANLING,&temp.JIGUAN,&temp.ZH UANYE,&temp.BANJI,&temp.XIBIE);if(strcmp(tempXINGMING,temp.XINGMING)==0) { if(flag==0) printf(" 学号姓名姓别年龄籍贯专业班级系别\n");printf("%5s%10s%10s%10s%10s%10s%10s%10s\n",temp.XUEHAO,temp.X INGMING,temp.XINGBIE,temp.NIANLING,temp.JIGUAN,temp.ZHUANY E,temp.BANJI,temp.XIBIE);flag=1;}n++;}if(n==0) printf("\n 文件中无此信息!\n");else if(flag==0) printf("\n 文件中无此人!\n");}/*定义删除学生信息的函数*/void SHANCHU(){ char c;FILE *fp;fp=fopen("F://123.txt","r");if(fp==NULL){ printf("\n 文件打开失败!\n ");return; }printf("\n 按学号删除( 1 ),还是按姓名删除( 2 )? ");c=getch();putch(c);if(c=='1') del_XUEHAO(fp);else if(c=='2') del_XINGMING(fp);else printf("\n 非法字符!\n");}/*定义按学号删除学生信息的函数*/void del_XUEHAO(FILE *fp){ char tempXUEHAO[20];int n=0,i=0,k;struct student stu[N];while(feof(fp)==0){ fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,st u[i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZHUA NYE,stu[i].BANJI,stu[i].XIBIE);i++;n++;}fclose(fp);printf("\n 请输入要删除的学生信息的学号:");scanf("%s",tempXUEHAO);printf(" 删除成功! ");for(i=0;i<n;i++)if(strcmp(tempXUEHAO,stu[i].XUEHAO)==0)break;if(i<n)for(k=i;k<n;k++)stu[k]=stu[k+1];else printf("\n 无此人!\n");fp=fopen("F://123.txt","w");if(fp==NULL){ printf("\n 文件打开失败!\n");return; }for(i=0;i<n-1;i++)fprintf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu [i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZHU ANYE,stu[i].BANJI,stu[i].XIBIE);}/*定义按姓名删除学生信息的函数*/void del_XINGMING(FILE *fp){ char tempXINGMING[10];int n=0,i=0,k;struct student stu[N];while(feof(fp)==0){ fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,st u[i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZH UANYE,stu[i].BANJI,stu[i].XIBIE);i++;n++;}fclose(fp);printf("\n 请输入要删除的学生信息的姓名:");scanf("%s",tempXINGMING);printf(" 删除成功! ");for(i=0;i<n;i++)if(strcmp(tempXINGMING,stu[i].XINGMING)==0)break;if(i<n)for(k=i;k<n;k++)stu[k]=stu[k+1];else printf("\n 无此人!\n");fp=fopen("G://123.txt","w");if(fp==NULL){ printf("\n 文件打开失败!\n");return;}for(i=0;i<n-1;i++)fprintf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu [i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZHU ANYE,stu[i].BANJI,stu[i].XIBIE);}/*定义添加学生信息的函数*/void TIANJIA(){ char c;int n=0,i=0;struct student temp,stu[N];FILE *fp;fp=fopen("F://123.txt","r");if(fp==NULL){ printf("\n 打开文件失败!\n"); return; }while(feof(fp)==0){ fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,st u[i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZH UANYE,stu[i].BANJI,stu[i].XIBIE);i++;n++;}fclose(fp);for(i=0;i<n;i++)printf("\n %s %s %s %s %s %s %s %s\n",stu[i ].XUEHAO,stu[i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGU AN,stu[i].ZHUANYE,stu[i].BANJI,stu[i].XIBIE);do{ printf("\n 请输入新学生信息的学号:");do{ scanf("%s",temp.XUEHAO); }while(strcmp(temp.XUEHAO," ")==0);printf(" 请输入新学生信息的姓名:");scanf("%s",temp.XINGMING);printf(" 请输入新学生信息的性别:");scanf("%s",temp.XINGBIE);printf(" 请输入新学生信息的年龄:");scanf("%s",temp.NIANLING);printf(" 请输入新学生信息的籍贯:");scanf("%s",temp.JIGUAN);printf(" 请输入新学生信息的专业:");scanf("%s",temp.ZHUANYE);printf(" 请输入新学生信息的班级:");scanf("%s",temp.BANJI);printf(" 请输入新学生信息的系别:");scanf("%s",temp.XIBIE);for(i=0;i<n;i++)if(strcmp(temp.XUEHAO,stu[i].XUEHAO)==0){ printf("\n 学号重复,要重新输入吗(Y/N)?");do{ c=getch(); putch(c);}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');putchar('\n');break;}if(i==n) { stu[i]=temp; break; }}while(c=='Y'||c=='y');fp=fopen("G://123.txt","w");if(fp==NULL){ printf("\n 文件打开失败!\n"); return; }for(i=0;i<=n;i++)fprintf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu [i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZHU ANYE,stu[i].BANJI,stu[i].XIBIE);fclose(fp);}/*定义修改学生信息的函数*/void XIUGAI(){ char c;int n=0,i=0;struct student *find,temp,stu[N],*p;FILE *fp;fp=fopen("F://123.txt","rb");if(fp==NULL){ printf("\n 打开文件失败!\n"); return; }while(feof(fp)==0){ fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,st u[i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZH UANYE,stu[i].BANJI,stu[i].XIBIE);i++;n++;}fclose(fp);if(n==0){ printf("\n 文件中无此信息!\n");return;}printf("\n 请输入要修改的学生信息的学号: ");scanf("%s",temp.XUEHAO);for(p=stu;p<stu+n;p++)if(strcmp(temp.XUEHAO,p->XUEHAO)==0){ find=p; break; }if(p==stu+n){ printf("\n 无此信息!\n");return; }do{ printf("\n 请输入新学生信息的学号:");do{ scanf("%s",temp.XUEHAO); }while(strcmp(temp.XUEHAO," ")==0);printf(" 请输入新学生信息的姓名:");scanf("%s",temp.XINGMING);printf(" 请输入新学生信息的性别:");scanf("%s",temp.XINGBIE);printf(" 请输入新学生信息的年龄:");scanf("%s",temp.NIANLING);printf(" 请输入新学生信息的籍贯:");scanf("%s",temp.JIGUAN);printf(" 请输入新学生信息的专业:");scanf("%s",temp.ZHUANYE);printf(" 请输入新学生信息的班级:");scanf("%s",temp.BANJI);printf(" 请输入新学生信息的系别:");scanf("%s",temp.XIBIE);for(p=stu;p<stu+n;p++)if(strcmp(temp.XUEHAO,p->XUEHAO)==0&&p!=find){ printf("\n 学号重复,要重新输入吗(Y/N)?");do{ c=getch();putch(c);}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');putchar('\n');break;}if(p==stu+n){ *find=temp; break; }}while(c=='Y'||c=='y');fp=fopen("123.dat","wb");if(fp==NULL) { printf("\n 打开文件失败!\n "); return; }for(p=stu;p<stu+n;p++)fprintf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",p->XUEHAO,p->X INGMING,p->XINGBIE,p->NIANLING,p->JIGUAN,p->ZHUANYE,p->XI BIE,p->BANJI);printf (" 修改成功! ");fclose(fp);}/*定义显示学生信息的函数*/void XIANSHI(){ int n=0,i=0;struct student stu[N];FILE *fp;fp=fopen("F://123.txt","r");if(fp==NULL){ printf("\n 打开文件失败!\n"); return; }printf("\n\n 学号姓名姓别年龄籍贯专业班级系别\n");while(feof(fp)==0){ fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,st u[i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZH UANYE,stu[i].BANJI,stu[i].XIBIE); ++i; ++n; }fclose(fp);if(n==0)printf("\n 文件中无此信息!\n");else { for(i=0;i<n;i++)printf("%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i]. XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZHUA NYE,stu[i].BANJI,stu[i].XIBIE);printf("\n\n 文件中共有%d 个信息!\n",n);}}/*定义在同一个系别的学生人数的函数*/void TONGJI(){ int i=0,n=0,k=0;char tempXIBIE[10];struct student stu[N];FILE *fp;fp=fopen("F://123.txt","r");if(fp==NULL){ printf("\n 打开文件失败!\n"); return; }while(feof(fp)==0){fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",&stu[i].XUEHAO, &stu[i].XINGMING,&stu[i].XINGBIE,&stu[i].NIANLING,&stu[i].JIGUAN, &stu[i].ZHUANYE,&stu[i].XIBIE,&stu[i].BANJI);i++;n++; }fclose(fp);printf("\n\n 请输入系别名称: ");scanf("%s",tempXIBIE);printf("\n\n 学号姓名姓别年龄籍贯专业班级系别\n");for(i=0;i<n;i++)if(strcmp(tempXIBIE,stu[i].XIBIE)==0){printf("\n%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[ i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZHU ANYE,stu[i].BANJI,stu[i].XIBIE);k++;}printf("\n\n 共有%d个学生在这个学院!\n",k);}5 课程设计总结5.1 程序运行结果菜单注册学生信息显示所有学生信息和统计人数显示同一系学生信息和统计人数修改学生信息添加学生学信息查找学生信息5.2 课程设计体会通过这次的C语言课程设计,我获益匪浅。