学生信息管理系统

1.题目与要求

1.1 问题提出

​ 由于计算机技术的飞速发展,C语言作为一项编程的基础语言,它对计算机行业有着很大的贡献,我们组计划用C语言编写一个学生信息管理系统,主要用来对学生基本信息的管理,使教师对学生信息进一步了解,为老师提供很好的了解渠道。

1.2 本系统涉及的知识点

switch循环语句,参数的传递,字符串,数组,链表,指针,while语句,简单 输入输出语句,分支,函数定义,函数的递归调用

1.3 功能要求

(1)数据管理:
要求:学生信息数据要以文件的形式保存,此模块包括子模块有:录入学生信息、删除学生信息、修改学生信息
(2)数据查询:
要求:查询时可实现按学号查询、按姓名查询
(3)数据浏览:
要求:输出录入信息的全部学生的基本信息

2.功能设计

2.1 算法设计

本系统需要实现的功能要求:
1) 利用switch语句设计如图1所示的主菜单:

录入学生信息
学生信息浏览
学生信息查询
修改学生信息
删除学生信息
退出学生管理系统

图1 学生信息管理系统主菜单
(2) 选择2后,程序自动为你提供全部学生信息
(3) 选择3后,进入学生信息查询阶段,可以根据学号和姓名查询学生成绩,也可以打印全部学生信息。

1.按学号查询
2.按姓名查询
3.打印全部学生信息
4.返回主菜单
图2:学生信息查询

(4) 选择4后,程序会根据你提供的学号自动为你找出该学生的信息,并问你需要改学生的哪一项信息,之后可以提供该学生的新的信息。
(5) 选择5后,程序可以根据你提供的学号删除对应的学生信息。
2.2学生信息管理系统的菜单
学生信息管理系统主模块如下:

学生信息管理系统的信息查询模块如下

程序代码设计
程序代码设计中的函数:
录入信息函数:void register()
浏览信息函数:void scan()
信息查询函数:void search()
修改信息函数:void modify()
删除信息函数:void del()
退出程序函数:void quit()
学生信息函数的定义:
char sno[max]; 学号
char sname[max]; 姓名
char age[max]; 年龄
char sex[max]; 性别
char born[max]; 出生年月
char dress[max]; 地址
char phone[max]; 电话
char mail[max]; E-mail
学生信息输出函数:
void ElePrint(char str[]) 单个元素
int LinePrint(student *ptr) 输出一行
void print() 输出全部学生信息
这三个函数是间接递归型
信息查询中的两个函数:
学号查询函数:no[max]
姓名查询函数:name[max]
信息修改中对信息从新输入的函数:
主要用于对新的信息的输入
name1[max] 修改后名字的函数
se1[max] 修改后性别的函数
ag1[max] 修改后年龄的函数
bor1[max] 修改后出生年月函数
dres1[max] 修改后地址函数
phon1[max] 修改后电话函数
mail1[max] 修改后E-mail函数

3.C程序设计总结

(1)学了一年的c语言了,本来以为自己对编程序有了一些了解,但是第一次接触这个程序的时候,我的感觉就是无从下手,看着如此复杂的程序,那时清楚的感受到自己的能力问题。我们利用了一天时间选了一道编程题,并简单的对它进行分析。首先,我们找到它的主程序,再根据主程序需要设计几个分支,利用参数传递的方法,使得我们的程序结构比较清晰,层次感比较分明。我们在编写的过程中充分引用我们学到的知识点,比如:数组,链表,switch语句,并让函数之间互相引用,减少一些繁琐的步骤。
(2)在编译的时候,遇到了不少问题,好多学过的知识点都有所遗忘,我们在学习的过程中也在不断的复习。在调试的时候,也有不少出错的地方,当时感觉真麻烦啊,然后就不断的翻资料,请教老师,同学。然后一点一点的找到错误的那种感觉也是挺好的

4.结束语

