C语言上机实验报告学生信息管理系统设计_第1页
C语言上机实验报告学生信息管理系统设计_第2页
C语言上机实验报告学生信息管理系统设计_第3页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、Word C语言上机实验报告-学生信息管理系统设计 C语言上机试验报告 姓名: 学号: 班级: 指导老师: 学院: 学校: 同学信息管理系统设计 C语言上机试验报告 同学信息管理系统设计 一、试验题目 同学信息管理系统设计 同学信息包括:学号,姓名,年龄,性别,诞生年月,地址,电话,E-mail等。试设计一同学信息管理系统,使之能供应以下功能: (1) 系统以菜单方式工作 (2) 同学信息录入功能(同学信息用文件保存)输入 (3) 同学信息扫瞄功能输出 (4) 查询、排序功能算法 (5) 按学号查询 (6) 按姓名查询 (7) 同学信息的删除与修改(可选项) 二、本课程的地位、作用与目的 为综

2、合应用C语言程序设计理论学问、进一步提高同学综合解决问题、协调工作的力量和良好的软件开发习惯,特支配本试验内容。盼望通过该实习能够进一步激发同学的学习热忱,培育同学初步编程的力量,为后续的学习和进展奠定基础。 三、分析过程 1、能够实现对同学基本信息数据的增加和删除 2、实现对录入保存后的同学基本信息进行格式化扫瞄 3、供应学号和姓名两种方式对同学基本信息数据的查询 4、能够对随机输入的同学基本信息数据按学号进行排序 5、同学信息数据保存在文件中,便利数据的多次使用 为了实现以上功能,必需设计的函数如下: 录入函数、查询函数(分为姓名查询和学号查询)、删除函数、排序函数和几个菜单绘制函数等 四

3、、试验源代码 : #include stdio.h #includestring.h #includeconio.h #includestdlib.h #includetime.h #define num 12 /定义同学结构体 typedef struct student int id; char namenum; int age; char sex4; struct birth int year; int month; int day; date; char add30; int phone; stu; /功能选择菜单 void menu() printf(n); printf(n); p

4、rintf( 同学信息管理系统n); printf(n); printf( *n); printf( =1.同学信息录入 2.同学信息扫瞄=n); printf(n); printf( =3.学号查询信息 4.姓名查询信息=n); printf(n); printf( =5.按学号排序 6.删除同学信息=n); printf(n); printf( = 0.退出系统 =n); printf(n); printf(n); printf( *n); printf(n); printf( 按编号选择对应功能n); printf(n); printf( + XXXXXXX制作 +n); printf(

5、n); /修改菜单 void printmenu() printf(*n); printf(1.完全修改 2.学号修改); printf(3.姓名修改 4.性别修改); printf(5.生日修改 6.地址修改); printf(7.电话修改 0.退出修改); printf(*n); /取当前时间 int nowtime() struct tm *local; time_t t; t=time(NULL); local=localtime(t); return local-tm_year+1900;/求出当前时间的年份 /输出文件中同学信息 void print(char *file) stu

