学生学籍信息管理系统设计书.doc
学生学籍信息管理系统 -C语言课程设计指导教师:王丽设 计 者:刘忠泰 刘启东 陈俊京 程 龙 专业班级:通信112班设计时间:2012年6月组 员 分 工1、组长:刘忠泰 主函数部分及输入信息、输出信息。2、组员:程 龙 查询信息。3、组员:刘启东 修改信息。4、组员:陈俊京 添加信息。 学生学籍信息管理系统一、系统的软硬件环境1、硬件环境:一般来说586电脑就可以提供并支持系统的使用及运行,此外,若想打印或成稿还需要使用打印机; U盘、软盘也是程序的必要载体。2、软件环境: Windows环境下安装Turbo C2.0语言系统,安装完毕后即可使用,而且要用到UCDOS。二、系统总体框架图 学生学籍信息管理系统是实现对学生学籍信息如学号、姓名、性别、年龄、家庭地址、联系电话等实现输入、查询有关信息、修改有关信息、输出、添加新生信息等功能的系统,系统框架如图1所示。学生学籍信息管理系统输入模块输出模块查找模块修改模块追加模块显示模块按学号查找按姓名查找按姓名修改按学号修改排序模块图1 学生学籍信息管理系统框架图三、程序功能简介(1)输入模块(creat函数)该模块是实现对学生姓名、性别、学号、成绩、年龄等的录入并保存到文件“stu”中。(2)修改模块(modify函数)该模块实现按学号或按姓名对学生所有信息的修改。修改成功显示已修改后的文件数据。(3)查找模块(search函数)实现按学号或姓名查询每个学生的学号、姓名、性别、年龄、地址等信息。查到后显示所查学生的全部信息,若不存在则显示未找到。(4)输出模块(output函数)该模块实现对文件“stu” 学生姓名、性别、学号、地址、年龄等的显示。 (5)添加模块(ADD函数) (6)显示模块(show函数)该模块实现制作人员相关信息的显示。(7)退出运行界面(quit)退出整个函数运行界面。四、结束语通过本次课程设计,我学到很多东西,而最大的收获就是:真正从实践的角度初步体会到了C语言在实际生活中的作用,也深刻体会到了它带来的方便快捷。美中不足的就是,本程序还处于初级阶段的学生信息管理功能中,只实现了对学生的录入、修改、查询、输出等简单功能,不一定在实际中有大的用途。在此次程序设计中,出现了各种各样的问题,在完成各自模块建立起程序后运行后,出现了在按照正确形式输入后,不能正确输出结果,而且在运行时也没有提示有错误,无奈之下去找老师解决问题,老师告诉我很有可能是输入函数的问题,经过仔细的检查和调试我最终用把变量定义为外部变量的方式解决了问题。查询模块是我编写是花费时间最多的一部分,并且在其中加入了子菜单,想实现分别用学号和姓名查找,所以花费了很多精力,也修改了很多次,但在努力下最终成功了;然后仿照查找模块在修改模块中也加入了子菜单,丰富了程序的函数。程序编排中可能有繁琐之处有待进一步简化,本次设计的困难是在编辑程序时发现自己对C语言的了解还处于初级阶段,不能完美的设计出能够在实际生活中应用的程序,如果有机会我会继续学习,做出更好的程序。五、参考文献1谭浩强.C程序设计.清华大学出版社.2005年7月2陈志华.Delphi 6.0编程实例.中国水利水电出版社.2002年6月3David M.Collopy、罗铁庚.C语言教程:模块化程序设计.清华大学出版社. 2004年9月4邓文新、张宏烈.C语言程序设计方法.哈尔滨工业大学出版社.2004年2月5田淑清.全国计算机等级考试二级教程.高等教育出版社.1998年7月附录: 程序清单#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<string.h>#define N 100typedef struct studentchar num15;char name10;int age;char sex5;char addr50;char tel15;STUDENT;struct student stuN;int w=0,a,j=0;void print_list()printf("n 学号 姓名 年龄 性别 地址 电话号码n");void print_message(int i,struct student stuN)printf("n %-12s",stui.num);printf("%-7s",stui.name);printf("%-7d",stui.age);printf("%-8s",stui.sex);printf("%-26s",stui.addr);printf("%s",stui.tel);int main()char c;void creat (struct student stuN);void modify (struct student stuN);void search (struct student stuN);void output (struct student stuN);void add(struct student stuN);void arr(struct student stuN);void show(); do printf("nn=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("请选择功能种类 <1/2/3/4/5/6/7/8>并按回车键执行命令n" );scanf("%c",&c); getchar();switch(c) case '1':creat(stu);break; case '2':add(stu);break; case '3':output (stu);break; case '4':search(stu);break; case '5':modify(stu);break; case '6':arr(stu);break; case '7':show(stu);break;case '8':return; default:printf("ERROR!请正确输入!n");continue; while(w=0);void creat(struct student stuN) /*输入信息*/FILE *fp;int i,j;char ch,t5;if(fp=fopen("MESSAGE.dat","wb")=NULL)printf("无信息"); exit(0);i=0;printf("tt=<<输入信息>>=n");do printf("tt输入学号:");gets(stui.num); printf("tt姓名:");gets(stui.name);printf("tt年龄:");gets(t);stui.age=atoi(t);printf("tt性别:");gets(stui.sex);printf("tt住址:");gets(stui.addr);printf("tt电话:");gets(stui.tel);printf("tt是否继续? <Y或N>");scanf("%c",&ch);getchar();i+;while(ch='y'|ch='Y');for(j=0;j<=i-1;j+)fwrite(&stuj,sizeof(struct student),1,fp);fclose(fp);void modify(struct student stuN) /*修改信息*/FILE *fp; char name10,num15,t5; int i,j,m=0,sum; char ch;if(fp=fopen("MESSAGE.dat","rb")=NULL) printf("无信息"); elseprint_list();for(i=0;fread(&stui,sizeof(struct student),1,fp);i+) print_message(i,stu); sum=i; fclose(fp);printf("ttn=<<修改信息>>=n");do m=0;printf("ntt1.按学号修改 2.按姓名修改");printf("nntt*请选择 <1 或 2> :");scanf("%c",&ch);getchar();if(ch='1')printf("tt输入要修改的学号:");gets(num); for(i=0;i<=sum;i+) if(strcmp(stui.num,num)=0)print_list();print_message(i,stu); printf("n"); printf("tt输入新的学号:");gets(stui.num); printf("tt姓名:");gets(stui.name);printf("tt年龄:");gets(t);stui.age=atoi(t);printf("tt性别:");gets(stui.sex);printf("tt住址:");gets(stui.addr);printf("tt电话:");gets(stui.tel); printf("tt=修改后信息=n");print_list();print_message(i,stu); printf("n"); m=1; if(ch='2') printf("tt输入要修改的姓名:"); gets(name); for(i=0;i<=sum;i+) if(strcmp(stui.name,name)=0) print_list();print_message(i,stu); printf("n"); printf("tt请输入学号:");gets(stui.num); printf("tt姓名:");gets(stui.name);printf("tt年龄:");gets(t);stui.age=atoi(t);printf("tt性别:");gets(stui.sex);printf("tt住址:");gets(stui.addr);printf("tt电话:");gets(stui.tel); printf("tt=修改后信息=n");print_list();print_message(i,stu); printf("n");m=1; if(m=0)printf("ntt无该学生信息"); printf("ntt是否继续(Y or N)? ");scanf("%c",&ch);getchar();while(ch='y'|ch='Y');if(fp=fopen("MESSAGE.dat","wb")=NULL) printf("无信息");elsefor(j=0;j<=sum;j+) fwrite(&stuj,sizeof(struct student),1,fp);fclose(fp); void search (struct student stuN) /*查找信息=*/FILE *fp;char ch,k;char xm10,xh15;int i,j=0,sum;int m;if(fp=fopen("MESSAGE.dat","rb")=NULL)printf("无信息");elseprint_list(); for(i=0;fread(&stui,sizeof(struct student),1,fp);i+) print_message(i,stu); sum=i; fclose(fp);do m=0; printf("ttn=<<查找信息>>=n"); printf("ntt1.按学号查找 2.按姓名查找"); printf("nntt*请选择<1 or 2>:"); scanf("%c",&k);getchar(); printf("tt=<<查找信息>>=n"); if(k='1') printf("tt输入学号:");gets(xh); for(i=0;i<=sum;i+) if(strcmp(stui.num,xh)=0) print_list();print_message(i,stu); printf("n");m=1; if(k='2')printf("tt输入姓名:");gets(xm); for(i=0;i<=sum;i+) if(strcmp(stui.name,xm)=0) print_list();print_message(i,stu); printf("n");m=1; if(m=0) printf("ntt无该学生信息"); printf("ntt是否继续(Y/N)?");scanf ("%c",&ch);getchar();while(ch='Y'|ch='y');void output(struct student stuN) /*输出信息*/FILE *fp;int i;if(fp=fopen("MESSAGE.dat","rb")=NULL)printf("无信息");printf("tt=输出信息=");print_list();for(i=0;fread(&stui,sizeof(struct student ),1,fp);i+) print_message(i,stu);fclose(fp);printf("n按回车返回主菜单");getchar(); void add(struct student stuN) /*添加信息*/FILE *fp;int i=0,j;char ch,t5;if(fp=fopen("MESSAGE.dat","ab")=NULL)printf("无信息");printf("tt=<<添加信息>>=n");do printf("tt输入学号:");gets(stui.num); printf("tt姓名:");gets(stui.name);printf("tt年龄:");gets(t);stui.age=atoi(t);printf("tt性别:");gets(stui.sex);printf("tt住址:");gets(stui.addr);printf("tt电话:");gets(stui.tel); printf("tt是否继续(Y/N)?"); ch=getchar(); getchar();i+;while(ch='y'|ch='Y');if(fp=fopen("MESSAGE.dat","ab")=NULL) printf("无信息");elsefor(j=0;j<=i-1;j+)fwrite(&stuj,sizeof(struct student),1,fp);fclose(fp);void arr(struct student stuN) /*信息排列(按学号) */FILE *fp;int i,j,sum;STUDENT t;if(fp=fopen("MESSAGE.dat","rb")=NULL)printf("无信息");elsefor(sum=0;fread(&stusum,sizeof(struct student),1,fp);sum+);fclose(fp);for(i=0;i<sum;i+)for(j=i+1;j<sum;j+)if(atoi(stui.num)>atoi(stuj.num)t=stui;stui=stuj;stuj=t;print_list();if(fp=fopen("MESSAGE.dat","wb")=NULL) printf("无信息");else for(j=0;j<sum;j+)fwrite(&stuj,sizeof(struct student),1,fp);print_message(j,stu);fclose(fp);void show() /*显示制作人员信息*/printf(" C语言程序设计 nnnn");printf(" = 学生学籍信息系统 =n");printf(" 指导教师: * n");printf(" 学 生: * n");printf(" * 学 院 n");printf(" * 班 n=n");printf(" << = 按回车键返回 = >>n");getchar();