高级语言程序综合课程设计-学生信息管理系统实验报告_第1页
高级语言程序综合课程设计-学生信息管理系统实验报告_第2页
高级语言程序综合课程设计-学生信息管理系统实验报告_第3页
高级语言程序综合课程设计-学生信息管理系统实验报告_第4页
高级语言程序综合课程设计-学生信息管理系统实验报告_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

高级语言程序设计 课题名称:学生信息管理系统 实验报告 1设计目的为了方便学校对学生的管理,处理好每个学生的个人信息,加强学校对学生的管理2总体设计组成框架:41流程图:a) 查询模块开始 选择查询方式输入所查学号/姓名信息找到是输出学生信息返回主菜单b) 添加模块开始添加学生信息返回主菜单录入要添加的学生信息写入文件c) 修改模块开始输入要修改的学号信息是否存在是修改后的信息保存否写入文件主菜单d) 录入模块写入文件输入信息开始结束e) 打印模块关闭文件从文件中读出并显示开始结束f) 排序模块开始从文件中读出信息输出排序结果年龄/学号选择排序方式结束g) 删除模块开始输入要删除的学号信息找到删除学生信息信息未找到返回主菜单3详细设计(1)头文件,结构体定义及主函数#include#include#include#define M 100 /数组元素的个数struct stu /定义结构体类型 char num15; /学号 char name18; /姓名 int old; /年龄 char sex10; /性别 char birthday10; /出生日期 char addr20; /居住地址 char tele15; /联系电话 char email20; /邮箱地址 char nation10; /民族 ; int input(struct stu s);/输入学生信息void print(struct stu s,int n);/显示所有信息void searchbynum(struct stu s,int n);/按学号查询学生信息void searchbyname(struct stu s,int n);/按姓名查询学生信息void search(struct stu s,int n);/学生信息查询方式显示界面int insert(struct stu s,int n);/插入新学生信息void save(struct stu s,int n);/将输入的学生信息进行保存int load(struct stu s);/从文件中读取学生信息void modify(struct stu s,int n);/按学号修改学生信息int del(struct stu s,int n );/按学号删除学生信息void sort(struct stu s,int n);/学生信息排序方式显示界面void sortbynum(struct stu s,int n);/按学号对学生信息进行排序void sortbyold(struct stu s,int n);/按年龄对学生信息进行排序int menu();/菜单函数void main()struct stu studentM;/定义结构体数组 int length;/保存学生个数 for(;)/无限循环 switch(menu()/调用主菜单函数,返回值为整数,作为语句的条件 case 1: length=input(student);break;/输入 case 2: print(student,length);break;/显示信息 case 3: search(student,length);break;/查找 case 4: length=insert(student,length);break;/插入 case 5: modify(student,length);break;/修改 case 6: length=del(student,length);break;/删除 case 7: sort(student,length);break;/排序 case 8: save(student,length);break;/保存 case 9: length=load(student);break;/读文件 case 10: printf(退出登录!);return;/如果菜单返回值为10,则结束程序 default : printf(输入有误,请输入1-10的数字!n); int menu() int choice; printf( n 学生信息管理系统 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( 9 打开信息文件n); printf( 10 退出n); printf(*n); do printf(n请输入您要选择的操作:); scanf(%d,&choice); while(choice10|choice1);/选择项不在1-10之间重新选择 return choice;/返回选择项,主程序根据返回值调用相应的函数 (2)输入函数int input(struct stu s) int i,n; printf(n输入信息的学生个数:); scanf(%d,&n); printf(请输入学生各信息n); for(i=0;i15) printf(input too long); while(strlen(si.num)15); do printf(请输入姓名:); scanf(%s,); if(strlen()18) printf(input too long); while(strlen(si.num)18); printf(输入年龄:); scanf(%d,&si.old); printf(输入性别(girl/boy):); scanf(%s,si.sex); printf(出生日期输入按年/月/日(97/10/01)格式输入:); scanf(%s,si.birthday); printf(输入民族:); scanf(%s,si.nation); printf(输入居住地址:); scanf(%s,si.addr); do printf(请输入联系电话:); scanf(%s,si.tele); if(strlen(si.tele)15) printf(input too long); while(strlen(si.tele)15); do printf(请输入邮箱地址:); scanf(%s,si.email); if(strlen(si.email)20) printf(input too long); while(strlen(si.email)20); printf(n); return n; (3)输出函数void print(struct stu s,int n) int i; printf( 学生信息如下:n); printf(-n); printf(学号 姓名 年龄 性别 出生日期 民族 居住地址 联系电话 邮箱地址 n); printf(-n); for(i=0;in;i+) printf(%-16s%-10s%-10d%-10s%-16s%-10s%-11s%-17s%-16sn, si.num,,si.old,si.sex,si.birthday,si.nation,si.addr,si.tele,si.email); printf(-n);getchar();(4)按学号查询函数void searchbynum(struct stu s,int n) char num15; /存放学号的字符数组 int i; printf(请输入学号); scanf(%s,num); /输入待查找的学号 for(i=0;in;i+) /查找从第一条记录开始,直到最后一条记录为止 if(strcmp(num,si.num)=0) /待查找的学号与数组中的记录学号比较,相等则显示找到的记录信息 printf(%s的学生信息如下n,si.num); printf(-n); printf(学号 姓名 年龄 性别 出生日期 民族 居住地址 联系电话 邮箱地址 n); printf(-n); printf(%-16s%-10s%-10d%-10s%-16s%-10s%-11s%-17s%-16sn, si.num,,si.old,si.sex,si.birthday,si.nation,si.addr,si.tele,si.email); printf(-n); printf(n查询成功n);(5)按姓名查询函数void searchbyname(struct stu s,int n) char name18; /存放姓名的字符数组 int i; printf(请输入姓名); scanf(%s,name); /输入待查找的姓名 for(i=0;i15) printf(input too long); while(strlen(temp.num)15); do printf(请输入姓名:); scanf(%s,); if(strlen()18) printf(input too long); while(strlen(temp.num)18); printf(输入年龄:); scanf(%d,&temp.old); printf(输入性别(girl/boy):); scanf(%s,temp.sex); printf(出生日期输入按年/月/日(97/10/01)格式输入:); scanf(%s,temp.birthday); printf(输入民族:); scanf(%s,temp.nation); printf(输入居住地址:); scanf(%s,temp.addr); do printf(请输入联系电话:); scanf(%s,temp.tele); if(strlen(temp.tele)15) printf(input too long); while(strlen(temp.tele)15); do printf(请输入邮箱地址:); scanf(%s,temp.email); if(strlen(temp.email)20) printf(input too long); while(strlen(temp.email)20); for(i=0;i=i;j-) strcpy(sj+1.num,sj.num); strcpy(sj+1.name,); strcpy(sj+1.sex,sj.sex); strcpy(sj+1.addr,sj.addr); strcpy(sj+1.birthday,sj.birthday); strcpy(sj+1.tele,sj.tele); strcpy(sj+1.email,sj.email); strcpy(sj+1.nation,sj.nation); sj+1.old=sj.old; strcpy(si.num,temp.num); strcpy(,); strcpy(si.sex,temp.sex); strcpy(si.addr,temp.addr); strcpy(si.birthday,temp.birthday); strcpy(si.tele,temp.tele); strcpy(si.email,temp.email); strcpy(si.nation,temp.nation); si.old=temp.old; break; /新记录已插入,结束循环 printf(%s的学生信息已被插入n,si.num); printf(-存盘-n); /提示存盘 n+; /记录数加1 return n; /返回记录数(8)删除函数int del(struct stu s,int n ) char no10; /存放要删除记录的学号 int i,j; printf(请输入要删除学生的学号); scanf(%s,no); /输入要删除记录的学号 for(i=0;in;i+) if(strcmp(no,si.num)=0) for(j=i+1;jn;j+) strcpy(sj-1.num,sj.num); strcpy(,); strcpy(sj-1.sex,sj.sex); strcpy(sj-1.addr,sj.addr); strcpy(sj-1.birthday,sj.birthday); strcpy(sj-1.tele,sj.tele); strcpy(sj-1.email,sj.email); strcpy(sj-1.nation,sj.nation); sj-1.old=sj.old; break; n-; return n; /记录数减一(9)修改函数void modify(struct stu s,int n) char no15,ch; int i; printf(请输入要修改学生的学号); scanf(%s,no); getchar(); /用getchar函数接收回车符,否则,回车将作为下一个字符或字符串变量的输入值 for(i=0;i=n) printf(n没有找到信息n); else printf(修改学号(y/n)?); ch=getchar();getchar(); if(ch=y|ch=Y) printf(输入学号:); scanf(%s,si.num); getchar(); printf(修改姓名(y/n)?); ch=getchar();getchar(); if(ch=y|ch=Y) printf(输入姓名:); scanf(%s,); getchar(); printf(修改年龄(y/n)?); ch=getchar();getchar(); if(ch=y|ch=Y) printf(输入年龄:); scanf(%d,&si.old); getchar(); printf(修改性别(y/n)?); ch=getchar();getchar(); if(ch=y|ch=Y) printf(输入性别:); scanf(%s,si.sex); getchar(); printf(修改民族(y/n)?); ch=getchar();getchar(); if(ch=y|ch=Y) printf(输入民族:); scanf(%s,si.nation); getchar(); printf(修改出生日期(y/n)?); ch=getchar();getchar(); if(ch=y|ch=Y) printf(输入出生日期:); scanf(%s,si.birthday); getchar(); printf(修改居住地址(y/n)?); ch=getchar();getchar(); if(ch=y|ch=Y) printf(输入居住地址:); scanf(%s,si.addr); getchar(); printf(修改联系电话(y/n)?); ch=getchar();getchar(); if(ch=y|ch=Y) printf(输入联系电话:); scanf(%s,si.tele); getchar(); printf(修改邮箱地址(y/n)?); ch=getchar();getchar(); if(ch=y|ch=Y) printf(输入邮箱地址:); scanf(%s,si.email); getchar(); printf(n); return;(10) 排序函数void sort(struct stu s,int n)int m; printf(请选择查询方式n); printf(*n); printf(1 按学号排序n); printf(2 按年龄排序n); printf(*n); printf(n请输入您的选择:); scanf(%d,&m); switch(m) case 1:sortbynum(s,n);break; case 2:sortbyold(s,n);break; default : printf(输入有误,请输入1-2的选项!n); a) 按年龄排序;void sortbyold(struct stu s,int n) int i,j; struct stu temp; for(i=1;in;i+) for(j=0;jsj+1.old) strcpy(temp.num,sj.num); strcpy(,); strcpy(temp.sex,sj.sex); strcpy(temp.addr,sj.addr); strcpy(temp.birthday,sj.birthday); strcpy(temp.tele,sj.tele); strcpy(temp.email,sj.email); strcpy(temp.nation,sj.nation); temp.old=sj.old; strcpy(sj.num,sj+1.num); strcpy(,sj+1.name); strcpy(sj.sex,sj+1.sex); strcpy(sj.addr,sj+1.addr); strcpy(sj.birthday,sj+1.birthday); strcpy(sj.tele,sj+1.tele); strcpy(sj.email,sj+1.email); strcpy(sj.nation,sj+1.nation); sj.old=sj+1.old; strcpy(sj+1.num,temp.num); strcpy(sj+1.name,); strcpy(sj+1.sex,temp.sex); strcpy(sj+1.addr,temp.addr); strcpy(sj+1.birthday,temp.birthday); strcpy(sj+1.tele,temp.te

温馨提示

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

评论

0/150

提交评论