C下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
来源:互联网 发布:r语言与数据分析实战 编辑:程序博客网 时间:2024/06/07 06:58
学生管理系统是初学者网络编程通常要遇到的问题,本人小菜鸟,一个月前做了这一类题,拿出来和初学者分享一下。。。说的不好,有错误欢迎指正( ^_^ )
先说C下(python下也有,见下一篇,两个并不起来,汗):
首先是界面的建立,这个不用说了吧,便于对这个系统进行管理;其次是从文件中读取信息,打开文件,定义指针读取即可;增、删、查找这些都比较简单,略过。重点讲一下如何统计各邮箱的使用人数:因为学生信息是事先知道的,所以只要把他们的各个邮箱种类存放到数据里面(比如char qq[10]="qq.com"),然后从文件中取出每个学生相应的邮箱信息和每个邮箱类的数组strcmp,如果比较结果为0,那么该类的邮箱使用人数就++,这样,最后只要输出就O了。关键性问题来了,如何找到文件中的对应学生的邮箱呢?我是这样想的:找到‘@’作为一个标志,读取它后面的字符,如果以‘.com’结尾就读到m为止,如果以‘.cn’或者其他的非主流邮箱,自己可以想办法找到标志性结尾,这里只提供一种思路,毕竟自己解决自己的问题是最快乐的,我就不夺人之乐了。
自己写的C程序:
#include <stdio.h>#include <stdlib.h>#include <string.h>#define true 1int Number;struct student { char name[20]; char id[10]; char sex[10];char age[10];char tel[12];char mail[40];}; int duqu(struct student st[]);//ovoid xianshi(); //ovoid add(); //ovoid select(); //ovoid chazhao(); //ovoid del(); //ovoid tongji(); void fh(); //ostruct student st[31]; struct student stu;void main() { int choose=0;FILE *fp=NULL;char yesorno; if((fp=fopen("student.txt","rb"))==NULL) { printf("\n=========>提示:文件不存在,是否要创建一个?(y/n)\n"); scanf("%c",&yesorno); if(yesorno=='y'||yesorno=='Y') { fp=fopen("D:\\student.txt","wb"); fclose(fp); } else exit(0); } else { Number=duqu(st); } system("cls"); //清屏while(true) { xianshi(); printf("\t\t====>请选择:"); scanf("%d",&choose); system("cls"); switch(choose) { case 0: exit(0);fh();break; case 1: add();fh();break; case 2: select();fh();break; case 3: chazhao();fh();break; case 4: del();fh();break; case 5: tongji();fh();break; default:break; } fflush(stdin); //清空输入缓冲区,一是scanf函数未能读取的回车键,此时也可以用getchar();二是输入与scanf函数不能匹配的格式。getchar(); system("cls"); } } void fh() { printf("\t===>按Enter键返回主菜单\n");} void tongji() { int i;char qq[10]="qq.com"; char sina[10]="sina.com"; char onetwosix[10]="126.com"; char onesixthree[10]="163.com"; char sohu[10]="sohu.com";char bj[10];int q=0,s=0,ots=0,ost=0,sh=0;//....................................... /*FILE *fp; fp=fopen("D:\\mail.txt","w"); i=0; while (i<Number) { fprintf(fp,"%s\n",st[i].mail); i++; } fclose(fp);*///......................................... FILE *fp2; fp2=fopen("D:\\mail.txt","r"); char ch; while (! feof(fp2)) { memset(bj,0,sizeof(bj)); ch=fgetc(fp2); if (ch=='@') { ch=fgetc(fp2); bj[0]=ch; ch=fgetc(fp2); bj[1]=ch; ch=fgetc(fp2); bj[2]=ch; ch=fgetc(fp2); bj[3]=ch; ch=fgetc(fp2); bj[4]=ch; ch=fgetc(fp2); bj[5]=ch; if (ch!='m') { ch=fgetc(fp2); bj[6]=ch; if (ch!='m') { ch=fgetc(fp2); bj[7]=ch; } } printf("%s\n",bj); } if (strcmp((char *)qq,(char *)bj)==0)//(char *)强制转换。。。。 { q++; } if (strcmp((char *)sina,(char *)bj)==0) { s++; } if (strcmp((char *)onetwosix,(char *)bj)==0) { ots++; } if (strcmp((char *)onesixthree,(char *)bj)==0) { ost++; } if (strcmp((char *)sohu,(char *)bj)==0) { sh++; } } printf("qq邮箱使用人数:%d\n",q); printf("sina邮箱使用人数:%d\n",s); printf("126邮箱使用人数:%d\n",ots); printf("163邮箱使用人数:%d\n",ost); printf("sohu邮箱使用人数:%d\n",sh);//...................................待续} void del() { FILE *fp=NULL; char id[10];int i=0; int j=0; printf("请输入要删除的学生学号:"); scanf("%s",id); for(i=0;i <Number;i++){ if (strcmp(id,st[i].id)==0) { for (j=i;j <Number-1;j++) { st[j]=st[j+1];st[j+1]=st[30];//把另外一个都变为0。} Number--; } } fp=fopen("D:\\student.txt","w"); for (i=0;i <Number;i++) { fwrite(&st[i],sizeof(struct student),1,fp);} fclose(fp); printf("删除成功;\n");} void chazhao() { char id[10]; int i=0; printf("请输入要查找学生的学号:"); scanf("%s",id); system("cls"); printf("\t姓名\t学号\t性别\t年龄\t电话\t邮箱\n"); for(i=0;i<Number;i++) { if (strcmp(id,st[i].id)==0) {printf("\t%s\t%s\t%s\t%s\t%s\t%s\n",st[i].name,st[i].id,st[i].sex,st[i].age,st[i].tel,st[i].mail); } } } void select() { int i=0; printf("以下是全部学生信息\n"); printf("\t姓名\t学号\t性别\t年龄\t电话 \t邮箱\n"); for(i=0;i < Number;i++) { printf("\t%s\t%s\t%s\t%s\t%s \t%s\n",st[i].name,st[i].id,st[i].sex,st[i].age,st[i].tel,st[i].mail);} } void add() { printf("输入要添加的同学信息\n"); printf("姓名:"); scanf("%s",&stu.name); printf("学号:"); scanf("%s",&stu.id); printf("性别:"); scanf("%s",&stu.sex); printf("年龄:"); scanf("%s",&stu.age); printf("电话:"); scanf("%s",&stu.tel); printf("邮箱:"); scanf("%s",&stu.mail); FILE *fp; fp=fopen("D:\\student.txt","a"); while(fp != NULL) { fprintf(fp,"\n%s\n%s\n%s\n%s\n%s\n%s",stu.name,stu.id,stu.sex,stu.age,stu.tel,stu.mail); break; } printf("添加成功\n"); Number++; fclose (fp);} int duqu(struct student st[]) { FILE *fp; int i=0; fp=fopen("D:\\student.txt","r"); while(!feof(fp)){fscanf(fp,"%s\n",&st[i].name);fscanf(fp,"%s\n",&st[i].id);fscanf(fp,"%s\n",&st[i].sex);fscanf(fp,"%s\n",&st[i].age);fscanf(fp,"%s\n",&st[i].tel);fscanf(fp,"%s\n",&st[i].mail);i=i+1;}fclose(fp);return i;} void xianshi() { printf("\t*****************************************************************\n"); printf("\t* *\n"); printf("\t* 学生成绩管理系统 *\n"); printf("\t* *\n"); printf("\t* [1] 增加学生信息 [2] 查看学生信息 *\n"); printf("\t* [3] 查找学生信息 [4] 删除学生信息 *\n"); printf("\t* [5] 统计(邮箱使用人数) [0] 退出系统 *\n"); printf("\t*****************************************************************\n");}
- C下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- python下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- 学生管理系统(C++,控制台,文件读取,姓名排序)
- C语言之结构体(求学生中语文成绩最低的学生,并输出学生信息)
- c语言实现的简单学生管理系统
- 简单的学生统计程序
- 双链表实现简单的学生管理系统
- 【C语言】文件常用读写操作(含读取学生信息示例)
- 编写一个学生管理系统程序,用来记录学生的信息(包括姓名、年龄、性别、学号、分数),提供增加、删除、查询学生信息的入口
- Linux环境下C语言实现简单的基于文件的学生信息管理系统
- 建立一个文件,在文件中输入学生信息,查找文件,输出学生的信息
- 简单的学生管理系统
- 简单的学生管理系统
- 简单的学生管理系统
- 简单的 学生管理系统
- 简单的学生管理系统
- 【分享】分享一个基于SSH实现的简单学生选课系统(附源码)
- JBoss AS7 用户指南
- [USACO]clocks
- Linux进程控制
- mvc 发送邮件(可选多人)
- .net 常用格式化公式
- C下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- OGNL表达式struts2标签“%,#,$”
- FCKeditor的简易配置
- uva 工具网站 顶 顶!!!
- 如何让网站更容易被搜索到
- mutt发送HTML格式的邮件(简单的数据备份通知例子)
- LR中点鼠标做关联(winsock协议)-转自Zee博客
- 【框架解析】Hadoop系统分析(五)--namenode其他
- Asp.net缓存的简单使用