问题描述:
对学生信息进行管理,学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
基本要求
(1)    系统以菜单方式工作;
(2)    学生信息录入功能(学生信息用文件保存);
(3)    学生信息浏览功能;
(4)    查询、排序功能。可以按学号、按姓名查询;
(5)    学生信息的删除与修改


#include<bits/stdc++.h>//万能头文件
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h> typedef struct//学号,姓名,年龄,性别,出生年月,地址,电话,E-mail
{char num[20];char name[20];char age[3];char sex[5];char birth[30];char home[50];char tel[15];char mail[20];
}Student;
Student stu[80];int Input(Student stud[],int n)//学生信息录入功能
{
int i=0;
char s;
while(s!='n'&&s!='N')
{
printf("\t学生学号 :");
scanf("\t%s",stud[n+i].num);
printf("\t学生姓名 :");
scanf("\t%s",stud[n+i].name);
printf("\t学生年龄 :");
scanf("\t%s",stud[n+i].age);
printf("\t学生性别 :");
scanf("\t%s",&stud[n+i].sex);
printf("\t学生生日 :");
scanf("\t%s",&stud[n+i].birth);
printf("\t学生住址 :");
scanf("\t%s",&stud[n+i].home);
printf("\t学生电话 :");
scanf("\t%s",&stud[n+i].tel);
printf("\t学生邮箱 :");
scanf("\t%s",&stud[n+i].mail);
printf("还有吗?(Y/N)");
scanf("\t%c",&s);
i++;
}
return(n+i);
} void print(Student stud[],int n)//输出学生信息
{int i; printf("学号\t   姓名\t 年龄 性别  出生日期\t家庭住址                 电话\t        邮箱\n");for(i=1;i<n+1;i++) /*循环输入*/ { printf("%-10s%-8s%-5s%-5s%-12s%-25s%-15s%-15s\n",stud[i-1].num,stud[i-1].name,stud[i-1].age,stud[i-1].sex,stud[i-1].birth,stud[i-1].home,stud[i-1].tel,stud[i-1].mail); }
printf("\t\t\t");
system("pause");
}int fnd_by_num(Student stud[],int n) //按学号找人
{
char s[20];
int i=0;
printf("请告诉我TA的学号:");
scanf("%s",s);
while(strcmp(stud[i].num,s)!=0&&i<n) i++; //查找
if(i==n)
{
printf("\t\t\t没有找到!\n"); //失败
return(n);
}
printf("学号\t   姓名\t 年龄 性别  出生日期\t家庭住址                 电话\t        邮箱\n");
printf("%-10s%-8s%-5s%-5s%-12s%-25s%-15s%-15s\n",stud[i].num,stud[i].name,stud[i].age,stud[i].sex,stud[i].birth,stud[i].home,stud[i].tel,stud[i].mail);
}int fnd_by_name(Student stud[],int n) //按姓名找人
{
char s[20];
int i=0;
printf("请告诉我TA的姓名:");
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; //查找判断
if(i==n)
{ printf("\t\t\t没有找到!\n"); //失败
return(n);
}
printf("学号\t   姓名\t 年龄 性别  出生日期\t家庭住址                 电话\t        邮箱\n");
printf("%-10s%-8s%-5s%-5s%-12s%-25s%-15s%-15s\n",stud[i].num,stud[i].name,stud[i].age,stud[i].sex,stud[i].birth,stud[i].home,stud[i].tel,stud[i].mail);
}void Sort_by_num(Student stud[],int n) //按学号排序
{
int i,j,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{
strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t); //学号 strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t); //姓名 strcpy(t,stud[j+1].age);
strcpy(stud[j+1].age,stud[j].age);
strcpy(stud[j].age,t); //年龄 strcpy(t,stud[j+1].sex);
strcpy(stud[j+1].sex,stud[j].sex);
strcpy(stud[j].sex,t); //性别 strcpy(t,stud[j+1].birth);
strcpy(stud[j+1].birth,stud[j].birth);
strcpy(stud[j].birth,t); //生日 strcpy(t,stud[j+1].home);
strcpy(stud[j+1].home,stud[j].home);
strcpy(stud[j].home,t); //住址 strcpy(t,stud[j+1].tel);
strcpy(stud[j+1].tel,stud[j].tel);
strcpy(stud[j].tel,t); //电话 strcpy(t,stud[j+1].mail);
strcpy(stud[j+1].mail,stud[j].mail);
strcpy(stud[j].mail,t); //邮箱 }
printf("\n\n排序完成!\n\n");
printf("学号\t   姓名\t 年龄 性别  出生日期\t家庭住址                 电话\t        邮箱\n");for(i=1;i<n+1;i++) /*循环输入*/ { printf("%-10s%-8s%-5s%-5s%-12s%-25s%-15s%-15s\n",stud[i-1].num,stud[i-1].name,stud[i-1].age,stud[i-1].sex,stud[i-1].birth,stud[i-1].home,stud[i-1].tel,stud[i-1].mail); } }void Sort_by_name(Student stud[],int n) //按姓名排序
{
int i,j,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].name,stud[j+1].name)>0)
{
strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t); //学号 strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t); //姓名 strcpy(t,stud[j+1].age);
strcpy(stud[j+1].age,stud[j].age);
strcpy(stud[j].age,t); //年龄 strcpy(t,stud[j+1].sex);
strcpy(stud[j+1].sex,stud[j].sex);
strcpy(stud[j].sex,t); //性别 strcpy(t,stud[j+1].birth);
strcpy(stud[j+1].birth,stud[j].birth);
strcpy(stud[j].birth,t); //生日 strcpy(t,stud[j+1].home);
strcpy(stud[j+1].home,stud[j].home);
strcpy(stud[j].home,t); //住址 strcpy(t,stud[j+1].tel);
strcpy(stud[j+1].tel,stud[j].tel);
strcpy(stud[j].tel,t); //电话 strcpy(t,stud[j+1].mail);
strcpy(stud[j+1].mail,stud[j].mail);
strcpy(stud[j].mail,t); //邮箱 }
printf("\n\n排序完成!\n\n");
printf("学号\t   姓名\t 年龄 性别  出生日期\t家庭住址                 电话\t        邮箱\n");for(i=1;i<n+1;i++) /*循环输入*/ { printf("%-10s%-8s%-5s%-5s%-12s%-25s%-15s%-15s\n",stud[i-1].num,stud[i-1].name,stud[i-1].age,stud[i-1].sex,stud[i-1].birth,stud[i-1].home,stud[i-1].tel,stud[i-1].mail); } }int del_a_student(Student stud[],int n) //删除学生信息
{
char s[20];
int i=0,j;
printf("请告诉我TA的学号:");
scanf("%s",s);
while((strcmp(stud[i].num,s)!=0)&&i<n) i++; //查找
if(i==n)
{ printf("\t\t\t没有找到!\n"); //失败
return(n);
}for(j=i;j<n-1;j++) /*删除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
strcpy(stud[j].age,stud[j+1].age);
strcpy(stud[j].sex,stud[j+1].sex);
strcpy(stud[j].birth,stud[j+1].birth);
strcpy(stud[j].home,stud[j+1].home);
strcpy(stud[j].tel,stud[j+1].tel);
strcpy(stud[j].mail,stud[j+1].mail);
}
printf("   成功删除信息!\n"); /*返回成功信息*/
return(n-1);
} void WritetoText(Student stud[],int n) //写入到文件
{
int i=0;
FILE *fp;
char filename[20];
printf("输入文件名:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("无法打开\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n);
while(i<n)
{
fprintf(fp,"%-10s%-8s%-5s%-5s%-12s%-25s%-15s%-15s\n",stud[i].num,stud[i].name,stud[i].age,stud[i].sex,stud[i].birth,stud[i].home,stud[i].tel,stud[i].mail);
i++;
}
fclose(fp);
printf("成功!\n");
} int AddfromText(Student stud[],int n) /*从文件中读入数据*/
{
int i=0,num;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("请输入文件名:");
scanf("%s",filename); /*输入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/
{
printf("无法打开文件\n"); /*打开失败信息*/
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*读入总记录量*/
while(i<num) /*循环读入数据*/
{
fscanf(fp,"%s%s%s%s%s%s%s%s",stud[i].num,stud[i].name,stud[i].age,stud[i].sex,stud[i].birth,stud[i].home,stud[i].tel,stud[i].mail);
i++;
}
n+=num;
fclose(fp); /*关闭文件*/
printf("成功录入数据");
system("pause");
return(n);
} void menu()//菜单界面
{printf("*****************Welcome*****************\n\n");printf("        0.退出系统\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\n");printf("*****************************************\n");}int main()//主函数
{int n;while(1){menu(); //菜单 int c=0,n;int d=0;scanf("%d",&c);switch(c){ case 0:system("pause");exit(0);break;case 1:printf("-------------------录入信息------------------\n");printf("手动录入请按1、从文件读取请按2\n");scanf("%d",&d);if(d==1)n=Input(stu,n);if(d==2)n=AddfromText(stu,n);break;case 2:printf("-------------------浏览信息------------------\n");print(stu,n);break;case 3:printf("------------------按学号查找------------------\n");fnd_by_num(stu,n);break;case 4:printf("------------------按姓名查找------------------\n");fnd_by_name(stu,n);break;case 5:printf("------------------按学号排序------------------\n");Sort_by_num(stu,n);break;case 6:printf("------------------按姓名排序------------------\n");Sort_by_name(stu,n);break;case 7:printf("------------------增加信息------------------\n");n=Input(stu,n); break;case 8:printf("------------------删除信息------------------\n");n=del_a_student(stu,n);break;case 9:printf("------------------保存到文件------------------\n");WritetoText(stu,n);break;default:printf("你想干嘛?没这个功能,重新选一下吧") ;system("pause"); break;}system("pause");system("cls");//清空上一回车的东西; }return 0;
}

C语言 课程设计 学生信息管理相关推荐

  1. c语言课程设计查找分数与删除元素,c语言课程设计学生成绩管理系统

    <c语言课程设计学生成绩管理系统>由会员分享,可在线阅读,更多相关<c语言课程设计学生成绩管理系统(31页珍藏版)>请在人人文库网上搜索. 1.河南理工大学计算机科学与技术学院 ...

  2. 考勤管理系统c语言,C语言课程设计学生考勤系统最终版(范文1)

    <C语言课程设计学生考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<C语言课程设计学生考勤系统(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文 ...

  3. C语言成绩统计源代码,C语言课程设计学生成绩管理系统+源码

    <C语言课程设计学生成绩管理系统+源码>由会员分享,可在线阅读,更多相关<C语言课程设计学生成绩管理系统+源码(25页珍藏版)>请在人人文库网上搜索. 1.简易教学管理系统的设 ...

  4. C语言学生成绩管理设计总结,C语言课程设计学生成绩管理系统个人总结

    C语言课程设计学生成绩管理系统个人总结 C语言课程设计--学生成绩管理系统 个人心得体会 (徐州工程学院 14计嵌1班 07组 张凯) 这一周以来的课程设计,不仅让我明白了C语言的确是一门很有用的,但 ...

  5. c语言写考勤系统,C语言课程设计学生考勤系统

    <C语言课程设计学生考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<C语言课程设计学生考勤系统>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜 ...

  6. C语言课程信息管理系统课程设计,c语言课程设计学生信息管理系统.doc

    c语言课程设计学生信息管理系统 课程设计报告 课程名称: 高级语言程序设计课程设计 姓 名: 汤璞君 班级学号: BX1209 121003410937 指导教师: 吉顺如 完成日期: 2013.6. ...

  7. c语言程序设计学生考勤系统,C语言课程设计学生考勤系统最终版(样例3)

    <C语言课程设计学生考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<C语言课程设计学生考勤系统(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文 ...

  8. c语言学生档案管理课设作业,2019-2020年c语言课程设计学生档案管理系统实验报告.doc...

    2019-2020年c语言课程设计学生档案管理系统实验报告.doc 还剩 10页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: *********C 语 ...

  9. 班级学籍管理系统c语言论文,c语言课程设计学生学籍管理系统论文.doc

    c语言课程设计学生学籍管理系统论文 PAGE PAGE 2 1. 课题的主要功能 1.1 需求分析. 程序的功能: 对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入.显示.修改.删 ...

最新文章

  1. python中分支结构有几种各有什么特点_「武鹏有课」Python分支结构的种类
  2. arm linux下编译库System.Net.Primitives.dll和System.Xml.XmlSerializer.dll
  3. 百度工程师控制公司服务器“挖矿”:4个月赚10万 判刑3年
  4. 小师妹学JVM之:cache line对代码性能的影响
  5. Spring—Quartz定时调度CronTrigger时间配置格式说明与实例
  6. 命令(CMD)终端的清屏(清除/清空)命令/快捷键
  7. php中函数的使用方法,php中header()函数的使用方法
  8. ThreadManager
  9. 1546: 回形取数
  10. 【STM32F407的DSP教程】第1章 初学数字信号处理准备工作
  11. 通过2048学习自定义view(二) 滑动事件监听 与 事件回调
  12. 【原创】2021-2000上市公司重污染企业数据、上市公司重污染行业数据(常用变量均包括,可直接用)
  13. c语言中judge的用法,judge的用法总结大全
  14. 使用three.js创建一个正方体
  15. NAT类型与P2P游戏
  16. 教大家做蛋黄酥的做法
  17. python正则表达式例题_python—正则表达式实例
  18. MITxPro平台 Base SPOC-MachineLearning, Modeling, and Simulation Principles 课后习题参考答案
  19. 技术架构分析:攻克Dota2的OpenAI-Five
  20. 查看linux最大的sftp连接数,Linux查看某个端口的连接数的方法

热门文章

  1. Windows 桌面系统图标显示或隐藏
  2. 探秘最新Linux内核中的自旋锁
  3. MySQL 中constant_thinkphp提示Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'报错的解决方法...
  4. 氨法烟气脱硫都有哪些工艺?
  5. 基于JAVA国外摇滚乐队交流和周边售卖系统计算机毕业设计源码+数据库+lw文档+系统+部署
  6. 2023计算机毕业设计-个人博客文章管理系统springboot-JAVA.VUE(论文+开题报告+运行)
  7. 基于Dubbo分布式超市进销存管理
  8. 《万万没想到——用理工科的思维看世界》读书笔记(三)笔记本就是力量
  9. iphone6的750x1334分辨率排版开发APP及小程序的原因
  10. Netflix Eureka 简介、架构原理、及服务发现