学生信息管理系统-丁同飞_第1页
学生信息管理系统-丁同飞_第2页
学生信息管理系统-丁同飞_第3页
学生信息管理系统-丁同飞_第4页
学生信息管理系统-丁同飞_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

综合性实验报告学生信息管理系统实验题目:学生信息包括:学号、 姓名、年龄、性别、出生年月、地址、E-mail等。试设计一学生信息管理系统,使之能提供以下功能:(1) 系统以菜单方式工作 (2) 学生信息录入功能(学生信息用文件保存)-输入 (3) 学生信息浏览功能输出 (4)学生信息查询功能(按学号、按姓名)-查询 (5)学生信息的删除与修改。问题的分析:学生信息管理系统这道编程题要求:学生信息包括:学号、 姓名、年龄、性别、出生年月、地址、E-mail等,并且该学生信息管理系统还要提供以下功能:(1) 系统以菜单方式工作 (2) 学生信息录入功能(学生信息用文件保存) (3) 学生信息浏览功能 (4)学生信息查询功能(按学号、按姓名) (5)学生信息的删除与修改。首先定义一个学生信息的结构体,在结构体中分别定义学号、 姓名、年龄、性别、出生年月、地址、E-mail,在分别定义一些函数,诸如建立信息、修改信息、查询信息等,在建立信息的函数中要运用文件的有关知识保存学生信息,在有些函数调用中还要用数组和指针以及switch语句,还用了strcpy,strcmp函数等知识。主要的算法设计:#include #include#include #define M 10 /* 学号和姓名最大字符数,实际要更改 */ #define N 200 /* 最大学生人数,实际要更改*/ struct record char xuehaoM+1; /* 学号 */ char nameM+1; /* 姓名 */ int age; /* 年龄 */char sex3; /* 性别 */char timeM+1; /* 出生年月 */ char add30; /* 家庭地址 */char telM+1; /* 电话号码 */char mail30; /* 电子邮件地址 */ stuN; int k=1,n,m; /* 定义全局变量 */void jianli();/* 函数声明 */ void chaxun(); void xiugai(); void insert(); void del(); void display(); void save(); void menu(); int main() while(k) menu(); system(pause); return 0; void jianli()/* 建立信息 */ char bufBUFLEN,*p=student.dat; FILE *fp; int i=0; if (fp=fopen(student.dat,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,stui.code,,&stui.age, stui.sex,stui.time,stui.add,stui.tel,stui.mail)=8) i+; i=i; fclose(fp); n=i; printf(录入完毕!n); void chaxun() int i,j,item,flag; char s121; /* 以姓名和学号最长长度+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;in;i+) if(strcmp(stuixuehao,s1)=0) flag=1; printf(该学生学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 分别为:n); printf(%s %s %d %s %s %s %s %sn,stui.xuehao,,stui.age, stui.sex,stui.time,stui.add,stui.tel,stui.mail); if(flag=0) printf(该学号不存在!n); break; case 2: printf(请输入要查询的学生的姓名:n); scanf(%s,s1); for(i=0;in;i+) if(strcmp(,s1)=0) flag=1; printf(该学生学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 分别为:n); printf(%s %s %d %s %s %s %s %sn,stui.xuehao,,stui.age, stui.sex,stui.time,stui.add,stui.tel,stui.mail); if(flag=0) printf(该姓名不存在!n); break; case 3:return; default:printf(请在1-3之间选择n); void xiugai() /*修改信息*/ int i,j,item,num; char sex13,s1M+1,s2M+1; /* 以姓名和学号最长长度+1为准 */ printf(请输入要要修改的学生的学号:n); scanf(%s,s1); for(i=0;in;i+) if(strcmp(stui.xuehao,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(,s2); break; case 2: printf(请输入新的年龄:n); scanf(%d,&stunum.age);break; case 3: printf(请输入新的性别:n); scanf(%s,sex1); strcpy(stunum.sex,sex1); break; case 4: printf(请输入新的出生年月:n); scanf(%s,s2); strcpy(stunum.time,s2); break; case 5: printf(请输入新的地址:n); scanf(%s,s2); strcpy(stunum.add,s2); break; case 6: printf(请输入新的电话号码:n); scanf(%s,s2); strcpy(stunum.tel,s2); break; case 7: printf(请输入新的E-mail地址:n); scanf(%s,s2); strcpy(stunum.mail,s2); break; case 8:return; default:printf(请在1-8之间选择n); 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,stui.xuehao); for(j=0;ji;j+) if(strcmp(stui.xuehao,stuj.xuehao)=0) printf(已有该学号,请检查后重新录入!n); flag=1; break; /*如有重复立即退出该层循环,提高判断速度*/ printf(请输入第 %d 个学生的姓名:n,i+1); scanf(%s,); printf(请输入第 %d 个学生的年龄:n,i+1); scanf(%d,&stui.age); printf(请输入第 %d 个学生的性别:n,i+1); scanf(%s,stui.sex); printf(请输入第 %d 个学生的出生年月:(格式:年.月)n,i+1); scanf(%s,stui.time); printf(请输入第 %d 个学生的地址:n,i+1); scanf(%s,stui.add); printf(请输入第 %d 个学生的电话:n,i+1); scanf(%s,stui.tel); printf(请输入第 %d 个学生的E-mail:n,i+1); scanf(%s,stui.mail); if(flag=0) i=i; i+; while(in+m); n+=m; printf(录入完毕!nn); void del() int i,j,flag=0; char s1M+1; printf(请输入要删除学生的学号:n); scanf(%s,s1); for(i=0;in;i+) if(strcmp(stui.xuehao,s1)=0) flag=1; for(j=i;jn-1;j+) stuj=stuj+1; if(flag=0) printf(该学号不存在!n); if(flag=1) printf(删除成功,显示结果请选择菜单6n); n-; void display() int i,j; printf(所有学生的信息为:n); for(i=0;in;i+) printf(%s %s %d %s %s %s %s %sn,stui.xuehao,,stui.age, stui.sex,stui.time,stui.add,stui.tel,stui.mail); void save() int i,j,k,flag=0; FILE *fp; fp=fopen(student.dat,w); for(i=0;in;i+) fprintf(fp,%s %s %d %s %s %s %s %sn,stui.xuehao,,stui.age, stui.sex,stui.time,stui.add,stui.tel,stui.mail); fclose(fp); void menu()/* 界面 */ int num; printf( nn简易学生信息管理系统nn); 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:jianli();break; case 2:chaxun();break; case 3:xiugai();break; case 4:insert();break; case 5:del();break; case 6:display();break; case 7:save();break; case 8:k=0;break; default:printf(请在1-8之间选择n); 上机调试体会:在上机调试过程中发现自己编写的程序往往犯一些低级错误,不是这里少了标点符号,就是那里漏了字母,还有一些语法错误,才明白原来写程序不是那么容易的,它不仅需要足够的耐心,还需要完全的细心,认真;它考验的是一个人的心理。在调试过程中你不仅可以发现错误,找出自己的漏洞,更可以培养一种检查程序的能力,从而让自己以后少犯自己犯过的错误,提高编程的效率和质量。心得体会:转眼间,半个学期过去了,c语言的学习也过了一段时间。有时候,由于兴趣,自己随划划,一道小程序便出来了,但是,要是不幸运的话,逻辑有毛病,抑或是语句出现问题,在电脑面前一坐便是几个小时了!在学习c语言的过程中,链表是最让我头疼的,总感觉很复杂,而且到后面编的程序都具有一定的综合性,就像这次作业,需要用到的知识点很多,也很复杂,但是随着时间的流逝,我对C语言的理解和感悟也积攒了不少!1 、 扎扎实实地学基础,概念要认真去揣摩和实习,尤其是关键字。2 、 C 的控制语句,例如: IF 、 WHILE 、 FOR 3 、 C 的数学函数,有些是系统提供的,有些需要我们把现实中的计算机不能直接处理的抽象的数据类型用 C 来让计算机处理,比如积分、级数、向量等。所以数学一定要学好,要知其所以然。其次这是从事软件开发人员的必备的工具。我认为这是最重要的。 4 、 C 的库函数、头文件(不管是标准 C 还是非标准的),只有弄清楚了这些才能在写程序时随心

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论