这个是一个任务,倒也不是课设,简单的一个管理系统罢了,用的基本就是链表的增删改查。然后我还打了一些其他的效果。

目录

一.主函数部分

用switch语句进行选择:

用while语句,来实现重复选择:

二.功能部分

(1).页面显示

1.主页面显示

2.修改页面

3.修改里的荣誉界面

(2).录入信息

1.创建一个新的结点,并判断内存分配是否成功

2.头插法插入结点,也就是录入球星信息

(3).球星信息的显示

(4).修改球员信息

(5).查找球员信息

(6).删除信息

1.若需要删除的信息为头结点

2.若不是头结点

(7)保存信息

(8)读取信息

三.一些效果

1.加载进度条效果

2.颜色设置

3.边框的缓冲效果

头部:

尾部:

4.有字母组成的心形


先放个鸟:

一.主函数部分

用switch语句进行选择:

switch (n){case 1://录入信息()record();break;case 2://显示()show();break;case 3://修改()change();break;case 4://删除del();break;case 5://保存()save();break;

用while语句,来实现重复选择:

while (1){switch (n){case 1://录入信息()record();break;case 2://显示()show();break;case 3://修改()change();break;case 4://删除del();break;case 5://保存()save();......case n://退出return 0;}

二.功能部分

(1).页面显示

1.主页面显示

直接的print语句即可,这里我还加了sleep的效果,让界面以动态的形式出现:

void print(void)
{system("color 0E");for (int i = 0; i <= 36; i++){if (i >= 0) { printf("*"); Sleep(1); }else printf(" ");}printf("\n");Sleep(20);printf("      欢迎使用NBA球星管理系统\n");Sleep(20);for (int i = 0; i <= 36; i++){if (i >= 0) { printf("-"); Sleep(0); }else printf(" ");}Sleep(20);printf("\n\t1.录入球星信息\n");Sleep(10);printf("\n\t2.显示球星信息\n");Sleep(10);printf("\n\t3.修改球星信息\n");Sleep(10);printf("\n\t4.删除球星信息\n");Sleep(10);printf("\n\t5.保存球星信息\n");Sleep(10);printf("\n\t6.查询球星信息\n");Sleep(10);printf("\n\t7.统计球星信息\n");Sleep(10);printf("\n\t8.读取球星信息\n");Sleep(10);printf("\n\t9.退出程序\n");Sleep(20);for (int i = 0; i <= 36; i++){if (i >= 0) { printf("-"); Sleep(0); }else printf(" ");}printf("\n");for (int i = 0; i <= 36; i++){if (i >= 0) { printf("*"); Sleep(1); }else printf(" ");}printf("\n");
}

加入for循环可以使边框以动态的形式出现。

2.修改页面

void printxiugai(void)
{system("color 0E");for (int i = 0; i <= 36; i++){if (i >= 0) { printf("*"); Sleep(1); }else printf(" ");}printf("\n");Sleep(20);printf("      欢迎使用NBA球星管理系统\n");Sleep(20);for (int i = 0; i <= 36; i++){if (i >= 0) { printf("-"); Sleep(0); }else printf(" ");}printf("\n\n");printf("    1.姓名     2.年龄     3.位置\n    4.号码     5.最高     6.荣誉\n    7.顺位     8.球队     9.年份    \n\n");wei();
}

3.修改里的荣誉界面

void printrongyu(void)
{tou();Sleep(20);printf("  1.mvp数    2.fmvp数    3.总冠军数\n  4.得分王数\n\n");Sleep(20);wei();printf("\n\n");
}

(2).录入信息

1.创建一个新的结点,并判断内存分配是否成功

Node* pNew=(Node*)malloc(sizeof(Node));if (pNew == NULL){printf("内存分配失败");return NULL;}pNew->pnext = NULL;

2.头插法插入结点,也就是录入球星信息

if (g_phead == NULL){g_phead = pNew;}else{pNew ->pnext = g_phead;g_phead = pNew;}printf("请输入球星的编号:\n");scanf("%d", &pNew->pla.bianhao);printf("请输入球星姓名:\n");scanf("%s", pNew->pla.name);printf("请输入球星年龄(若不知则填521):\n");scanf("%d", &pNew->pla.age);printf("请输入球星的位置(若不知则填521):\n");scanf("%s", &pNew->pla.weizhi);printf("请输入球星的号码(若不知则填521):\n");scanf("%d", &pNew->pla.num);printf("请输入球星的最高分(若不知则填521):\n");scanf("%d", &pNew->pla.most);printf("是否继续录入球星选秀信息?(按 1 继续)):\n");scanf("%d", &m);if (m == 1){printf("请输入球星的选秀年份(若不知则填未知):\n");scanf("%s",pNew->pla.year);printf("请输入球星的选秀顺位(若不知则填未知):\n");scanf("%s", pNew->pla.wei);printf("请输入球星的选秀球队(若不知则填未知):\n");scanf("%s", pNew->pla.dui);}else{strcpy(pNew->pla.year,"未知");strcpy(pNew->pla.wei,"未知");strcpy(pNew->pla.dui ,"未知");}printf("是否继续录入球星荣誉?(按 1 继续)):\n");scanf("%d",&t);if (t == 1){printf("请输入球星获得的总冠军数(若不知则填未知):\n");scanf("%s", pNew->pla.guan);printf("请输入球星获得的mvp数(若不知则填未知):\n");scanf("%s", pNew->pla.mvp);printf("请输入球星获得的fmvp数(若不知则填未知):\n");scanf("%s", pNew->pla.fmvp);printf("请输入球星获得的得分王数(若不知则填未知):\n");scanf("%s", pNew->pla.scores);}else{strcpy(pNew->pla.guan,"未知");strcpy(pNew->pla.mvp, "未知");strcpy(pNew->pla.fmvp, "未知");strcpy(pNew->pla.scores, "未知");}printf("球星信息录入成功.\n");

(3).球星信息的显示

遍历一遍链表即可:

Node* p = g_phead;while (p != NULL){printf("球星的编号:\n");printf("%d", p->pla.bianhao);printf("\n");printf("  *\t姓名\t*\t年龄\t*\t位置\t*\t号码\t\n");printf("  *\t%s\t*\t%d\t*\t%s\t*\t%d\t\n\n",p->pla.name,p->pla.age,p->pla.weizhi,p->pla.num);Sleep(20);printf("  *\t最高\t*\t年份\t*\t顺位\t*\t球队\t\n");printf("  *\t%d\t*\t%s\t*\t%s\t*\t%s\t\n\n",p->pla.most,p->pla.year,p->pla.wei,p->pla.dui);Sleep(20);printf("  *\t总冠军\t*\tmvp\t*\tfmvp\t*\t得分王\t\n");printf("  *\t%s\t*\t%s\t*\t%s\t*\t%s\t\n\n\n",p->pla.guan,p->pla.mvp,p->pla.fmvp,p->pla.scores);Sleep(20);p = p -> pnext;printf("\n");}

(4).修改球员信息

对应的是链表的修改,用while循环来找到需要修改的信息,对此结点进行修改

Node* p = g_phead;while (p != NULL){if (p->pla.bianhao == hao ){printxiugai();printf("请输入需要修改的球员信息:\n");scanf("%d", &t);if (t != 6){switch (t){case 1://姓名printf("请输入修改后球星的姓名:\n");scanf("%s",p -> pla.name);break;case 2://年龄printf("请输入修改后球星的年龄:\n");scanf("%d",&p -> pla.age);break;case 3://位置printf("请输入修改后球星的位置:\n");scanf("%s",p->pla.weizhi);break;case 4://号码printf("请输入修改后球星的号码:\n");scanf("%d",& p->pla.num);break;case 5://最高分printf("请输入修改后球星的最高分:\n");scanf("%d",&p->pla.most);break;case 7://顺位printf("请输入修改后球星的顺位:\n");scanf("%s", p->pla.wei);break;case 8://球队printf("请输入修改后球星的球队:\n");scanf("%s", p->pla.dui);break;case 9://年份printf("请输入修改后球星的年份:\n");scanf("%s", p->pla.year);break;}}else{printrongyu();printf("请输入要修改的球星的荣誉:\n");scanf("%d",&m);switch (m){case 1://mvpprintf("请输入数字:\n");scanf("%s",p -> pla.mvp);break;case 2://fmvpprintf("请输入数字:\n");scanf("%s", p->pla.fmvp);break;case 3://总冠军printf("请输入数字:\n");scanf("%s", p->pla.guan);break;case 4://得分王printf("请输入数字:\n");scanf("%s", p->pla.scores);break;}}printf("修改成功。\n");shu += 1;}p = p -> pnext;}

(5).查找球员信息

同样是利用while循环来遍历链表进行查找:

Node* p = g_phead;//定义一个指向头结点的指针while (p != NULL){if ( p->pla.bianhao == hao || 0 == strcmp(p->pla.name,xingming) ){return p;}p = p->pnext;}

(6).删除信息

删除信息就是释放这个信息所在的空间

1.若需要删除的信息为头结点

直接删除,因为不许用一个新的结点进行连接:

if (g_phead->pla.bianhao == hao){p1 = g_phead;g_phead = g_phead->pnext;free(g_phead);printf("删除成功。\n");system("pause");system("cls");return;}

2.若不是头结点

需要一个新的结点连接前后

Node* p,*p2;p = g_phead;p2 = p->pnext;while (p2 !=NULL){if(p2->pla.bianhao==hao){p->pnext=p2->pnext;free(p2);//释放空间,进行删除p2 = p->pnext;printf("删除成功。\n");wei();system("pause");system("cls");return;}else{p = p->pnext;p2 = p2->pnext;}}

(7)保存信息

新建一个文件,将数据保存进去

void save()
{tou();//打开创建文件FILE* fp;fp=fopen("D:\\manage.txt","w");//以写的形式打开文件if (fp == NULL){printf("打开文件失败。\n\n");return;}//遍历链表Node* p = g_phead;while (p!=NULL){fwrite(&p->pla,1,sizeof(player),fp);//一次以player读取一个p=p->pnext;}//关闭文件fclose(fp);                  //打开的文件用完后一定需要关闭printf("保存文件成功。\n\n");system("pause");system("cls");
}

(8)读取信息

保存了文件,就要将文件读取出来。

保存文件时用的是以写的形式打开,读取文件就需要以读的形式打开,再利用头插法,将数据添加到链表中。

void read()
{tou();//打开文件FILE* fp;fp=fopen("D:\\manage.txt","r");if (fp == NULL){printf("打开文件失败。\n\n");return;}//读取文件player pla; //定义一下plawhile (fread(&pla, sizeof(player), 1, fp))//先读一下结点有无元素,之后再判断{//创建一个新的结点,分配内存Node* pNew = (Node*)malloc(sizeof(Node));pNew -> pnext = NULL;memcpy(pNew, &pla,sizeof(player));//头插法插入结点if (g_phead == NULL){g_phead = pNew;}else{pNew->pnext = g_phead;g_phead = pNew;}}printf("加载数据成功.\n\n");//关闭文件fclose(fp);system("pause");system("cls");}

三.一些效果

1.加载进度条效果

void huanchong(void)
{int i;for (i = 1; i <= 20; i++){SetColor(0, 15);printf(" ");printf("%d%%", 5 * i);Sleep(101 - 5 * i);printf("\b\b\b");}SetColor(15, 0);
}

2.颜色设置

//颜色设置()
void SetColor(unsigned short ForeColor, unsigned short BackGroundColor)
{HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hCon, (ForeColor % 16) | (BackGroundColor % 16 * 16));
}

使用:

SetColor(0, 15);

其中

3.边框的缓冲效果

头部:

​
void tou()
{system("color 0E");for (int i = 0; i <= 36; i++){if (i >= 0){printf("*");Sleep(1);}else printf(" ");}printf("\n");Sleep(20);printf("      欢迎使用NBA球星管理系统\n");Sleep(20);for (int i = 0; i <= 36; i++){if (i >= 0){printf("-");Sleep(0);}else printf(" ");}printf("\n\n");
}​

尾部:

​
void wei()
{for (int i = 0; i <= 36; i++){if (i >= 0){printf("-");Sleep(0);}else printf(" ");}printf("\n");for (int i = 0; i <= 36; i++){if (i >= 0){printf("*");Sleep(1);}else printf(" ");}printf("\n\n");
}​

4.有字母组成的心形

void pyx()
{int s=0;float x, y;for (x = 1.3; x >= -1.1; x -= 0.1){for (y = -2; y <= 1.4; y += 0.053){if (pow(x * x + y * y - 1, 3) - x * x * x * y * y <= 0){s++;if (s % 4 == 1)printf("p");if (s % 4 == 2)printf("y");if (s % 4 == 3)printf("x");if (s % 4 == 0)printf("^");Sleep(0.99);}elseprintf(" ");}printf("\n");}
}

效果:

完整的源码我已经放到gitee上了,想看的话可以看一下:

管理系统 · DHPYX/DHPYX - 码云 - 开源中国 (gitee.com)

NBA球星管理系统----C语言链表带文件相关推荐

  1. NBA球星管理系统 v1.0

    #include<string.h> //问题:只执行创建链表函数存在bug(头节点) #include<stdlib.h> // 第一次登陆错误,第二次登陆正确时选项bug ...

  2. 图书管理系统 C语言链表实现 学校大作业功能齐全(书籍信息以及用户信息保存在附带的txt文件中)

    不废话直接附上源代码下载链接(一杯奶茶钱就能换一套图书管理系统哦~): C语言链表实现图书管理系统功能齐全(书籍信息以及用户信息保存在附带的txt文件中)-C文档类资源-CSDN文库 抱歉本人总是忘记 ...

  3. 银行账户管理系统c语言链表,课程设计银行储蓄管理系统Word版

    <课程设计银行储蓄管理系统Word版>由会员分享,可在线阅读,更多相关<课程设计银行储蓄管理系统Word版(22页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版文档 ...

  4. 学生管理系统 C语言 动态链表 结构体 文件操作 设置密码 输入密码回显星号

    C语言 学生管理系统代码 实现功能 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名.学号.专业.  性别.年龄.   电话.家庭住址.还可以继续拓展 系统要求实现以下功能: 1.输入功能: ...

  5. 多项式合并同类项c语言链表,链表透过文件读写计算两个多项式之积

    当前位置:我的异常网» C语言 » 链表透过文件读写计算两个多项式之积 链表透过文件读写计算两个多项式之积 www.myexceptions.net  网友分享于:2014-03-24  浏览:10次 ...

  6. 运用HashMap和ArrayList打造一个简单的带文件的控制台学生管理系统(附上类及类方法的思维导图+控制台运行界面截图+源代码)

    文章目录: 一.本文由来 二.适合人群 三.类及类方法思维导图 四.控制台运行界面截图 五.项目源代码链接 六.后记 七.再回首 一.本文由来 今天是2020年1月23日.因为在2019年上半学期Ja ...

  7. C语言实用算法系列之学生管理系统_单向链表内操作_选择排序

    单向链表实现 #include <stdio.h> #include <malloc.h>typedef int DATA;struct SNode {DATA data;SN ...

  8. java用链表做学生系统_C语言链表实现学生管理系统

    本文实例为大家分享了C语言链表实现学生管理系统的具体代码,供大家参考,具体内容如下 #include #include #include #include #include #include usin ...

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

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

最新文章

  1. PyAlgoTrade Hello World 第一个程序(一)
  2. 一道数组求连续子集最大值的题目。
  3. MathType 插入定义的chapter and section break后无法隐藏
  4. 8.3 bert的蒸馏讲解 意境级
  5. 网络规划设计师教程pdf版下载
  6. java绘制雷达图_【带着canvas去流浪(6)】绘制雷达图
  7. 新员工入职表_医院新员工入职培训怎么做?
  8. 添加打印机无法搜索计算机,电脑无法搜索添加局域网打印机怎么办
  9. unity3D的FingerGestures插件
  10. 实现聊天发送语音消息功能
  11. 第13期《凤凰涅槃,浴火重生!》2月刊
  12. csirs参考信号_一种信道状态信息参考信号CSI-RS的发送方法、装置及基站_2015109520063_说明书_专利查询_专利网_钻瓜专利网...
  13. 【超详细】初探FME--获取等时圈
  14. jacobWord案例
  15. oracle删除table不进回收站,清除当前用户的回收站
  16. Vue引入并使用md文件方法
  17. Flash元件转成组件
  18. python 实现简单的端口扫描器
  19. 洛谷 P3797 妖梦斩木棒 解题报告
  20. c语言二的n次方,c语言练习之路(二阶方阵的n次方)

热门文章

  1. PHP如何token验证,手把手教学
  2. 2019服务计算作业一——VMware搭建私有云桌面
  3. 火狐浏览器hackbar安装使用教程
  4. 文心一言正式对标GPT-4,是青铜还是王者?
  5. USB Device 数据读取方式的研究
  6. 学习FastDFS这一篇就够了
  7. 2019年 8月8日 日报
  8. VR 应用设计的 8 个建议
  9. 以太坊大事记|上海升级下的LSD赛道解析
  10. Python-Flask 模型介绍和配置(6)