网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月09日漏签0天
c语言吧 关注:801,766贴子:4,375,117
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1 2 下一页 尾页
  • 37回复贴,共2页
  • ,跳到 页  
<<返回c语言吧
>0< 加载中...

自己写的学生管理系统,不知不觉写了几百行。。。

  • 只看楼主
  • 收藏

  • 回复
  • 开心就好是把
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include<stdio.h>
#include"student.h"
#include<conio.h>Student* StudentHead = NULL;//头指针
FILE*FpStudent = NULL;
int n = 0;//学生总数
//学生信息界面
void Interface()
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 6);//设置字体颜色 printf("\n");
printf(" 欢迎使用学生管理系统1.0版本 \n");
printf(" |————————————————————————————| \n");
printf(" | 1、录入学生信息 (默认尾部添加) | \n");
printf(" |————————————————————————————| \n");
printf(" | 2、增加学生信息 (尾部添加) | \n");
printf(" |————————————————————————————| \n");
printf(" | 3、删除学生信息 | \n");
printf(" |————————————————————————————| \n");
printf(" | 4、查询学生信息 | \n");
printf(" |————————————————————————————| \n");
printf(" | 5、指定位置增加学生信息 | \n");
printf(" |————————————————————————————| \n");
printf(" | 6、保存学生信息 | \n");
printf(" |————————————————————————————| \n");
printf(" | 7、读取学生信息 | \n");
printf(" |————————————————————————————| \n");
printf(" | 8、打印学生信息 | \n");
printf(" |————————————————————————————| \n");
printf(" | 0、退出系统 | \n");
printf(" |————————————————————————————| \n"); int hao,len;
char name[20] = { 0 }; int num = 0,age = 0; float Mathematics = 0, English = 0, Chinese = 0;
//scanf(" %d", &num);
hao = (char)getch();
switch (hao)
{
case '1':{
printf("请输入姓名:");
scanf(" %s", name);
printf("请输入学号:");
scanf(" %d", &num);
printf("请输入年龄:");
scanf(" %d", &age);
printf("请输入数学分数:");
scanf(" %f", &Mathematics);
printf("请输入英语分数:");
scanf(" %f", &English);
printf("请输入语文分数:");
scanf(" %f", &Chinese);
inputStudent(name,num,age,Mathematics,English,Chinese); //录入学生
} break;//录入学生信息
case '2':{
if (StudentHead == NULL)
{
system("cls");
printf("暂时没有学生信息!请选择录入后再增加!\n");
return; }
printf("请输入姓名:");
scanf(" %s", name);
printf("请输入学号:");
scanf(" %d", &num);
printf("请输入年龄:");
scanf(" %d", &age);
printf("请输入数学分数:");
scanf(" %f", &Mathematics);
printf("请输入英语分数:");
scanf(" %f", &English);
printf("请输入语文分数:");
scanf(" %f", &Chinese);
addStudent(name,num,age,Mathematics,English,Chinese);
} break;//增加学生信息
case '3':{ if (StudentHead == NULL)
{
system("cls");
printf("暂时没有学生信息!请添加后再删除!\n");
return; }
printf("请输入要删除的名字:");
scanf(" %s", name);
DeleteStudent(name);
}break;//删除学生信息
case '4':{
if (StudentHead == NULL)
{
system("cls");
printf("暂时没有学生信息!请添加后再查询!\n");
return; }
printf("请输入要查找的名字:");
scanf(" %s", name);
LookUpStudent(name);
}break;//查询学生信息
case '5':{
if (StudentHead == NULL)
{
system("cls");
printf("暂时没有学生信息!请先录入后再来插入学生信息!\n"); return;
} printf("请输入你要插入的位置,0代表插入第一个:");
scanf("%d", &len);
if (len > n + 1)//如果要插入的位置比学生总人数还多的话就输出错误
{
system("cls");
printf("位置错误!只能比%d大1或者比%d小\n", n, n); return; }
printf("请输入姓名:");
scanf(" %s",name);
printf("请输入学号:");
scanf(" %d", &num);
printf("请输入年龄:");
scanf(" %d", &age);
printf("请输入数学分数:");
scanf(" %f",&Mathematics);
printf("请输入英语分数:");
scanf(" %f", &English);
printf("请输入语文分数:");
scanf(" %f",&Chinese); AppointLookUpStudent(len,name,num,age,Mathematics,English,Chinese);
} break;//指定位置增加学生
case '6':StorageStudent(); break;//存储学生信息
case '7':ReadStudent(); break;//读取学生信息
case '8':{
if (StudentHead == NULL)
{
system("cls");
printf("暂时没有学生信息!请添加后再打印!\n");
return; }
outputStudent();
} break;//打印学生信息
case '0':FreeLinkHead(); break;//释放全部链表结点
default: system("cls"); printf("输入错误!\n"); break; }
}


  • 开心就好是把
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//录入学生信息
void inputStudent(char name[], int num,int age,float Mathematics,float English,float Chinese)
{
Student *p = NULL;
Student *pstudent = NULL;
pstudent = (Student*)malloc(sizeof(Student));
if (pstudent == NULL)
{
printf("开辟空间失败!\n");
return;
}
strcpy(pstudent->name,name);
pstudent->num = num;
pstudent->age = age;
pstudent->score.Mathematics = Mathematics;
pstudent->score.English = English;
pstudent->score.Chinese = Chinese; pstudent->next = NULL;
if (StudentHead != NULL)//如果有一个学生以上,就让p为头结点
{
p = StudentHead;
} if (StudentHead == NULL)//如果一个学生也没有,就让新开辟的结点为头结点
{
StudentHead = pstudent;
//p = pstudent;
}
else
{
while (p->next != NULL)//这个是找到最后一个结点
{
p = p->next;
}
p->next = pstudent;//让最后一个结点指向新申请的结点
}
//p = pstudent;
system("cls");
printf("录入学生信息成功!\n");
n++;
}


