北风吹,秋风凉,一到期末就发慌!现在已经到期末了,学生们也是时候该交上这一学期的答卷了,那么作为学习C语言这一门课程的学生来说,什么样的作业题目是每年都必出的呢? 没错,就是《学生管理系统》,不论是学生信息管理系统,又或者学生成绩管理系统,都是学生管理系统的一部分,每年可能其他的作业题目不会出,但是这个题目却是百分百都会出的! 题目是发下来了,可是一般除了学霸之外,大部分的人就是一脸懵逼的状态了,这是什么鬼?要怎么做?我该怎么办? 然后嘛,懵逼了相当一段时间之后,就得到处找答案了!要不加个群问下?可是没人帮忙做呀!要不找个人帮我做?貌似别人也不会免费做啊!算了,还是百度吧! 然后就会出现各种各样的学生管理系统! 比如这样的: 学习群(564950050) 一看就高大上,但是往下一看,却看得一脸懵逼?这是用什么做的?不认识啊。。。。。。算了,不管他,接着找吧! 然后又发现了这样的: 学习群(564950050) 这个看起来不错,虽然没有那么华丽,但也有模有样的嘛!然后看下怎么做的,excuse me?这是什么写的? MFC? QT? 还是Java? 框架什么的都没学过啊。。。。。还是找找其他的吧! 然后就发现了这样的: 学习群(564950050) 苍天啊! 大地啊!终于让我找到了熟悉的黑窗口啦!!! 没错就是我们熟悉的win32控制台应用程序,天天写的黑窗口啊! 就这个了!然后copy一下代码 去试试!嗯 ,没毛病,一吨Bug,都不知道怎么改了 (┬_┬) 哪哪都是错! 鉴于这种情况的发生,我就给大家带来了福音: 学习群(564950050) 简洁的界面,不错吧 ! 学习群(564950050) 学生资料查询,也不错吧! 下面看看代码吧: #include #include #include #include //学生的结构体 typedef struct stu { intnum;//学号 charname[20];//姓名 floatchinese;//语文 floatmath;//数学 floatenglish;//英语 floatphysics;//物理 struct stu* pnext; //结构体的内部指针 }STU; STU* pStu = NULL;//定义一个指针 FILE *fp; void Welcome() { printf('\n\n\t\t\t┏━━━━━━━━━━━━━━━━━━━━━━━┓\n'); printf('\t\t\t┃ 学生管理系统┃\n'); printf('\t\t\t┣━━━━━━━━━━━━━━━━━━━━━━━┫\n'); printf('\t\t\t┃ ①添加学生信息┃\n'); printf('\t\t\t┃ ②查找学生信息┃\n'); printf('\t\t\t┃ ③删除学生信息┃\n'); printf('\t\t\t┃ ④修改学生信息┃\n'); printf('\t\t\t┃ ⑤退出学生系统┃\n'); printf('\t\t\t┗━━━━━━━━━━━━━━━━━━━━━━━┛\n'); printf('\t\t\t请选择:'); } //添加信息 //函数里面没有任何的返回值 操作了一个全局变量 void AddInformation() { system('cls'); int number; STU* pNew; STU* pTemp = pStu; while (pTemp->pnext != NULL) { pTemp = pTemp->pnext; } printf('\n\n'); printf('\t\t\t┏━━━━━━━━━━━━━━━━━━━━━━━┓\n'); printf('\t\t\t┃ 添 加 信 息┃\n'); printf('\t\t\t┗━━━━━━━━━━━━━━━━━━━━━━━┛\n'); printf('\t\t\t您需要添加几位学员:'); scanf('%d', &number); // for已知循环次数 while未知循环次数 for (int i = 1; i <= number;="">=> { system('cls'); printf('\n\n'); printf('\t\t\t┏━━━━━━━━━━━━━━━━━━━━━━━┓\n'); printf('\t\t\t┃ 添 加 信 息┃\n'); printf('\t\t\t┗━━━━━━━━━━━━━━━━━━━━━━━┛\n'); pNew = (STU*)malloc(sizeof(STU)); pNew->pnext = NULL; printf('\t\t\t请输入第%d个学员信息:\n', i); printf('\t\t\t学号:'); scanf('%d', &pNew->num); printf('\t\t\t姓名:'); scanf('%s', pNew->name); printf('\t\t\t语文:'); scanf('%f', &pNew->chinese); printf('\t\t\t数学:'); scanf('%f', &pNew->math); printf('\t\t\t英语:'); scanf('%f', &pNew->english); printf('\t\t\t物理:'); scanf('%f', &pNew->physics); pTemp->pnext = pNew; pTemp = pTemp->pnext; } printf('\n\t\t\t保存成功!按任意键继续...'); _getch(); } //全部浏览 void SearchAll() { STU* pTemp = pStu->pnext; printf('\t\t\t 学号\t姓名\t语文\t数学\t英语\t物理\t\n'); // for while 循环次数 while (pTemp != NULL) //什么时候退出循环 { printf('\t\t\t %d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n', pTemp->num, pTemp->name, pTemp->chinese, pTemp->math, pTemp->english, pTemp->physics); pTemp = pTemp->pnext; } _getch(); } //按照学号查找 void SearchNum() { int keynum; STU* pTemp = pStu->pnext; printf('\t\t\t请输入要查找的学号:'); scanf('%d', &keynum); while (pTemp != NULL) { if (keynum == pTemp->num) { printf('\t\t\t查找到的信息:\n'); printf('\t\t\t 学号\t姓名\t语文\t数学\t英语\t物理\t\n'); printf('\t\t\t %d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n', pTemp->num, pTemp->name, pTemp->chinese, pTemp->math, pTemp->english, pTemp->physics); _getch(); return; } pTemp = pTemp->pnext; } printf('\t\t\t没有找到你需要的内容!\n'); _getch(); } //按照姓名查找 void SearchName() { char keyname[20]; STU* pTemp = pStu->pnext; printf('\t\t\t请输入要查找的姓名:'); scanf('%s', &keyname); while (pTemp != NULL) { if (!strcmp(keyname, pTemp->name)) { printf('\t\t\t查找到的信息:\n'); printf('\t\t\t 学号\t姓名\t语文\t数学\t英语\t物理\t\n'); printf('\t\t\t %d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n', pTemp->num, pTemp->name, pTemp->chinese, pTemp->math, pTemp->english, pTemp->physics); _getch(); return; } pTemp = pTemp->pnext; } printf('\t\t\t没有找到你需要的内容!\n'); _getch(); } //查找信息 void Search() { int choice; do { system('cls'); printf('\n\n'); printf('\t\t\t┏━━━━━━━━━━━━━━━━━━━━━━━┓\n'); printf('\t\t\t┃ 查 找 信 息┃\n'); printf('\t\t\t┗━━━━━━━━━━━━━━━━━━━━━━━┛\n'); printf('\t\t\t 1.全部浏览\n'); printf('\t\t\t 2.按学号查找\n'); printf('\t\t\t 3.按姓名查找\n'); printf('\t\t\t 4.返回主菜单\n\t\t\t '); scanf('%d', &choice); switch (choice) { case 1:SearchAll(); break; case 2:SearchNum(); break; case 3:SearchName(); break; default:break; } } while (choice != 4); } //删除信息 void Delete() { int keynum; //按照学号来删除 STU* pPre = pStu; STU* pDel = pStu->pnext; system('cls'); printf('\n\n'); printf('\t\t\t┏━━━━━━━━━━━━━━━━━━━━━━━┓\n'); printf('\t\t\t┃ 删 除 信 息┃\n'); printf('\t\t\t┗━━━━━━━━━━━━━━━━━━━━━━━┛\n'); printf('\t\t\t请输入学号:'); scanf('%d', &keynum); while (pDel != NULL) { if (keynum == pDel->num) { printf('已查找到%d号学员:\n', keynum); printf('\t\t\t 学号\t姓名\t语文\t数学\t英语\t物理\t\n'); printf('\t\t\t %d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n', pDel->num, pDel->name, pDel->chinese, pDel->math, pDel->english, pDel->physics); printf('\t\t\t 是否删除该信息?(Y/N)'); char ch; fflush(stdin); ch = getchar(); if (ch == 'Y' || ch == 'y') { pPre->pnext = pDel->pnext; free(pDel); return; } else { return; } } pDel = pDel->pnext; pPre = pPre->pnext; } printf('\t\t\t未找到该学员信息!'); _getch(); } //修改信息 void Modify() { } void ScanfTxt() { } void PrintToTxt() { STU* pTemp = pStu->pnext; if ((fp = fopen('学生信息.txt', 'w')) == NULL) { printf('\t\t\t打开文件失败!\n'); _getch(); return; } while (pTemp != NULL) { fprintf(fp, '%d %s %.1f %.1f %.1f %.1f\n', pTemp->num, pTemp->name, pTemp->chinese, pTemp->math, pTemp->english, pTemp->physics); pTemp = pTemp->pnext; } fclose(fp); printf('\t\t\t保存成功!'); _getch(); exit(0); } //主函数 int main() { int choice; if ((fp = fopen('学生信息.txt', 'r')) == NULL) { printf('\t\t\t打开文件失败!'); _getch(); return -1; } pStu = (STU*)malloc(sizeof(STU)); //分配一个学员的内存大小 pStu->pnext = NULL; while (1) { system('cls'); Welcome(); scanf('%d', &choice); switch (choice) { case 1: //添加学生信息 AddInformation(); break; case 2: //查找学生信息 //学号 姓名 Search(); break; case 3: //删除信息 Delete(); break; case 4: //修改信息 Modify(); break; case 5: //让所有信息保存到文件中 PrintToTxt(); break; default: break; } } return 0; } 总的来说嘛,学习C语言并不难,各位可以加下群564950050,一起可以交流提升学习,编程不要觉得很难,你觉得难是因为身边没有相同兴趣的人,只有你在孤军奋斗,如果碰到一个问题总是得不到解决,自然而然就没有再学下去的兴趣了,有伙伴一起学习才有学习的动力! |
|