短短几天的实践周带给了我们很多的收获,学到了很多知识,也提高了自己的实际动手能力和独立思考能力。在实践中我们运用所学知识,发现,提出,分析和解决实际问题,并且也从中发现了我们的不足。C语言不仅仅是一门语言,它更是我们使用电脑的一种工具,能够帮助我们更好更快的解决问题,是一门实用性极强的课程,掌握并且熟练地使用它将会是我们计算机专业的学生必须要做的。通过这次课程设计,使我们懂得了理论和实践相结合很重要,从理论中得出结论,加深对C语言的理解,提升自己的编程思想,丰富经验。
在做设计的时候,最重要的是团队的力量,小组内成员互相交流,查漏补缺,反复修改完善,运用集体的智慧,团结合作解决问题。所以,通过这些天的努力和老师的指导帮助,我们终于做出了这个学生信息管理系统。在此过程中,我们体会到了团队合作的重要性,同时我们各方面的能力也得到了提升,也许在以后的学习生活中我们会做的更好。

5.参考文献

[1]施荣华,刘卫国.C程序设计与应用.北京:中国铁道出版社,1999.
[2]向南平.实用C语言程序设计.长沙:中南工业大学出版社,1994

6.附录

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define max 20
typedef struct student //学生信息输入 (结构体类型名) { char sno[max]; // 学号 char sname[max]; //姓名 char age[max]; //年龄 char sex[max]; //性别 char born[max];//出生年月 char dress[max];//地址 char phone[max];//电话 char mail[max];//E-mail struct student *next; } student; //“;”不能省略     student属于结构体变量 student *head; //输出链表,用头指针作为参数
void ElePrint(char str[]) //输出单个元素 ,定义一个str[]; { if(str==NULL) //如果str是空指针 ,判断str字符串是否存在 exit(0); //正常状态退出 printf("%s",str); //输出信息 for(unsigned int i=2;i<12-strlen(str);i++) //strlen函数可以返回字符串的函数  “i”用来控制两个信息之间的间距 printf(" ");//为了对齐输出,需插入一些空格 控制信息之间的距离 return; } int LinePrint(student *ptr) //输出一行 ,后边会引用 { if(ptr==NULL) //检查传进来的指针 ,判断ptr字符串是否存在 exit(0);//使用“return 0;”也行,作用是正常状态退出 printf("\n"); ElePrint(ptr->sno); //利用参数传递,利用指向结构体的指针变量引用结构体成员 ElePrint(ptr->sname); ElePrint(ptr->age); ElePrint(ptr->sex); ElePrint(ptr->born);ElePrint(ptr->dress);ElePrint(ptr->phone);ElePrint(ptr->mail);return 1; }
void print() //输出全部学生信息 ,后边会引用 { student *ptr=head; //*ptr表示取该地址处储存的变量的值 printf("\n学号\t姓名\t  年龄\t    性别   出生年月\t地址\t  电话\t  E-mail"); while(ptr) { LinePrint(ptr); //参数传递 ptr=ptr->next; //表示输出下一个学生的信息 } printf("\n"); return; }
void regist() //1.录入学生信息 { system("cls");//清屏 char ch; //用来判断是否继续录入 student *s,*ptr; //s用来建新结点,ptr用来暂存头结点 do { s=(student*)malloc(sizeof(student)); // 新建一个学生结点 printf("\n开始录入学生信息..."); //开始录入printf("\n请输入该学生的学号:"); scanf("%s",s->sno); //把sno的值录入新的节点s中 printf("\n请输入该学生的姓名:"); scanf("%s",s->sname); printf("\n请输入该学生的年龄:"); scanf("%s",s->age); printf("\n请输入学生的性别:"); scanf("%s",s->sex); printf("\n请输入学生的出生年月:"); scanf("%s",s->born);printf("\n请输入学生的地址:"); scanf("%s",s->dress);printf("\n请输入学生的电话:"); scanf("%s",s->phone);printf("\n请输入学生的E-mail:"); scanf("%s",s->mail);ptr=head; head=s;//将新结点插入队头 s->next=ptr; fflush(stdin); //清空输入缓存区 printf("\n请问是否继续录入?(Y/N)"); scanf("%c",&ch); } while(ch=='Y'||ch=='y'); return; }
void scan()//2.浏览信息
{system("cls");   //清屏 printf("*提供全部学生信息*") ;   print(); //直接引用“void print()”函数
}
void search()//3.查询模块 { system("cls");//清屏 int method;//查询方式 char no[max],name[max];//用来接收查询关键字 while(1) { printf("\n请选择查询方式"); printf("\n1.按学号查询");//用到上边定义的no[max] printf("\n2.按姓名查询"); //用到上边定义的name[max]; printf("\n3.打印全部学生信息"); printf("\n4.返回主菜单\n"); scanf("%d",&method); student *p=head,*temp; switch(method) { case 1: printf("\n请输入要查询的学号:"); scanf("%s",no); while(p) { if(!strcmp(p->sno,no)) //“strcmp”是字符串比较函数,比较系统中的学号跟你输入的学号是否相等 break; else { temp=p; p=p->next; } } printf("\n学号\t姓名\t  年龄\t    性别   出生年月\t地址\t  电话\t  E-mail");  LinePrint(p); break;case 2:printf("\n请输入学生的姓名:");scanf("%s",name);printf("\n学号\t姓名\t  年龄\t    性别   出生年月\t地址\t  电话\t  E-mail"); while(p){if(!strcmp(p->sname,name));//“strcmp”是字符串比较函数,比较系统中的姓名跟你输入的姓名是否相等 LinePrint(p);p=p->next ;}break;case 3: print(); //输出所有学生的所有信息 break; case 4: return; //直接返回主菜单 default: printf("很抱歉,暂无此查询方式!"); break; }} }
void modify()//4.修改学生信息 { system("cls");//清屏 char num[max]; //定义一个num数组 student *p=head; printf("\n请输入要修改的学生的学号:"); scanf("%s",num); while(p) { if(!strcmp(p->sno,num)) break; //如果sno跟num的字符串长度一样 ,使用break函数直接转至第168行 else p=p->next; //用strcmp将num一个一个跟sno比较 } if(p==NULL) //判断p是否存在 { printf("\n错误:没有此学生的信息!\n"); return; //退出修改学生信息界面 } LinePrint(p); printf("\n请输入要修改的该学生的信息:"); printf("\n1.姓名"); printf("\n2.年龄"); printf("\n3.性别"); printf("\n4.出生年月"); printf("\n5.地址"); printf("\n6.电话"); printf("\n7.E-mail"); char name1[max],se1[max],ag1[max]; char bor1[max],dres1[max],phon1[max],mail1[max];int select; fflush(stdin); //清空输入缓存区printf("\n");     printf("你选择的是:"); scanf("%d",&select); printf("\n请输入新的信息:"); switch(select) { case 1: scanf("%s",name1); strcpy(p->sname,name1); //strcpy是复制函数,将新输入的信息“name1”复制到sname中 break; case 2: scanf("%s",se1); strcpy(p->sex,se1); //同上 break; case 3: scanf("%s",ag1); strcpy(p->age,ag1); //同上 break; case 4: scanf("%s",bor1); strcpy(p->born,bor1); //同上 break; case 5: scanf("%s",dres1); strcpy(p->dress,dres1); //同上 break; case 6: scanf("%s",phon1); strcpy(p->phone,phon1); //同上 break; case 7: scanf("%s",mail1); strcpy(p->mail,mail1); //同上 break; default: printf("\nError!"); break; } //  LinePrint(p); return; //返回主菜单 }
void del()// 5.删除某学生的信息 { system("cls");//清屏 student *p=head,*temp=head,*s; char num1[max]; printf("\n请输入要删除的学生的学号:"); scanf("%s",num1); while(p)//查找该学生所在的结点 { if(!strcmp(p->sno,num1)) //strcmp是比较函数 break; //如果能查找到该学生所在节点,转至242行,输出此学生信息 else { temp=p; p=p->next; } }//while if(p==NULL) //判断是否存在 { printf("\n不存在此学生的信息."); return; } LinePrint(p);//输出该学生的信息 printf("\n请问真的要删除该学生的信息吗?(Y/N)"); char ch; fflush(stdin); //清除输入缓存区 scanf("%c",&ch); if(ch=='Y'||ch=='y') { s=p->next; temp->next=s; free(p); //释放p中的信息 printf("\n已经删除该学生的信息."); } return; //返回主菜单 }
void quit() //6.退出程序 { system("cls");char ch; printf("\n真的要退出?(Y/N)"); fflush(stdin); //清空输入缓存区 scanf("%c",&ch); if(ch=='Y'||ch=='y') exit(0); //正常退出 return; //返回主菜单 }
int main() //主程序 { int option; printf("\n\tWelcome to the student information management system!\n"); printf("\n\t\t欢迎使用学生信息管理系统!\n"); //系统界面   while(1) { system("color 2f");printf("\n\t\t* * * * * * * * * * * * * *");printf("\n\t\t* 请选择需要的服务:       *");printf("\n\t\t*                         *"); printf("\n\t\t*    1.录入学生信息       *"); printf("\n\t\t*    2.学生信息浏览       *"); printf("\n\t\t*    3.学生信息查询       *"); printf("\n\t\t*    4.修改学生信息       *"); printf("\n\t\t*    5.删除学生信息       *");  printf("\n\t\t*    6.退出学生管理系统   *");printf("\n\t\t*                         *");printf("\n\t\t* * * * * * * * * * * * * *");printf("\n\t\t  你选择的是:");   scanf("%d",&option); //option是提供选择switch(option) { case 1: regist(); system("cls");break; case 2:scan();break;case 3: search(); system("cls");break; case 4: modify(); system("cls");break; case 5:del();system("cls");break;case 6: quit(); system("cls");break; } } return 0; }