2026-01-09 19:23:22
广告
不感兴趣
开通SVIP免广告
  • 开心就好是把
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//输出学生信息
void outputStudent()
{ Student *pstudent = StudentHead;
printf(" 姓名\t学号\t年龄\t数学\t英语\t语文\n");
while (pstudent != NULL)
{ printf(" %s\t %d\t%d\t%0.2f\t%0.2f\t%0.2f\n", pstudent->name, pstudent->num, pstudent->age,
pstudent->score.Mathematics, pstudent->score.English, pstudent->score.Chinese); pstudent = pstudent->next;
}
printf("打印学生信息成功!\n");
system("pause");
system("cls");
}


  • 开心就好是把
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
void addStudent(char name[], int num, int age, float Mathematics, float English, float Chinese)
{
Student*p = StudentHead;
Student *pstudent = NULL;//新开辟的结点
while (p->next != NULL)
{
p = p->next;//找到最后一个结点
} pstudent = (Student*)malloc(sizeof(Student));
if (pstudent == NULL)
{
printf("开辟空间失败!\n");
return;
} strcpy(pstudent->name, name); pstudent->num = num; pstudent->age = age; pstudent->score.Mathematics = Mathematics; pstudent->score.English = English; pstudent->score.Chinese = Chinese; p->next = pstudent;
pstudent->next = NULL; system("cls");
printf("增加学生信息成功!\n");
n++;}


  • 开心就好是把
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//查找学生信息
void LookUpStudent(char name[])
{
Student*pstudent = StudentHead;
while (pstudent!=NULL)
{ if (strcmp(pstudent->name, name) == 0)
{
printf(" 姓名\t学号\t年龄\t数学\t英语\t语文\n");
printf(" %s\t %d\t%d\t%0.2f\t%0.2f\t%0.2f\n", pstudent->name, pstudent->num, pstudent->age,
pstudent->score.Mathematics, pstudent->score.English, pstudent->score.Chinese);
printf("成功找到该学生!\n");
system("pause");
system("cls");
}else if (pstudent->next == NULL)
{
system("cls");
printf("没有该学生!\n");
} pstudent = pstudent->next; }}


  • 开心就好是把
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//删除学生信息
void DeleteStudent(char name[])
{
Student*pstudent = StudentHead;
Student*q = StudentHead;
Student*temp = NULL;
while (pstudent != NULL)
{ if (strcmp(StudentHead->name,name)==0)//删除链表头的情况下
{
temp = StudentHead;
StudentHead = StudentHead->next;
pstudent = StudentHead;//让pstudent和q都重新指向链表头
q = StudentHead;
free(temp);
temp = NULL;
system("cls");
printf("成功删除该学生!\n");
n--;
return;
}else if (strcmp(pstudent->name, name) == 0)
{
temp = pstudent;//找到该学生后
pstudent = pstudent->next;//让pstudent指向下一个结点
q->next = pstudent;
free(temp);
temp = NULL;
system("cls");
printf("成功删除该学生!\n");
n--;
return;
}
else
{
q = pstudent;
pstudent = pstudent->next;
} if (pstudent == NULL)
{
system("cls");
printf("没有该学生!\n");
}
}}


  • 开心就好是把
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//存储学生信息(写入硬盘)
void StorageStudent()
{
Student*pstudent = StudentHead;
char name[10] = {0};//存名字
char num[5] = {0};//存学号
char age[5] = {0};//存年龄
char Mathematics[10] = {0};//存数学分数
char English[10] = {0};//存英语分数
char Chinese[10] = {0};//存语文分数
char studentsum[40] = {0};//存储一个学生的总信息
if (StudentHead == NULL)
{
system("cls");
printf("暂时没有学生信息!请添加后再存储!\n");
return; }
else
{
FpStudent = fopen("D:\\student.txt", "wb+");//二进制存储文件
if (FpStudent == NULL)
{
printf("打开文件失败!\n");
return;
}
while (pstudent!= NULL)
{
strcpy(studentsum,pstudent->name);//把名字复制进去 strcat(studentsum," ");//做记号
sprintf(num,"%d",pstudent->num);//把学号转化成字符串
strcat(studentsum,num);//连接上名字
strcat(studentsum, " ");//做记号
sprintf(age, "%d", pstudent->age);//把年龄转化成字符串
strcat(studentsum,age);//连接上学号
strcat(studentsum, " ");//做记号
sprintf(Mathematics, "%0.2f", pstudent->score.Mathematics);//把数学成绩转化成字符串
strcat(studentsum,Mathematics);//连接上年龄
strcat(studentsum, " ");//做记号
sprintf(English,"%0.2f",pstudent->score.English);//把英语成绩转化成字符串
strcat(studentsum,English);//连接上数学
strcat(studentsum, " ");//做记号
sprintf(Chinese,"%0.2f",pstudent->score.Chinese);//把语文成绩转化成字符串
strcat(studentsum,Chinese);//连接上英语 fwrite(studentsum,1,strlen(studentsum),FpStudent);
fwrite("\r\n", 1, strlen("\r\n"),FpStudent);//“\r”代表一行的结束符 pstudent = pstudent->next;
} system("cls");
printf("成功保存文件!\n");
fclose(FpStudent);//关闭文件
}
}


  • 开心就好是把
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//读取学生信息
void ReadStudent()
{
char name[10] = { 0 };//存名字
char num[5] = { 0 };//存学号
char age[5] = { 0 };//存年龄
char Mathematics[10] = { 0 };//存数学分数
char English[10] = { 0 };//存英语分数
char Chinese[10] = { 0 };//存语文分数
char studentsum[40] = { 0 };//存储一个学生的总信息
int count = 0,j=0; FpStudent = fopen("D:\\student.txt", "rb");//二进制打开文件
if (FpStudent == NULL)
{
system("cls");
printf("打开文件失败!\n");
return;
}
system("cls");
printf("成功读取文件!\n");
while (NULL != fgets(studentsum, 40, FpStudent))//读取时不等于结尾
{ j = 0;
count = 0;
for (int i = 0; studentsum[i] != '\r'; i++)
{
if (0==count)
{
if (studentsum[i] == ' ')
{
name[i] = '\0';
count++;
}else
name[i] = studentsum[i];
}
else if (1 == count)
{
if (studentsum[i] == ' ')
{
num[j] = '\0';
count++;
j = 0;
}
else
{
num[j] = studentsum[i];
j++;
}
}
else if (2 == count)
{
if (studentsum[i] == ' ')
{
age[j] = '\0';
j = 0;
count++;
}
else
{
age[j] = studentsum[i];
j++;
}
}
else if (3 == count)
{
if (studentsum[i] == ' ')
{
Mathematics[j] = '\0';
j = 0;
count++;
}
else
{
Mathematics[j] = studentsum[i];
j++;
}
}
else if (4 == count)
{
if (studentsum[i] == ' ')
{
English[j] = '\0';
j = 0;
count++;
}
else
{
English[j] = studentsum[i];
j++;
}
}
else if (5 == count)
{
if (studentsum[i] == ' ')
{
Chinese[j] = '\0';
j = 0;
count++; }
else
{
Chinese[j] = studentsum[i];
j++;
}
} } //读取文档时,创建一个链表
inputStudent(name, atoi(num), atoi(age), (float)atof(Mathematics), (float)atof(English), (float)atof(Chinese)); }
//free(printStudent);
system("pause"); fclose(FpStudent);//关闭文件 //fread("\n", 2, 1, FpStudent);
}


