#include int shoudsave=0; // struct student { char num[10];//学号 char name[20]; int cgrade; int mgrade; int egrade; int totle; int ave; }; typedef struct node { struct student data; struct node *next; }Node,*Link; void menu() { printf("********************************************************************************"); printf("/t1输入学生资料/t/t/t/t/t2删除学生资料/n"); printf("/t3查询学生资料/t/t/t/t/t4修改学生资料/n"); printf("/t5显示学生资料/t/t/t/t/t6统计学生成绩/n"); printf("/t7排序学生成绩/t/t/t/t/t8保存学生资料/n"); printf("/t9获取帮助信息/t/t/t/t/t0退出系统/n"); printf("********************************************************************************/n"); } void printstart() { printf("-----------------------------------------------------------------------/n"); } void Wrong() { printf("/n=====>提示:输入错误!/n"); } void Nofind() { printf("/n=====>提示:没有找到该学生!/n"); } void printc() // 本函数用于输出中文 { printf(" 学号/t 姓名 英语成绩 数学成绩 C语言成绩 总分 平均分/n"); } void printe(Node *p)//本函数用于输出英文 { printf("%-12s%s/t%d/t%d/t%d/t %d/t %d/n",p->data.num,p->data.name,

p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave); } Node* Locate(Link l,char findmess[],char nameornum[]) //该函数用于定位连表中符合要求的接点,并返回该指针 { Node *r; if(strcmp(nameornum,"num")==0) //按学号查询 { r=l->next; while(r) { if(strcmp(r->data.num,findmess)==0) return r; r=r->next; } } else if(strcmp(nameornum,"name")==0) //按姓名查询 { r=l->next; while(r) { if(strcmp(r->data.name,findmess)==0) return r; r=r->next; } } return 0; } void Add(Link l) //增加学生 { Node *p,*r,*s; char num[10]; r=l; s=l->next; while(r->next!=NULL) r=r->next; //将指针置于最末尾 while(1) { printf("请你输入学号(以'0'返回上一级菜单:)"); scanf("%s",num); if(strcmp(num,"0")==0) break; while(s) { if(strcmp(s->data.num,num)==0) { printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!/n",num); printstart(); printc(); printe(s); printstart(); printf("/n"); return; } s=s->next; } p=(Node *)malloc(sizeof(Node)); strcpy(p->data.num,num); printf("请你输入姓名:"); scanf("%s",p->data.name); getchar(); printf("请你输入c语言成绩:"); scanf("%d",&p->data.cgrade); getchar(); printf("请你输入数学成绩:"); scanf("%d",&p->data.mgrade); getchar(); printf("请你输入英语成绩:"); scanf("%d",&p->data.egrade); getchar(); p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade; p->data.ave=p->data.totle / 3; //信息输入已经完成 p->next=NULL; r->next=p; r=p; shoudsave=1; } } void Qur(Link l) //查询学生 { int sel; char findmess[20]; Node *p; if(!l->next) { printf("/n=====>提示:没有资料可以查询!/n"); return; } printf("/n=====>1按学号查找/n=====>2按姓名查找/n"); scanf("%d",&sel); if(sel==1)//学号 { printf("请你输入要查找的学号:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) { printf("/t/t/t/t查找结果/n"); printstart(); printc(); printe(p); printstart(); } else Nofind(); } else if(sel==2) //姓名 { printf("请你输入要查找的姓名:"); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) { printf("/t/t/t/t查找结果/n"); printstart(); printc(); printe(p); printstart(); } else Nofind(); } else Wrong(); } void Del(Link l) //删除 { int sel; Node *p,*r; char findmess[20]; if(!l->next) { printf("/n=====>提示:没有资料可以删除!/n"); return; } printf("/n=====>1按学号删除/n=====>2按姓名删除/n"); scanf("%d",&sel); if(sel==1) { printf("请你输入要删除的学号:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) { r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); printf("/n=====>提示:该学生已经成功删除!/n"); shoudsave=1; } else Nofind(); } else if(sel==2) { printf("请你输入要删除的姓名:"); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) { r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); printf("/n=====>提示:该学生已经成功删除!/n"); shoudsave=1; } else Nofind(); } else Wrong(); } void Modify(Link l) { Node *p; char findmess[20]; if(!l->next) { printf("/n=====>提示:没有资料可以修改!/n"); return; } printf("请你输入要修改的学生学号:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) { printf("请你输入新的c语言成绩(原来是%d分):",p->data.cgrade); scanf("%d",&p->data.cgrade); getchar(); printf("请你输入新的数学成绩(原来是%d分):",p->data.mgrade); scanf("%d",&p->data.mgrade); getchar(); printf("请你输入新的英语成绩(原来是%d分):",p->data.egrade); scanf("%d",&p->data.egrade); printf("/n=====>提示:资料修改成功!/n"); shoudsave=1; } else Nofind(); } void Disp(Link l) { int count=0; Node *p; p=l->next; if(!p) { printf("/n=====>提示:没有资料可以显示!/n"); return; } printf("/t/t/t/t显示结果/n"); printstart(); printc(); printf("/n"); while(p) { printe(p); p=p->next; } printstart(); printf("/n"); } void Save(Link l) { FILE* fp; Node *p; int flag=1,count=0; fp=fopen("c://student","wb"); if(fp==NULL) { printf("/n=====>提示:重新打开文件时发生错误!/n"); exit(1); } p=l->next; while(p) { if(fwrite(p,sizeof(Node),1,fp)==1) { p=p->next; count++; } else { flag=0; break; } } if(flag) { printf("/n=====>提示:文件保存成功.(有%d条记录已经保存.)/n",count); shoudsave=0; } fclose(fp); } int main() { Link l;//连表 FILE *fp; //文件指针 int sel; char ch; int count=0; Node *p,*r; printf("/t/t/t/t学生成绩管理系统/n/t/t/t-------------------------------/n"); l=(Node*)malloc(sizeof(Node)); l->next=NULL; r=l; fp=fopen("C://student","ab+"); if(fp==NULL) { printf("/n=====>提示:文件不能打开!/n"); exit(0); } printf("/n=====>提示:文件已经打开,正在导入记录....../n"); while(!feof(fp)) { p=(Node*)malloc(sizeof(Node)); if(fread(p,sizeof(Node),1,fp)==1) //将文件的内容放入接点中 { p->next=NULL; r->next=p; r=p; //将该接点挂入连中 count++; } } fclose(fp); //关闭文件 printf("/n=====>提示:记录导入完毕,共导入%d条记录./n",count); menu(); while(1) { printf("请你选择操作:"); scanf("%d",&sel); if(sel==0) { if(shoudsave==1) { getchar(); printf("/n=====>提示:资料已经改动,是否将改动保存到文件中(y/n)?/n"); scanf("%c",&ch); if(ch=='y'||ch=='Y') Save(l); } printf("/n=====>提示:你已经退出系统,再见!/n"); break; } switch(sel) { case 1:Add(l);break; //增加学生 case 2:Del(l);break;//删除学生 case 3:Qur(l);break;//查询学生 case 4:Modify(l);break;//修改学生 case 5:Disp(l);break;//显示学生 case 8:Save(l);break;//保存学生 case 9:printf("/t/t/t==========帮助信息==========/n");menu();break; default: Wrong();getchar();break; } }