《C系列-实例相关》学生成绩管理系统相关推荐

  1. UML学生成绩管理系统

    软件系统实例:学生成绩管理系统 1.教师登录系统录入学生考试成绩 2.教师(教务处)登录,设置课程和班级,上课教师.学生 3.超级管理员分配教师的权限 4.学生查询成绩 状态图 带泳道的活动图 组件图 ...

  2. 安卓期末作业 学生成绩管理系统(可以注册登录,录入相关信息)

    学生成绩管理系统App Androidstudio开发(下载链接在文末),有学生,教师,管理员可以登录,管理员可以录入相关信息,学生可以查看成绩.课程.考试信息等等,详细情况如下图所示: 注册信息如下 ...

  3. java程序对学生成绩_Eclipse+Java+Swing实现学生成绩管理系统的实例代码

    一.系统介绍 本系统实现了用户登录,实现了对学生成绩的增删改查,实现了用户修改密码功能,采用MD5加密算法,数据库使用Mysql8.0.13,界面良好. 二.系统展示 1.登录页 2.主页面 3.查询 ...

  4. ASP.NetCore+VUE 实现学生成绩管理系统(一)

    周三 陪伴是最长情的告白 还有两天情人节:「无论是在家里,还是在工作,或者是在自我防护中,多给家人爱人发句平安,是最有心意.最重要的一件事.」 ♥感谢老李???? 近来一段时间一直没有学习新的东西,闲 ...

  5. 按平均成绩排行c语言文件操作,学生成绩管理系统(c语言结构体以及文件操作)实验报告精选.doc...

    学生成绩管理系统(c语言结构体以及文件操作)实验报告精选 C程序设计 实验报告 编号: 姓名院系学号任课教师于萧指导教师实验地点实验时间实验名称文件操作同 组 人无预习报告(对实验主要内容的认识)得分 ...

  6. 基于python的学生成绩管理系统毕业设计源码071143

    Django学生成绩管理 摘   要 在国家重视教育影响下,教育部门的密确配合下,对教育进行改革.多样性.质量等等的要求,使教育系统的管理和运营比过去十年前更加理性化.依照这一现实为基础,设计一个快捷 ...

  7. 检索有项目的教师信息mysql_学生成绩管理系统(六):项目总结

    学生成绩管理系统(六):项目总结 一.项目实现情况 初期项目计划: 简单的图形界面登录功能. 对数据库的的信息的查询功能. 对数据库的的信息的修改功能. 对数据库的的信息的删除功能. 对数据库的的信息 ...

  8. java学生成绩管理系统类图,学生成绩管理系统的用例类图

    <学生成绩管理系统的用例类图>由会员分享,可在线阅读,更多相关<学生成绩管理系统的用例类图(20页珍藏版)>请在金锄头文库上搜索. 1.学生成绩管理系统,1.用例图绘制 2.活 ...

  9. Web课程设计之学生成绩管理系统

    Web课设之学生成绩管理系统 一.实验题目 二.实验目的 三.总体设计 3.1 实验要求: 3.2 本系统所运用到的技术栈: 3.3 本系统所运用的编程工具 3.4 核心技术介绍 3.5 模块介绍 3 ...

  10. (附源码)python+mysql+基于python的学生成绩管理系统 毕业设计071143

    Django学生成绩管理 摘 要 在国家重视教育影响下,教育部门的密确配合下,对教育进行改革.多样性.质量等等的要求,使教育系统的管理和运营比过去十年前更加理性化.依照这一现实为基础,设计一个快捷而又 ...