2026-01-09 19:17:22
广告
不感兴趣
开通SVIP免广告
  • 开心就好是把
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//指定位置增加学生
void AppointLookUpStudent(int len, char name[], int num, int age, float Mathematics, float English, float Chinese)
{
int i=0;
Student*pstudent = StudentHead;
Student*qstudent = NULL;
Student*Tempstudent = NULL; while (pstudent!=NULL)//找到要插入的位置
{
if (len == i)//如果找到了要插入的位置
break;
i++;
qstudent = pstudent;
pstudent = pstudent->next;
}
Tempstudent = (Student*)malloc(sizeof(Student));
if (Tempstudent == NULL)
{
printf("开辟空间失败!\n");
return;
}
strcpy(Tempstudent->name, name); Tempstudent->num = num; Tempstudent->age = age; Tempstudent->score.Mathematics = Mathematics; Tempstudent->score.English = English; Tempstudent->score.Chinese = Chinese;
if (len == 0)//插入头的情况下
{
Tempstudent->next = pstudent;//让pstudent接收整条链表
StudentHead = Tempstudent;//赋值给大boss
n++;
}
else
{//当len大于0的时候
qstudent->next = Tempstudent;
Tempstudent->next = pstudent;
n++;
}
system("cls");
printf("插入学生信息成功!\n");}


  • 开心就好是把
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//释放链表的信息
void FreeLinkHead()
{
if (StudentHead == NULL)
{
system("cls");
printf("链表都是空的!释放什么呀");
return;
} Student*pTemp = StudentHead; while (StudentHead != NULL)
{
//赋值链表
pTemp = StudentHead;
//向后移动一个结点
StudentHead = StudentHead->next;
//释放前面一个结点
free(pTemp); }
system("cls");
printf("成功释放全部节点!\n");
}int main()
{
while (1)
{
Interface();
}
getchar();
return 0;
}


  • 开心就好是把
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//这个是头文件 student.h
#include<stdio.h>
#include<windows.h>FILE*fp;
struct Curriculum
{
float Mathematics;//数学
float English;//英语
float Chinese;//语文
};
struct Student
{
char name[15];//学生名字
int age;//学生年龄
int num;//学生学号
Curriculum score;//学生分数以及平均分
struct Student*next;
};void inputStudent(char name[], int num, int age, float Mathematics, float English, float Chinese);
void Interface();
void outputStudent();
void addStudent(char name[], int num, int age, float Mathematics, float English, float Chinese);
void LookUpStudent(char name[]);
void DeleteStudent(char name[]);
void StorageStudent();
void ReadStudent();
void AppointLookUpStudent(int len, char name[], int num, int age, float Mathematics, float English, float Chinese);
void FreeLinkHead();


  • 开心就好是把
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
希望大家顶一下!!谢谢


  • 歇斯底里的漫步
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你怎么开始写的。是了解功能直接编写,还是有看过类似系统,再开始编,我也想做点小项目,求回复


  • 喝敌敌畏神秘人
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
先膜拜一下


2026-01-09 19:11:22
广告
不感兴趣
开通SVIP免广告
  • GTA小鸡
  • 吧主
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
膜拜大佬


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 37回复贴,共2页
  • ,跳到 页  
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示