C语言课程设计-学生信息管理系统
- 格式:doc
- 大小:38.00 KB
- 文档页数:23
*题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作源代码:#include<stdio.h>#include<ctype.h>#include<stdlib.h>#include<string.h>struct Student{int cls;char nam[10];char num[10];int chinese;int english;int computer;int math;}stud1[100],stud2[100];{char a;while(a>'7'||a<'0'){system("cls");printf(" 欢迎使用学生成绩管理系统\n");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(" 0.储存学生资料并退出系统\n");printf("********************************************************************* *\n");printf("请选择(0-7)\n");a=getchar();}return(a-'0');}/******************************************************************************int Input(Student stud[],int n) //输入数据(第一学期)。
c语言课程设计信息管理一、教学目标本节课的教学目标是让学生掌握C语言在信息管理方面的基本概念和应用,包括数据结构、算法和程序设计等方面的知识。
具体来说,知识目标要求学生了解C语言的基本语法、数据类型、运算符、控制语句和函数等;技能目标要求学生能够使用C语言编写简单的信息管理程序,如员工信息管理系统、图书管理系统等;情感态度价值观目标要求学生培养对编程的兴趣和热情,提高自主学习和解决问题的能力。
二、教学内容本节课的教学内容主要包括C语言的基本语法、数据类型、运算符、控制语句和函数等。
具体安排如下:1.引言:介绍C语言的发展历程、特点和应用领域。
2.数据类型和变量:讲解整型、浮点型、字符型等数据类型,以及变量的声明和使用。
3.运算符:介绍算术运算符、关系运算符、逻辑运算符等,并通过示例演示其用法。
4.控制语句:讲解顺序结构、分支结构和循环结构,以及相应的控制语句。
5.函数:介绍函数的定义、声明和调用,讲解函数的参数传递和返回值。
6.实例讲解:通过实际案例,演示如何使用C语言编写简单的信息管理程序。
三、教学方法为了激发学生的学习兴趣和主动性,本节课将采用多种教学方法,如讲授法、讨论法、案例分析法和实验法等。
具体安排如下:1.讲授法:讲解C语言的基本语法、数据类型、运算符、控制语句和函数等知识点。
2.讨论法:学生进行小组讨论,分享学习心得和编程经验。
3.案例分析法:分析实际案例,让学生了解C语言在信息管理方面的应用。
4.实验法:安排课后的编程实践,让学生动手编写简单的信息管理程序。
四、教学资源为了支持教学内容和教学方法的实施,本节课将准备以下教学资源:1.教材:《C语言程序设计》等相关教材,为学生提供理论知识的学习材料。
2.参考书:提供一些拓展阅读的资料,帮助学生深入了解C语言的编程技巧。
3.多媒体资料:制作PPT课件,展示C语言的基本语法和示例代码。
4.实验设备:为学生提供计算机和编程环境,让他们能够实际操作和实践。
#include ”stdio.h”#include ”string.h”#include "stdlib.h"#include "conio.h"#include ”string.h”#include "fcntl。
h"typedef struct student{int num;char grade[10];char classroom[10];char name[10];float score_math;float score_chinese;float score_english;float average;float sum;}STU;typedef struct Node{STU data;struct Node *next;}*linklist;void menu();char *loginpassword(char password[],int n);//登录验证密码函数声明//linklist createstulist(linklist head);//创建学生链表即学生信息录入函数声明// void printstulist(linklist head);//学生信息输出函数声明//void searchstu_namelist(linklist head);//学生信息查询函数声明(按姓名)// void searchstu_numlist(linklist head);//学生信息查询函数声明(按学号) linklist modifystulist(linklist head);//学生信息修改函数声明//linklist delatestulist(linklist head);//学生信息删除函数声明//void savestulist(linklist head);//学生信息保存到文件函数声明// linklist loadstulist();//从文件中读取学生信息函数声明// void sortstulist(linklist head); //成绩排名函数(按年级)声明//void sort(STU stu[],int flag); //学生分班函数声明//void sortstuclass(linklist head); //成绩排名函数(按班级)声明////*************************************//void main(){char admin[]=”zhangqiong";char password[]=”123456";char person[20];char password1[10];int i;printf(”********************************************************************************\n”);printf("\t\t **********欢迎来到学生成绩管理系统**********\n\n");printf(”********************************************************************************\n\n”);printf(”\t\t\t\t用户登录\n\n\n\n");for(i=0;i<3;i++){printf("用户名:”);gets(person);fflush(stdin);printf(”\n\n\n”);loginpassword(password1,10);printf("\n\n\n”);if(strcmp(admin,person)==0&&strcmp(password,password1)==0){printf(”\t\t\t\t成功登录,亲!\n”);printf("\n\n”);printf(”按任意键继续!”);getch();menu();break;}elseprintf("\t用户名或者密码输入错误\n”);}if(i==3)printf("\t对不起,您今天输入次数太多,已被强制退出!\n”);}//**********************************************************////**********************************************************//char *loginpassword(char password[],int n)//登录密码函数,隐藏密码可见//{int i=0;int m=0;char ch;printf("用户密码:”);while((ch=getch())!='\r’&&m〈n){password[i++]=ch;printf(”*");}password[i]='\0';return password;}//***************************************************// void menu()//主界面函数//{system("cls");linklist L;L=(linklist)malloc(sizeof(Node));L—>next=NULL;int ch;do{printf(”\t -——-----—-******——--——--—---******—————-————-******-—-—-—-—-—\n\n");printf("\t\t\t**********学生成绩管理系统***********\n\n”);printf("\t ——----——--******-—-——------—******—---———--—-******—---———-——\n\n\n\n\n");printf("\t1。
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.掌握课程设计管理系统的基本概念和原理。
2.理解C语言在课程设计管理系统中的应用。
3.熟悉常用的数据结构和算法。
技能目标包括:1.能够使用C语言进行程序设计。
2.能够运用常用的数据结构和算法解决实际问题。
3.能够独立完成课程设计管理系统的开发和调试。
情感态度价值观目标包括:1.培养学生的团队合作意识和沟通能力。
2.培养学生的自主学习能力和探究精神。
3.培养学生对C语言和课程设计管理系统的兴趣和热情。
二、教学内容本章节的教学内容主要包括C语言的基本语法、数据结构、算法和课程设计管理系统的基本概念和原理。
具体来说,教学大纲如下:1.C语言的基本语法:数据类型、变量、运算符、表达式、语句等。
2.数据结构:数组、链表、栈、队列、树、图等。
3.算法:排序算法、查找算法、动态规划算法等。
4.课程设计管理系统的基本概念和原理:系统结构、模块划分、功能实现等。
三、教学方法为了实现教学目标,本章节将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
1.讲授法:通过教师的讲解,使学生掌握C语言和课程设计管理系统的基本概念和原理。
2.讨论法:通过小组讨论,培养学生的团队合作意识和沟通能力。
3.案例分析法:通过分析实际案例,使学生了解课程设计管理系统的应用和实现方法。
4.实验法:通过实际操作,培养学生运用C语言进行程序设计的能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备以下教学资源:1.教材:《C语言程序设计》等。
2.参考书:《C语言编程实践》、《数据结构与算法》等。
3.多媒体资料:课件、教学视频等。
4.实验设备:计算机、网络设备等。
以上教学资源将有助于丰富学生的学习体验,提高学生的实际操作技能和解决实际问题的能力。
c语言课程设计学生成绩管理系统报告一、教学目标本课程旨在通过C语言编程实现一个学生成绩管理系统,让学生掌握C语言的基本语法、数据结构、函数、文件操作等知识,培养学生编写程序解决实际问题的能力。
具体目标如下:1.知识目标:(1)掌握C语言的基本语法和编程技巧;(2)了解数据结构的基本概念,学会使用数组、链表等数据结构;(3)熟悉函数的定义和调用,掌握函数的参数传递和返回值;(4)掌握文件操作,了解文件读写的原理和方法。
2.技能目标:(1)能够独立编写C语言程序,解决实际问题;(2)具备良好的编程习惯,代码结构清晰、可读性强;(3)掌握调试和优化程序的方法,提高程序的运行效率;(4)学会使用版本控制系统,如Git,进行代码管理和协作开发。
3.情感态度价值观目标:(1)培养学生的编程兴趣,激发学习C语言的积极性;(2)培养学生团队协作精神,提高沟通与协作能力;(3)培养学生的问题解决能力,培养创新意识和持续学习的态度;(4)培养学生具有良好的职业道德,遵守编程规范,尊重他人代码。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数、文件操作等。
具体安排如下:1.C语言基本语法:介绍C语言的数据类型、运算符、表达式、控制语句等基本概念;2.数据结构:讲解数组、链表、栈和队列等数据结构的基本原理和应用;3.函数:讲解函数的定义、声明、调用,以及函数的参数传递和返回值;4.文件操作:介绍文件的概念、文件读写的方法和技巧。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以激发学生的学习兴趣和主动性。
具体方法如下:1.讲授法:通过讲解C语言的基本语法、数据结构、函数和文件操作等知识,使学生掌握课程的基本概念和编程技巧;2.案例分析法:分析实际编程案例,让学生学会将理论知识应用于实际问题解决;3.实验法:安排上机实验,让学生动手编写程序,培养实际编程能力;4.小组讨论法:学生进行小组讨论,培养团队协作和沟通能力。
C语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息。
二、学生成绩查询: 输入一个学号,在文件中查找此学生, 若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息。
同时也可以全部把各科的平均成绩,最高和最低分输出.三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来.四、输出全部学生信息和全部学生成绩。
五、退出系统.六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。
总体设计一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。
2、查询模块:可用stu *lookdata(stu *p1)来实现。
找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
3、插入模块:可用insert( )函数来实现。
其中通过学号的大小来比较的,并且以此来排序.4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage()、maverage()、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。
5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
二、系统主模块结构图:详细设计一、界面设计此系统界面采用图形和数字化菜单设计。
主界面设计如下:学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct student{char name[MAX];int num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student *next;}程序代码://原始密码是123456#include"stdio.h”#include"stddef.h"#include"stddef。
C语言大型作业实践报告计算机1001制作者:李菁华张兆丰秦恒加2011年6月题目:选修课程管理系统要求:假定有N门选修课,每门课有课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等信息。
学生可按要求(如总学分不能少于20学分)选课。
课程信息维护,如录入、修改、删除等,课程信息用文件保存。
课程信息浏览?输出。
学生选课功能。
查询功能包括:按学分、课程性质、学生等查询。
统计功能。
统计各门课程的选修人数。
本系统要有通用性、界面美观、操作方便。
要考虑系统安全。
课程信息录入系统选修课程信息录入选修课程信息保存主程序目录选择总体设计思路(流程图):学生选课系统课程信息读入学生信息输入选课系统数据保存选修课数据维护系统添加修改删除以word格式输出密码系统密码验证系统权限限制系统密码对退出程序密码对选修课程信息查找按各种类型查找密码错3次以上具体算法流程设计思路(流程图):主程序目录选择1.学生选课系统;2.选修课程信息输出;3.选修课程信息查找;4.管理员选项;5.退出系统。
管理员选项密码验证系统读入系统时间,通过强制转换成unsigned long int型数据作为初始密码用户输入密码(若是管理员会拥有密码钥匙,得出现在的密码,该密码每分钟都会变化)密码正确进入管理员管理界面,密码不正确重新输入密码输入错误3次以上 12 3学生选课系统选修课程信息以word2003形式输出返回主菜单选修课程信息查找选修课程信息从文件内读入输入按什么查找1.课程编号;2.课程名;3.课程种类;4.总课时;5.教学课时;6实验课时;7.学分;8.开课学期;9.已选人数。
输入查找的关键字从文件内读入的课程信息与关键字逐一对比,完全匹配输出;查找完毕学生信息输入课程信息浏览不选少于这门20分选课系统课选课成功判断学分是否大于20分大于20分结束选课选课信息储存退出程序管理员模块管理员模块 3目录选择1.学生选课系统;2.选修课程信息管理系统;3.退出系统12 5学生选课系统二级目录选择1.新建选修课程信息;2.管理选修课程信息;3.统计每门课程选择人数;4.选修课程信息输出;5.回到主菜单。
课程设计课程名称C语言程序课程设计题目名称学生信息管理系统设计_____学生学院_自动化学院_______________专业班级__自动化X__________________ 学号__311100XXXX______________ 学生姓名_____________________指导教师2013年10月20日广东工业大学课程设计任务书题目名称学生信息管理系统设计____学生学院___自动化学院____________专业班级___自动化X_______________学号___3111000XXX____________学生姓名___谢XX_________________1.目的与要求:学生信息管理系统设计学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。
试设计一学生信息管理系统,使之能提供以下功能:1.系统以菜单方式工作2.学生信息录入功能---输入3.学生信息浏览功能---输出4.查询、排序功能---算法按学号查询按姓名查询5.学生信息的删除与修改(可选项)2.总体设计:程序设计组成框图学生信息录入学生信息浏览3>参数说明editname(int n)、editage(int n)、editsex(int n) 、editbir(int n) 、editadd(int n) 、edittel(int n)、editemail(int n)、last(int n)、edit(int n)、del(int n)、editpr(int n) 函数中的n都为检索中确定的学生数组下标。
4.调试与测试:1>调用pr2()函数(检索界面)一闪而过。
解决方法:添加getchar()语句使程序暂停。
2>无法有效的控制输出函数循环终止。
解决方法:添加全局变量“stunum”,使用该全局变量来记录学生总数,从而控制输出循环的次数。
3>查询函数数据量过多时同时输出,先输出的内容无法查看,或需用户自行查看。
一、实践的目的和要求加深对《C语言》课程所学知识的理解,进一步巩固C语言语法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。
二、实践内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。
进一步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。
三、实践任务1.欢迎画面2.学生成绩管理系统(自己设计界面)3.异或加密与解密(1)文件加密(2)文件解密说明:将某一已知文件的内容以字符形式读出,与密钥(用户从键盘输入)的对应字符进行异或操作即可,解密同样如此。
如:设原文为ab1234,密钥为56,则有ab1234565656按二进制进行异或操作即可得到密文(乱码)。
4.移位加密与解密(1)文件加密(2)文件解密说明:将某一已知文件的内容(限于英文字母)以字符形式读出,根据密钥k(用户从键盘输入)将对应字符进行移位操作即可,解密时移动方向相反。
如:设原文为abcdef,密钥为5,则有abcdef 每个字母按字母表向后移动位(注:z后接a)fghijkl 可得到密文(乱码)。
5.辅助运算(1)整数N模m的乘法逆t要求:输入整数N和m,求出t,若t不存在,给出信息。
提示:这三个数满足:N*t%m=1,使用穷举法。
例如:当N为11,m为26时,由于(11×19)%26=1,所以11模26的乘法逆为19。
(2)统计字母个数要求:输入一段英文字母,统计各个字母的个数,并按个数从大到小排序输出。
提示:字母大小写等价。
输出格式为:字母:个数。
(3)OTP加密要求:输入同等长度的原文x和密钥k(英文字母),根据公式c=(x+k) %26 得到密文,并输出。
提示:将26个字母按0~25编号,将原文字母和对应位置的密钥字母的编号按上述公式进行计算后得到一个新的字母。
南京工程学院课程设计说明书(论文)题目学生信息管理系统课程名称高级语言程序设计(C)院(系、部、中心)通信工程学院专业电子信息工程班级电信082学生姓名***学号**设计地点****指导教师** ______目录一、课程设计任务(一)前言本课程是继《高级语言程序设计(C)》课程之后,训练学生综合运用本课程知识,结合实际系统运用C语言进行系统设计以及调试,加深对本课程的理解,提高学生综合应用知识的能力、分析问题、解决问题的能力和利用C语言进行综合系统设计的实践技能。
学C语言程序设计已有1学期了,对C语言的基本概念和常用算法也有了一定的了解,平时虽然也做过一些练习,也看了不少程序从而掌握一定的语法知识和编程经验。
但是对于有些功能强大的软件还是没有尝试过能否编得起来。
所以决定在所学知识的基础上,再加以拓展,利用4个半天时间编个主题明确、具有一定使用价值的中小程序,以提高自身的编程水平与上机调试技能。
(二)课程设计题目及要求学生信息管理系统设计:学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一学生信息管理系统,使之能提供以功能:系统以菜单方式工作学生信息录入功能(学生信息用文件保存)----输入学生信息浏览功能----输出查询、排序功能----算法按学号查询、按姓名查询学生信息的删除与修改二、系统设计方案(一)总体框架图:学生管理系统:1、录入学生信息2、修改学生信息3、查询学生信息4、浏览学生信息5、增加学生信息6、推出信息系统(二)模块设计模块一:头文件,变量定义,函数的声明对系统所使用的变量进行定义,对函数进行声明模块二:学生信息系统使用帮助声明函数void help(),对整个系统进行使用说明模块三:录入学生信息声明函数void readfile(),说明一个文件指针FILE*fp 打开文件"student.txt"模块四:学生信息的查找声明void seek()为查找函数,通过switch(item)设定用学号查找,用姓名查找两个分支模块五:学生信息的修改声明void modify()为学生信息修改函数,通过switch(item)设定所要修改的项目模块六:学生信息按学号排序声明void sort()将录入学生系按升序排列,用的是“冒泡排序法”实现排序模块七:增加学生信息声明void insert()插入学生信息,先通过判断学生是否存在,若否则继续输入,若是跳出,重新循环模块八:删除学生信息声明void del()实现学生信息删除,通过学号对比确定要删除的信息,然后用后一个替换掉。
模块九:显示学生信息通过display()函数输出学生信息模块十:保存信息通过fp=fopen("student.txt","w");写入信息模块十一:界面菜单通过switch(num)调用,以上各函数,实现功能三、数据结构描述与定义(一)结构体:“结构体名”用作结构体类型的标志,它又称“结构体标记”。
声明一个结构体类型的一般形式为:Struct结构体名{成员表列};大括弧内是该结构体中的各个成员,由它们组成一个结构体。
对各成员都应进行类型声明,即类型名成员名也可以把“成员表列”称为“域表”。
每一个成员也称为结构体中的一个域。
成员名定名规与变量名同。
(二)结构体数组:一个结构体变量中可以存放一组数据(如本程序中一个学生的学号、姓名、成绩等)。
因为程序中需存放若干个学生的信息,这些数据需要参加运算,就得运用数组即结构体数组。
结构体数组的每个数组元素都是一个结构体类型的数据,它们分别包括各个成员(分量)项。
四、程序主要代码分析#include<stdio.h> /*I/O函数*/#include<stdlib.h> /*其它说明*/#include<string.h> /*字符串函数*/#define BUFLEN 100 /* 缓冲区最大字符数 */#define LEN 15 /* 学号和姓名最大字符数,实际请更改 */#define N 100 /* 最大学生人数,实际请更改*/struct 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]; /* 电子邮件地址 */ }stu[N];int k=1,n,m; /* 定义全局变量 */ void readfile();/* 函数声明 */ void seek();void modify();void insert();void del();void display();void save();void menu();int main(){while(k)menu();system("pause");return 0;}void help(){printf("\n0.欢迎使用系统帮助!\n");printf("\n1.进入系统后,先刷新学生信息,再查询;\n");printf("\n2.按照菜单提示键入数字代号;\n");printf("\n3.增加学生信息后,切记保存按7;\n");printf("\n4.谢谢您的使用!\n");}void readfile()/* 建立信息 */{char *p="student.txt";FILE *fp;int i=0;if ((fp=fopen("student.txt","r"))==NULL){printf("Open file %s error! Strike any key to exit!",p); system("pause");exit(0);}while(fscanf(fp,"%s %s%d%s %s %s %s %s",stu[i].code,stu[i] .name,&stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)= =8){i++;i=i;}fclose(fp);n=i;printf("录入完毕!\n");}void seek() /*查找*/{int i,item,flag;char s1[21]; /* 以姓名和学号最长长度+1为准 */printf("------------------\n");printf("-----1.按学号查询-----\n");printf("-----2.按姓名查询-----\n");printf("-----3.退出本菜单-----\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);flag=0;switch(item){case 1:printf("请输入要查询的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;printf("学生学号学生姓名年龄性别出生年月地址电话 E-mail\n");printf("--------------------------------------------------------------------\n");printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,s tu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail); }if(flag==0)printf("该学号不存在!\n"); break;case 2:printf("请输入要查询的学生的姓名:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].name,s1)==0){flag=1;printf("学生学号学生姓名年龄性别出生年月地址电话 E-mail\n");printf("--------------------------------------------------------------------\n");printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,s tu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail); }if(flag==0)printf("该姓名不存在!\n"); break;case 3:return;default:printf("请在1-3之间选择\n");}}}void modify() /*修改信息*/{int i,item,num;char sex1[3],s1[LEN+1],s2[LEN+1]; /* 以姓名和学号最长长度+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].tel,s2); break;case 7:printf("请输入新的E-mail地址:\n"); scanf("%s",s2);strcpy(stu[num].mail,s2); break;case 8: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=i;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];}if(flag==0)printf("该学号不存在!\n");if(flag==1){printf("删除成功,显示结果请选择菜单6\n");n--;}}void display(){int i;printf("所有学生的信息为:\n");printf("学生学号学生姓名年龄性别出生年月地址电话 E-mail\n");printf("--------------------------------------------------------------------\n");for(i=0;i<n;i++)printf("%6s %7s %5d %5s %9s %8s %10s %14s\n",stu[i].code,s tu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail); }}void save(){int i;FILE *fp;fp=fopen("student.txt","w"); /*写入*/for(i=0;i<n;i++){fprintf(fp,"%s %s %d %s %s %s %s %s\n",stu[i].code,stu[i]. name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail); }fclose(fp);}void menu()/* 界面 */{int num;printf(" \n\n 电信082学生信息管理系统 \n\n");printf(" *****************\n\n");printf(" * 制作人:顾加楠*\n \n");printf(" *****************\n\n");printf("*********************系统功能菜单************************ \n");printf("友情提醒:查询前请先刷新系统! \n");printf(" ---------------------- ---------------------- \n");printf(" ***************************************** **** \n");printf(" * 0.系统帮助及说明 * * 1.刷新学生信息 * \n");printf(" ***************************************** **** \n");printf(" * 2.查询学生信息 * * 3.修改学生信息 * \n");printf(" ***************************************** **** \n");printf(" * 4.增加学生信息 * * 5.按学号删除信息 * \n");printf(" ***************************************** **** \n");printf(" * 6.显示当前信息 * * 7.保存当前学生信息* \n");printf(" ******************************************** \n");printf(" * 8.退出系统 *\n");printf(" **********************\n");printf(" ---------------------- ----------------------\n");printf("请选择菜单编号:");scanf("%d",&num);switch(num){case 0:help();break;case 1:readfile();break;case 2:seek();break;case 3:modify();break;case 4:insert();break;case 5:del();break;case 6:display();break;case 7:save();break;case 8:k=0;break;default:printf("请在0-8之间选择\n"); }}。