C语言课程设计题目名称:学生信息管理系统姓名XXX学号XXXXXXXX专业网络工程班级一班指导教师XXX编写日期2011/6/6目录查询函数.............................................................................................................................1、序言随着学校的规模不断过大,学生数量急剧增加,有关学生的各种信息量也成倍增加。
面对庞大的信息量需要有学生信息管理系统来提高学生管理工作的效率。
通过这样的系统可以做到信息的规范化管理、科学性统计和快速查询、修改、增加、删除等,从而减少管理方面的工作量。
2、需求分析本系统主要需要解决的任务是实现学生信息关系的系统化、规范化和自动化,其主要目的是计算学生各种信息进行日常管理,如查询、修改、增加删除学生信息等。
在实现程序功能的同时应该做到界面简单易懂,容易操作,方便使用的要求。
并且程序需要有一定的纠错能力。
.具体目标本系统主要应用于学生学籍管理、信息查询等部分,具有不同的操作功能。
具体功能如下:2.1.1 有关学生信息的录入,学生信息包括输入学生的学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等(学生信息用文件保存)。
2.1.2. 学生信息的浏览功能。
2.1.3.学生信息的查询功能,其中实现按学号和姓名二种方式查询。
2.1.4.学生信息的修改功能,包括增加、删除等。
3、总体设计.算法分析首先,考虑信息的录入,一个学生包括这么多的属性,应该考虑定义一个结构体。
其次,我们应该考虑数据的存储形式,在这里我们用一个数组。
从文件中录入我们首先要定义一个文件指针,打开该文件后通过一个循环来读文件,将所有信息读出来后关闭文件。
对于菜单的实现,首先用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。
信息的浏览,我们只需要通过一个循环将结构体中所有元素输出就行了。
信息的查询,我们选择用switch结构来解决用学号和姓名二种方式来查询的要求。
等输入学号或者姓名的时候,通过字符串比较函数,如果存在,那么输出学生信息,否则提示错误并要求重新输入。
信息的修改,输入要修改信息的学号。
首先用字符串比较函数判断改学生信息是否存在,如果存在,同过switch语句来依次修改学生的各项信息。
修改信息我们需要用字符串复制函数。
增加新学生信息,输入要增加的学号。
首先用字符串比较函数判断,如果输入的学号已经存在,则提示重新输入,否则依次输入各项信息。
删除学生信息,通过比较找到要删除的学号,用后一个学生的信息直接赋值,后面的依次赋值给前一个学生的信息。
.程序框图4、详细设计.函数模块4.1.1.主界面函数void menu(){ int num;printf(" 简易学生通讯录系统\n\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(" * 8.退出系统*\n");printf(" *****************************\n");printf("请选择菜单编号:");scanf("%d",&num);switch(num){case 1:input();break;case 2:inquir();break;case 3:modify();break;case 4:increase();break;case 5:del();break;case 6:output();break;case 7:save();break;case 8:k=0;break;default:printf("请在1-8之间选择\n");}}说明:此函数的功能是输出主界面功能菜单,已供选择相应的模块进行操作。
其中定义一个变量num,通过输入num的值来进入相应的功能,switch提供了不同选择的入口。
在结束相应功能的操作后又返回主界面,并且对错误的输入有一定的纠错能力。
4.1.2.输入函数void input(){FILE *fp;int i=0;if ((fp=fopen("","r"))==NULL){ printf("Open file error! Strike any key to exit!");exit(0);}while(fscanf(fp,"%s %s%d%s %s %s %s %s",student[i].number,student[i].name,&student[i].age, student[i].sex,student[i].time,student[i].add,student[i].tel,student[i].email)==8){i++;}fclose(fp);n=i;printf("录入完毕!\n");}说明:此函数的功能是从文件中录入信息。
首先定义了一个文件指针fp,用他来打开文件(事先已经储存),通过while循环录入信息,最后关闭文件。
显示录入信息成功!4.1.3.查询函数void inquir(){int i,j,item,flag;char s1[LEN];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(student[i].number,s1)==0){ flag=1;printf("该学生学号,姓名,年龄,性别,出生年月,地址,电话,E-email 分别为:\n");printf("%s %s %d %s %s %s %s %s\n",student[i].number,student[i].name,student[i]. age,student[i].sex,student[i].time,student[i].add,student[i].tel,student[i].email);}if(flag==0)printf("该学号不存在!\n");break;case 2:printf("请输入要查询的学生的姓名:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(student[i].name,s1)==0){ flag=1;printf("该学生学号,姓名,年龄,性别,出生年月,地址,电话,E-email 分别为:\n");printf("%s %s %d %s %s %s %s %s\n",student[i].number,student[i].name,student[i]. age,student[i].sex,student[i].time,student[i].add,student[i].tel,student[i].email);}if(flag==0)printf("该姓名不存在!\n");break;case 3:return;default:printf("请在1-3之间选择\n");}}说明:首先定义一个变量,输入值通过switch来选择相应模块。
用一个for循环和字符串比较函数来不断的把输入的数据和系统储存的信息比较,如果相同,则输出信息。
否则提示信息不存在!4.1.4.修改信息函数void modify(){int i,j,item,num;char sex1[3],s1[LEN],s2[LEN];printf("请输入要要修改的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(student[i].number,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-email地址\n");printf("8.退出本菜单\n");printf("------------------\n");while(1){ printf("请选择子菜单编号:");scanf("%d",&item);switch(item){case 1:printf("请输入新的姓名:\n");scanf("%s",s2);strcpy(student[num].name,s2); break;case 2:printf("请输入新的年龄:\n");scanf("%d",&student[num].age);break;case 3:printf("请输入新的性别:\n");scanf("%s",sex1);strcpy(student[num].sex,sex1); break;case 4:printf("请输入新的出生年月:\n");scanf("%s",s2);strcpy(student[num].time,s2); break;case 5:printf("请输入新的地址:\n");scanf("%s",s2);strcpy(student[num].add,s2); break;case 6:printf("请输入新的电话号码:\n");scanf("%s",s2);strcpy(student[num].tel,s2); break;case 7:printf("请输入新的E-email地址:\n");scanf("%s",s2);strcpy(student[num].email,s2); break;case 8:return;default:printf("请在1-8之间选择\n");}}}说明:首先输入要修改信息的学号,同样通过字符串比较函数来判断学号是否存在。