6、 temp; FILE *fp=fopen(file,r); if(fp=NULL) printf(打开文件%s失败!n,file); return; printf(文件%s中同学信息如下:n,file); printf(%8s%8s%6s%6s%8s%4s%4s%16s%12sn,学号,姓名,年龄,性别,诞生年,月,日,地址,电话); fseek(fp,0,SEEK_SET);/从文件开头为之读取 while(fread(temp,sizeof(stu),1,fp) printf(%8d%8s%6d%6s%8d%4d%4d%16s%12dn,temp.id,,temp.ag

7、e,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,temp.phone); /格式化输出同学信息 fclose(fp);/关闭文件 void luru(char *file) int count,sexnum,i=0,m; stu temp,temp1; FILE *fp=fopen(file,a+);/追加方式打开文件 if(fp=NULL) printf(打开文件%s失败!,file); return; printf(请确定本次需要录入几名同学信息:); scanf(%d,count); for (i=0;ic

8、ount ;i+ ) printf(录入要写入文件%s的第%d名同学信息n,file,i+1); Repeat: printf(请输入学号:); m=scanf(%d,temp.id); if (m=0) printf(输入的数据不是整型数据!n); fflush(stdin);/清除缓存 goto Repeat; fseek(fp,0,SEEK_SET);/从文件开头位置读取 while(fread(temp1,sizeof(stu),1,fp) if (temp1.id=temp.id)/推断学号是否已存在 printf(学号已存在!n); goto Repeat; /若学号已存在,返回连

9、续读取学号 printf(请输入姓名:); scanf(%s,); printf(请输入性别:0为女生,1为男生:); scanf(%d,sexnum); if (sexnum=1) strcpy(temp.sex,男); else strcpy(temp.sex,女); printf(请输入诞生年月日:); scanf(%d%d%d,temp.date.year,temp.date.month,temp.date.day); temp.age=nowtime()-temp.date.year; printf(请输入地址:); scanf(%s,temp.add); prin

10、tf(请输入联系电话11位:); scanf(%d,temp.phone); if(!fwrite(temp,sizeof(stu),1,fp) printf(向文件%s写入信息失败!n,file); return; printf(向文件%s写入信息胜利!n,file); fclose(fp); int IsEmpty(FILE *fp) int len; fseek(fp,0,SEEK_END);/指针移动到文件尾 len=ftell(fp);/取指针的文职猎取长度 return(len=0)?1:0;/0代表文件为空 void idsearch(char *file) int findid

11、; stu temp; FILE *fp=fopen(file,r); if (fp=NULL) printf(文件无法打开!); return; if(IsEmpty(fp) printf(文件为空,请先录入信息!); return; printf(输入要查找同学的学号:); scanf(%d,findid); fseek(fp,0,SEEK_SET); while(fread(temp,sizeof(stu),1,fp) if(temp.id=findid) printf(%8s%8s%6s%6s%8s%4s%4s%16s%11sn,学号,姓名,年龄,性别,诞生年,月,日,地址,电话);

12、printf(%8d%8s%6d%6s%8d%4d%4d%16s%11dn,temp.id,,temp.age,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,temp.phone); /格式化输出同学信息 return; printf(没有找到学号为%d的同学的信息!,findid); return; fclose(fp); void namesearch(char *file) char namenum; stu temp; FILE *fp=fopen(file,r); if (fp=NULL

13、) printf(文件无法打开!); return; if(IsEmpty(fp) printf(文件为空,请先输入同学信息!); return; printf(输入要查找的同学的姓名:); scanf(%s,name); fseek(fp,0,SEEK_SET); while(fread(temp,sizeof(stu),1,fp) if (!strcmp(,name) printf(下面是姓名为%s的同学的信息:n,name); printf(%8s%8s%6s%6s%8s%4s%4s%16s%11sn,学号,姓名,年龄,性别,诞生年,月,日,地址,电话); printf

14、(%8d%8s%6d%6s%8d%4d%4d%16s%11dn,temp.id,,temp.age,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,temp.phone); /格式化输出同学信息 return; printf(没有找到姓名为%s的同学的信息!,name); fclose(fp); /排序函数 void paixu(char *file) int i,j,k,len; stu snum,temp; FILE *fp=fopen(file,r); if(fp=NULL) printf(文

15、件无法打开!); return; if(IsEmpty(fp) printf(文件为空,请先录入信息!); return; fseek(fp,0,SEEK_END);/指针移动到文件末尾 len=ftell(fp)/sizeof(stu); fseek(fp,0,SEEK_SET); for(i=0;ilen;i+) fread(s+i,sizeof(stu),1,fp); fclose(fp); for(i=0;ilen;i+) k=i; for(j=i+1;jlen;j+) if(sj.idsk.id) k=j; if(k!=i) temp=si; si=sk; sk=temp; prin

16、tf(下面是按学号从小到大挨次排序后的同学的信息:n); printf(%8s%8s%6s%6s%8s%4s%4s%16s%11sn,学号,姓名,年龄,性别,诞生年,月,日,地址,电话); for(i=0;ilen;i+) printf(%8d%8s%6d%6s%8d%4d%4d%16s%11dn,si.id,,si.age,si.sex,si.date.year,si.date.month,si.date.day,si.add,si.phone); /格式化输出同学信息 remove(同学信息表.txt);/删除以前存放数据的文件 fp=fopen(file,w); for(i

17、=0;ilen;i+) fwrite(s+i,sizeof(stu),1,fp); fclose(fp); /删除函数 void shanchu(char *file) int i=0,len,del; stu snum; FILE *fp=fopen(file,r); if(fp=NULL) printf(文件无法打开!); return; if(IsEmpty(fp) printf(文件为空,请先录入同学信息!); return; printf(输入需要删除的同学的学号:); scanf(%d,del); fseek(fp,0,SEEK_SET); while(fread(s+i,size

18、of(stu),1,fp) if(si.id=del) printf(下面是按学号为%d的同学的信息:n,del); printf(%8s%8s%6s%6s%8s%4s%4s%16s%11sn,学号,姓名,年龄,性别,诞生年,月,日,地址,电话); printf(%8d%8s%6d%6s%8d%4d%4d%16s%11dn,si.id,,si.age,si.sex,si.date.year,si.date.month,si.date.day,si.add,si.phone); /格式化输出同学信息 i=i-1; i+; fclose(fp); len=i; fp=fopen(fi

19、le,w); fseek(fp,0,SEEK_SET); for(i=0;ilen;i+) /删除后重写文件 fwrite(s+i,sizeof(stu),1,fp); fclose(fp); void main() int key; char file=同学信息表.txt; do menu(); printf(选择对应功能操作:); scanf(%d,key); switch(key) case 1: luru(file); break; case 2: print(file); break; case 3: idsearch(file); break; case 4: namesearch(file); break; case 5: paixu(file); break; case 6: shanchu(file); break; case 0: exit(0); default: printf(选择错误,请重新选择!); pr

温馨提示

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

评论

0/150

提交评论