最新文章

  1. 帝国时代三计算机丢失,修复安装帝国时代程序出错3d3dx9_25.dll丢失在win7中方法...
  2. hibernate缓存机制详细介绍
  3. 安卓能不能安装jar_Sentaurus TCAD安装之jedit+TCAD宏包
  4. qml学习文档-转载
  5. 如何在 Windows 2000 中安装 Microsoft 环回适配器
  6. java关闭窗口的6种方法
  7. python安装第三方库太慢,很容易失败报错?教你如何提速
  8. 台湾瑞昱Realtek RTL8153-VC-CG USB3.0 to lan简介
  9. 办公室计算机打印机共享,办公室共享连接打印机全攻略,办公人必会操作技能...
  10. 15个在线网站检测工具
  11. Lonlife-ACM 1005 - Spoon Devil's RP Test(同余定理)——“玲珑杯”acm比赛-试运行赛
  12. 【有利可图网】PS教程:用滤镜打造3D立体文字效果
  13. 局域网稳定性测试软件,局域网速度测试
  14. 联想笔记本无法识别USB(通用串行总线(USB)的控制器问题)
  15. 采用头插法和尾插法建立单链表
  16. 30 爬虫 - 爬取内涵段子网站案例
  17. stm32复用时钟AFIO什么时候开启
  18. MBA案例分析(人员培训二)
  19. iOS 锁的底层原理
  20. 网销客是用来辅助网络营销

热门文章

  1. 喜闻项立刚大作:《不给免费WAP以机会》
  2. Test OpenStack SRIOV (by quqi99)
  3. 刹车防抱死系统(ABS)
  4. 怎样修改git用户名、密码和邮箱?
  5. http和web服务器
  6. lib_mysqludf_sys编译
  7. 模拟电子技术基础 第一章 绪论
  8. 从 Delphi 7 到 Delphi 2010
  9. 163net邮箱,对商务办公人士有哪些帮助?
  10. python名片管理器实验报告_名片管理系统——实验报告.doc