while (l){ //释放链表l(不是1)所占用的内存! p = l; l = l->next; free(p); } getch(); return 0; }

如何用C语言做学籍管理系统,C语言实现简单学籍管理系统相关推荐

  1. python语言做数据采集_【语言处理与Python】11.3数据采集

    从网上获取数据 我们讨论过访问单个文件,如RSS订阅.搜索引擎的结果. 1.有的时候,还需要大量的WEB文本.最简单的方法是获得出版的网页文本的文集.在http://www.sigwac.org.uk ...

  2. 人事管理系统html,JSP实现简单人事管理系统

    本文实例为大家分享了JSP实现简单人事管理系统的具体代码,供大家参考,具体内容如下 此系统使用jsp实现,其中包含了jsp九大内置对象和四大作用域的相关知识,采用map集合模拟数据库的方式,实现用户登 ...

  3. 如何用c语言做高精度计算原理,C语言羁绊之高精度乘法计算

    很大一部分借鉴了(C语言的高精度算法)这一博客,你们可以去看看.欢迎指正!!! 1,定义 对于计算机无法用普通数据类型(如:longint)表示的大整数进行乘法运算,称为高精度算法.这里的高精度乘法主 ...

  4. 用R语言做词频统计_R语言 | 词频统计

    Python网络爬虫与文本数据分析 本章内容 导入停用词 读数据,分词 剔除停用词 导入停用词表 library(dplyr) ## [1] "?" "." & ...

  5. R语言做GGEbiplot_基于R语言的GGE双标图在大豆区试中的应用

    基于 R 语言的 GGE 双标图在大豆区试中的应用 * 昝 凯,陈亚光,徐淑霞 ** ,周青,张志民,杨慧凤,王凤菊,李明军,郭海芳 [摘 要] 摘要:为合理评价大豆区域试验中品系的丰产性.稳产性和适 ...

  6. C语言做线性分析,C语言版的线性回归分析函数

    前几天,清理出一些十年以前 DOS 下的程序及代码,看来目前也没什么用了,想打个包刻在光碟上,却发现有些代码现在可能还能起作用,其中就有计算一元回归和多元回归的代码,一看代码文件时间,居然是 1993 ...

  7. 用C语言做520表白图(较简单)

    #include <stdio.h> #include <stdlib.h>int main() {int i,k;printf("我我我我我我 爱爱爱爱爱爱 你你你 ...

  8. 基于Access数据库利用ASP平台开发的简单工资管理系统

    上学期学习了数据库这门课程,老师就布置了一个学期的课程设计,有很多题目可以选择,我选择的是工资管理系统.由于大四时间比较紧张,我做了一个很简易的工资管理系统,它包括对数据库最基本的集中操作,inser ...

  9. 如何用c语言做衣物存放系统,C语言实现简单的图书管理系统

    本文实例为大家分享了C语言实现简单图书管理系统的具体代码,供大家参考,具体内容如下 代码: /* 课程设计项目名称:图书查询系统 作者:施瑞文 时间:2018.3.4 */ #include #inc ...

  10. 用C语言做了一个外卖管理系统

    用C语言做了一个外卖管理系统,则希望可以模拟网上订餐,店家工作,专人管理的过程.并实现注册与登录以及基本信息的输出.各位大佬不喜勿喷 管理员端可以查看店铺信息,店铺信息修改(分为增删改查),处理申请店 ...

最新文章

  1. 使用VMware虚拟机安装Windows8系统
  2. 输出表格_做造价不会编工程量清单?276个造价表格同步输出,告别晚加班
  3. iAPP(05)自习室占座
  4. 大规模markpoint特效
  5. 数据这么多,且看R语言怎么处理!
  6. 不同操作系统打开文件浏览器(资源管理器)的方式
  7. opencvpython教程百度云资源_Python+OpenCV图像处理入门,视频教程下载
  8. Sql Server 2016数据库生成带数据的脚本
  9. Intel 14nm PowerVR GPU成功验收:三星、台积电侧目
  10. Data Guard跳归档恢复的案例
  11. gsm短信猫长短信pdu数据包分析[转]
  12. Instagram新推两款AI过滤工具,没错!背后功臣就是Deep Text
  13. linux查看日志内存,关于linux查询内存,CPU,存储空间和日志查询的的常用命令及参数-站长资讯中心...
  14. java计算机毕业设计风情旅游网站源码+mysql数据库+系统+lw文档+部署
  15. 51单片机制作简易计算器(动态数码管、矩阵按键)
  16. 很强大的上网行为管理终端软件-云子可信-一键禁止访问视频网站
  17. ONLYOFFICE支持wps格式文件(wps,et,dps)的协作
  18. 华为鸿蒙系统基于安卓系统方面有哪些提升
  19. Docker managed volume
  20. Sql Server 快速查看表结构

热门文章

  1. 公共服务机器人能给传统服务行业带来哪些变化?
  2. 彻底关闭win10恶心的开始菜单广告
  3. 你应当如何学习C++(以及编程)
  4. 使用vue-mugen-scroll组件实现pc端滚动刷新
  5. STM32通过PWM产生频率为20HZ占空比为50%方波,并通过单片机测量频率并显示
  6. 编写Android象棋游戏
  7. QQ分享的图标文字标题设置
  8. 三款开源工具让你的演示脱颖而出
  9. IMS/SIP学习(4)——subscribe、notify、invite过程
  10. 计算机丢失physxloader.dll,physxloader.dll