题目: 学生信息管理系统
学号:201107119***
姓名。班级: 信计1102
成绩。正文。
本程序利用结构体数组及函数的调用完成对学生基本信息的动态管理。可以对学生基本信息进行录入、查询、删除、修改、浏览、成绩汇总的功能。
利用宏定义,函数的调用及结构体数组,通过菜单选择的方式,在不同函数功能间进行切换,从而达到实验设计的目的、使之具有学生信息管理的功能。
1. 模块介绍:采用模块化设计,功能放在各模块中实现。
主函数是程序的入口,在其中声明一些必要的变量,设计以无限循环程序,循环体为一个switch语句,该语句的条件是通过调用主菜单函数得到返回值,根据该返回值调用相应的各功能函数,同时要设置一个循环结束条件,以免造成死循环。
2. 系统流程:
1. **介绍: 本程序中,用num、name、banji、age、sex、birthday 、addr、phone、course、grade,来分别代表学生的学号、姓名、班级、年龄、性别、出生日期、住址、**、所选课程、分数。
然后再利用结构体数组,将其归为学生的属性。再用enter、print、s**e 、search、del、modify、rank、return,来分别表示学生信息的输入、浏览、录入、查找、删除、修改,学生成绩的汇总,程序的返回的功能。在程序中,通过对各个**的使用及各功能函数的调用,可实现本程序设计目的。
2. 函数介绍:
1. main( )主函数。
主函数是程序的入口,在其中定义一些必要的变量,设计以无限循环程序,循环体为一个switch语句,该语句的函数是通过调用主菜单函数得到返回值,根据返回值调用相应的各功能函数,同时要设置一个循环结束条件,以免造成死循环。
2. menu( )函数---制作菜单。
通过printf( )函数在屏幕上绘制一个菜单,将菜单进行编号,并显示一个提示输入选项,输入1~8之间的数字。输入选项就是输入菜单编号,该输入项将作为函数的返回值带到主函数,主函数根据这个数字调用相应的功能函数。
3. enter( )函数---输入记录。
当在主菜单中输入了1,表明选择了输入记录功能选项,即为结构体赋值。由于所定义的数组的大小往往大于实际的纪录数,所以要确定输入的记录数n,然后用for循环语句循环n 次,按照提示逐个输入学生信息。每输入一个就按一下enter键,输入n个记录后,则循环结束,返回记录数到主函数。
4. s**e( )函数---保存记录到文件。
将学生信息保存到指定文件中。按照文件读写要求,先定义一个指向文件的指针,输入要保存的磁盘文件名。然后确定文件的打开方式,打开文件。
如果文件打不开,则退出程序,否则选择一种写文件方式,利用循环从数组的第一个元素开始,依次将记录写入文件,直到所有记录写完为止。
5. search( )函数---查找记录。
查找可以按照多种信息进行查找,以按姓名查找记录为例,从第一条记录开始顺序查找,如果找到记录,则显示记录信息;若找不到记录,显示“无该学生”的提示信息。由于姓名为字符串,所以可利用字符串比较函数strcmp( )
6. del( )函数---删除记录。
删除指定学号的学生记录。首先输入要删除记录的学号,然后利用for循环查找记录。如果没找到,则输出没找到信息;否则,删除记录。
要删除数组中某一条记录,实际所做的操作是将其后继记录依次前移一条,所以,删除第i条记录,用for语句,从第i+1条记录开始,依次将每个字段复制到前一条记录的相应字段,即覆盖了前一条记录,从而达到前移的目的,直到最后一条记录为止,最后使记录数减1。
7. modify( )函数---修改记录数据。
记录数据完成后,若要对数据进行修改,则修改时,输入有错误记录的学号,通过循环比较找到该记录,然后逐个判断。
8. print( )函数---浏览记录。
学生信息表建好后,更频繁的操作是显示和查找记录,本函数实现显示所有记录的功能。
用for循环将主函数传递过来的数组输出,循环次数由参数(记录个数)决定。
9. rank( )函数---成绩汇总。
学生信息录入完成后,若要对学生中不及格学生成绩进行汇总,则可利用for循环将各个学生成绩与60比较,将不及格学生信息输出,从而达到不及格学生汇总的功能。
10. return( )函数---返回。
操作完成后,如要结束程序的运行,可利用该函数实现程序的结束。
#include<>
#include<>
#include<>
#define pr printf
#define m 100
struct student
char num[10];
char name[10];
char banji[4];
char age[3];
char sex[3];
char brithday[10];
char addr[5];
char phone[11];
char course[4];
float grade;
stud[m];
int enter(struct student stud)
void print(struct student stud,int n);
void search(struct student stud,int n);
void del(struct student stud,int n);
void modify(struct student stud,int n);
void rank(struct student stud,int n);
void s**e(struct student stud,int n);
int menu();
void main()
struct student stud[m];
int length;
for(;;
switch(menu())
int menu()
int choice;
pr欢迎来到学生信息管理系统n");
pr主菜单n");
pr1---学生信息录入n");
pr2---学生信息保存n");
pr3---学生信息浏览n");
pr4---学生信息查询n");
pr5---学生信息删除n");
pr6---学生信息修改n");
pr7---不及格学生成绩汇总 *");
pr8---返回n");
prn");
dowhile(choice<1||choice>8);
return choice;
void s**e(struct student stud,int n)
file *fp;
int i;
char outfile[20];
printf("enter outline example c:\\cfile\\"
scanf("%s",outfile);
if((fp=fopen(outfile,"wb"))null)
elseint enter(struct student stud)
int j,n;
pr(" please input record number:")
scanf("%d",&n);
pr(" please input the data of student:");
for(j=0;j {
pr("enter num:")
scanf("%s",stud[j].num);
pr("enter name:")
scanf("%s",stud[j].name);
pr("enter banji:")
scanf("%s",stud[j].banji);
pr("enter age:")
scanf("%s",stud[j].age);
C语言课程课程设计
课程设计报告。课程名称 c语言程序设计 系别 xxx 专业班级 xxx班 学号 xxxxxxxxxx 姓名 xxx 课程题目 10或100以内儿童加减乘除算术游戏。完成日期 2013.6.14 19 指导老师 xxx 2013年 6月 21日。附件 一 程序模块图。二 源程序。include inc...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。xx xx学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 课程类别 专业基础课。制订时间 2010年11月 计算机科学与技术系制。c语言程序课程设计教学...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。珠海学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 2010级计算机科学与技术系各专业。课程类别 专业基础课。制订时间 2010年11月 计算机科学与技...