#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
using namespace std;
//描述一个学生
struct Message
{
char m_chName[20];//姓名
int m_iAge;//年龄
int m_iNum;//学号
float m_fscord;//成绩
struct Message* pNext;
};
typedef struct Message Node;
struct List
{
int m_iLength;
Node* pHead;
};
struct List list;
void showWindow();
void inputMessage();//录入学生信息
int saveMessage();//保存学生信息
void getSum();//获取总人数
void putMessage();//打印学生信息
int readMessage();//读取学生信息
int searchMessage();//查找学生信息
int amendMessage();//修改学生信息
int deleteMessage();//删除学生信息
int main()
{
list.m_iLength = 0;
list.pHead = NULL;
while (1)
{
showWindow();
//从控制台读取一个字符
char ch = _getch();
system("cls");
switch (ch)
{
case '1'://录入学生信息
inputMessage();
break;
case '2'://打印学生信息
putMessage();
break;
case '3'://保存学生信息
saveMessage();
break;
case '4'://读取学生信息
readMessage();
break;
case '5'://统计学生人数
getSum();
break;
case '6'://查找学生信息
searchMessage();
break;
case '7'://修改学生信息
amendMessage();
break;
case '8'://删除学生信息
deleteMessage();
break;
case '0'://退出系统
printf("欢迎再次使用\t");
system("pause");
return 0;
break;
default://都没有
printf("输入有误,重新输入\t");
system("pause");
system("cls");
break;
}
}
system("pause");
return 0;
}
void showWindow()
{
printf("***************************************\n");
printf("*\t\t学生管理系统\t\t*\n");
printf("***************************************\n");
printf("*\t\t功能列表\t\t*\n");
printf("***************************************\n");
printf("*\t\t1.录入学生信息\t\t*\n");
printf("*\t\t2.打印学生信息\t\t*\n");
printf("*\t\t3.保存学生信息\t\t*\n");
printf("*\t\t4.读取学生信息\t\t*\n");
printf("*\t\t5.统计学生人数\t\t*\n");
printf("*\t\t6.查找学生信息\t\t*\n");
printf("*\t\t7.修改学生信息\t\t*\n");
printf("*\t\t8.删除学生信息\t\t*\n");
printf("*\t\t0.退出系统\t\t*\n");
printf("***************************************\n");
}
void inputMessage()
{
//往链表中添加一个学员
//找到链表的尾节点
Node* preNode = list.pHead;
while (list.pHead!=NULL&&preNode->pNext!=NULL)
{
preNode = preNode->pNext;
}
//创建一个新节点
Node* pNewNode = (Node*)malloc(sizeof(Node));
pNewNode->pNext = NULL;
if ( list.pHead== NULL)
{
list.pHead = pNewNode;
}
else
{
preNode->pNext = pNewNode;
}
printf("请输入学生姓名:\n");
cin >> pNewNode->m_chName;
printf("请输入学生年龄:\n");
cin >> pNewNode->m_iAge;
printf("请输入学生学号:\n");
cin >> pNewNode->m_iNum;
printf("请输入学生成绩:\n");
cin >> pNewNode->m_fscord;
printf("信息录入成功\n");
list.m_iLength++;
system("pause");
system("cls");
}
void getSum()
{
cout << "总人数为:" << list.m_iLength << endl;
system("pause");
system("cls");
}
//打印
void putMessage()
{
system("cls");
printf("************************************\n");
printf("学生信息如下:\n");
printf("\t\t学号\t姓名\t年龄\t成绩:\n");
//遍历链表
Node*p = list.pHead;
while (p != NULL)
{
/* cout << "\t\t" << p->m_chNum << "\t" << p->m_chName << "\t" << p->m_iAge << "\t" << p->m_fscord << endl;*/
printf("\t\t%d\t%s\t%d\t%.2f\n",p->m_iNum,p->m_chName,p->m_iAge,p->m_fscord);
p = p->pNext;
}
system("pause");
system("cls");
}
//保存
int saveMessage()
{
system("cls");
FILE* pFile;
pFile= fopen("D:\ studentMessage", "w");
if (pFile == NULL)
{
printf("打开文件失败\n");
pFile = fopen("D:\ studentMessage", "w");
return 0;
}
//写入数据
Node*p = list.pHead;
while (p != NULL)
{
fprintf(pFile, "\t\t%d\t%s\t%d\t%f", p->m_iNum, p->m_chName, p->m_iAge, p->m_fscord);
p = p->pNext;
}
printf("保存成功\n");
fclose(pFile);
system("pause");
system("cls");
}
//读取
int readMessage()
{
system("cls");
FILE* pFile;
pFile= fopen("D:\ studentMessage","r");
if (pFile == NULL)
{
printf("读取失败\n");
return 0;
}
int nei=fgetc(pFile);
if(nei==EOF)//文件内没东西时
{
return 0;
}
fseek(pFile, 0, SEEK_SET);
while (!feof(pFile))
{
Node*p=(Node*)malloc(sizeof(Node));
p->pNext = NULL;
fscanf(pFile,"\t\t%d\t%s\t%d\t%f", &p->m_iNum, p->m_chName, &p->m_iAge, &p->m_fscord);
if(list.pHead!=NULL&&list.pHead->pNext==NULL)
{
list.pHead->pNext = p;
}
else
{
Node* s = list.pHead;
while (list.pHead!=NULL&&s->pNext!=NULL)
{
s= s->pNext;
}
if ( list.pHead== NULL)
{
list.pHead = p;
}
else
{
s->pNext = p;
}
}
list.m_iLength++;
}
printf("读取成功\n");
fclose(pFile);
system("pause");
system("cls");
}
//查找
int searchMessage()
{
system("cls");
printf("请输入你要查找的学生学号:\n");
int _s=0;
scanf("%d",&_s);
system("cls");
Node*p = NULL;
p=list.pHead;
while (list.pHead != NULL&&p->m_iNum!=_s )
{
p=p->pNext;
}
printf("学号:%d\t姓名:%s\t年龄:%d\t分数:%.2f\n", p->m_iNum, p->m_chName, p->m_iAge, p->m_fscord);
p=NULL;
system("pause");
system("cls");
}
//修改
int amendMessage()
{
system("cls");
printf("请输入你要修改的学生学号:\n");
int _s=0;
scanf("%d",&_s);
system("cls");
Node*l = NULL;
l=list.pHead;
if (list.pHead != NULL&&list.pHead->pNext == NULL)
{
printf("请输入学生姓名:\n");
cin >> list.pHead->m_chName;
printf("请输入学生年龄:\n");
cin >> list.pHead->m_iAge;
printf("请输入学生成绩:\n");
cin >> list.pHead->m_fscord;
}
else
{
while (list.pHead != NULL&&l->m_iNum!=_s )
{
l=l->pNext;
}
printf("请输入学生姓名:\n");
cin >> l->m_chName;
printf("请输入学生年龄:\n");
cin >> l->m_iAge;
printf("请输入学生学号:\n");
cin >> l->m_iNum;
printf("请输入学生成绩:\n");
cin >> l->m_fscord;
}
printf("修改成功\n");
l=NULL;
system("pause");
system("cls");
}
//删除
int deleteMessage()
{
system("cls");
printf("请输入你要删除的学生学号:\n");
int _s=0;
scanf("%d",&_s);
system("cls");
Node*o = NULL;
o=list.pHead;
if (list.pHead != NULL&&o->pNext == NULL)
{
list.pHead= NULL;
}
else
{
while (list.pHead != NULL&&o->m_iNum!=_s )
{
o=o->pNext;
}
while(o->pNext != NULL)
{
o->m_iAge=o->pNext->m_iAge;
o->m_fscord=o->pNext->m_fscord;
o->m_iNum=o->pNext->m_iNum;
strcpy(o->m_chName,o->pNext->m_chName);
o=o->pNext;
}
}
list.m_iLength--;
printf("删除成功\n");
system("pause");
system("cls");
}
C语言--学生管理系统
猜你喜欢
转载自blog.csdn.net/qq_41750725/article/details/79519607
今日推荐
周排行