学生消费记录管理系统(C语言 结构体, 链表)
自己在寒假练手的小项目
本系统要实现的功能:
1. 消费记录存在文件fee.txt中, 每一条记录包括一个消费的交易日期、入账日期、交易额、交易后余额
2. (1)用户能够查询自己的一卡通固定时段消费情况:可以按月、学期、学年查询 (2)用户可以自定义一个时间段进行查询自己的消费情况
(3)用户可以按交易金额查找消费记录
(4)管理员可查询任一用户的消费记录,可按照固定时段、自定义时段、金额方式、已删除记录查询
3. 排序功能:按消费记录的交易日期、金额、次数中一个进行(升序或降序)排序。
4. 数据录入:管理员能录入某个用户的一卡通消费情况,可以一次完成若干条记录的输入。
5. 显示功能:可进行全部消费记录的显示,也可按照查询结果进行显示
6. 数据变更:管理员可以更改或删除用户的某条消费记录,但删除的信息要保存在另外一个文件fee_undel.dat
7.统计功能:(1)用户可统计自己在一个自定义时间段里的消费总金额情况
(2)管理员可统计各个用户在一个自定义时间段里的消费总金额情况
8. 用户和管理员的权限要分开。
代码:
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Student)
int n=0; //用来判断是否有数据输出的
struct Student
{
long ID; //学号
char name[20]; //姓名
int year; //交易日期:年
int month; //交易日期:月
int day;//交易日期:天
long postingDate; //入账日期
int amount; //交易金额
int moneyLeft;//交易余额
struct Student *next;//创建链表的节点
};
//学生信息从 fee.txt 文件中读取
struct Student *creat(void) //定义函数 此函数返回一个指向链表头的指针 建立动态链表
{
FILE *fp;
if((fp = fopen("fee.txt","rb"))== NULL)
{
printf("无法打开此文件\n");
return ;
}
else printf("打开文件成功\n");
struct Student *head;
struct Student *p1,*p2;
head=p1=p2=(struct Student *)malloc(LEN); //开辟一个新单元
while((fscanf(fp,"%ld %s %d %d %d %ld %d %d",&p1->ID,p1->name,&p1->year,&p1->month,&p1->day,&p1->postingDate,&p1->amount,&p1->moneyLeft))!=EOF) //当文件未读取完
{
p1=(struct Student*)malloc(LEN);
p2->next=p1;
p2=p1;
}
// printf("文件录入成功\n");
p2->next=NULL;
if (head == NULL)
{
printf("读取失败!内存空间申请不足!\n");
return NULL;
}
fclose( fp ); //最后不要忘了关闭文件
return(head);
}
/*************************************************
Function :已删除记录查询
*************************************************/
struct Student *recreat(void) //定义函数 此函数返回一个指向链表头的指针 建立动态链表
{
FILE *fp;
if((fp = fopen("fee_undel.dat","rb"))== NULL)
{
printf("无法打开此文件\n");
return ;
}
else printf("打开文件成功\n");
struct Student *head;
struct Student *p1,*p2;
head=p1=p2=(struct Student *)malloc(LEN); //开辟一个新单元
while((fscanf(fp,"%ld %s %d %d %d %ld %d %d ",&p1->ID,p1->name,&p1->year,&p1->month,&p1->day,&p1->postingDate,&p1->amount,&p1->moneyLeft))!=EOF) //当文件未读取完
{
p1=(struct Student*)malloc(LEN);
p2->next=p1;
p2=p1;
}
printf("文件录入成功\n");
p2->next=NULL;
if (head == NULL)
{
printf("读取失败!内存空间申请不足!\n");
return NULL;
}
fclose( fp ); //最后不要忘了关闭文件
return(head);
}
/***********************************************
Function : 查询
************************************************/
void check(int b) //通过用户输入的内容,链表查询
{
long num;
system("cls");
printf(" 请输入您的学号\n");
scanf("%ld",&num);
struct Student *pt;
pt=creat();
if(b==1) //按月份查询
{
int c;
printf(" 请输入您想要查询的月份\n");
scanf("%d",&c);
while(pt!=NULL)
{
if(pt->ID==num)
{
if((pt->month)==c)
{
n=1;
printf("学号:%10ld 姓名:%5s 交易日期:%d %d %d 交易金额:%d 交易余额%d \n",pt->ID,pt->name,pt->year,pt->month,pt->day,pt->amount,pt->moneyLeft);
}
}
pt=pt->next;
}
}
else if(b==2) //按学期查询
{
int d,y1,y2,m1,m2,ji;
printf(" 请输入您的级数,比如:2017\n");
scanf("%d",&ji);
getchar();
printf("请选择您要查询的学期 1——大一上,2——大一下,3——大二上,4——大二下,5——大二下,6——大三上,7——大三下\n\n8——大四上,9——大四下\n");
scanf("%d",&d);
switch (d)
{
case 1: y1=ji; y2=(ji+1); m1=9; m2=2;break;
case 2: y1=(ji+1); y2=(ji+1); m1=3; m2=8;break;
case 3: y1=(ji+1); y2=(ji+2); m1=9; m2=2;break;
case 4: y1=(ji+2); y2=(ji+2); m1=3; m2=8;break;
case 5: y1=(ji+2); y2=(ji+3); m1=9; m2=2;break;
case 6: y1=(ji+3); y2=(ji+3); m1=3; m2=8;break;
case 7: y1=(ji+3); y2=(ji+4); m1=9; m2=2;break;
case 8: y1=(ji+4); y2=(ji+4); m1=3; m2=8;break;
default: printf("data error");
}
while(pt!=NULL)
{
if(pt->ID==num)
{
if(((y1==(pt->year))&&m1<=(pt->month)<=12)||((y2==(pt->year))&&(1<=(pt->month)<=m2)))
{
n=1;
printf("学号:%10ld 姓名:%5s 交易日期:%d %d %d 交易金额:%d 交易余额%d \n",pt->ID,pt->name,pt->year,pt->month,pt->day,pt->amount,pt->moneyLeft);
}
}
pt=pt->next;
}
}
else if(b==3) //按学年查询
{
int ji2,f,y;
printf(" 请输入您的级数,比如:2017");
scanf("%d",&ji2);
printf(" 请选择您要查询的学年: 1——大一,2——大二,3——大三,4——大四\n\n\n");
scanf("%d",&f);
switch (f)
{
case 1: y=ji2;break;
case 2: y=ji2+1;break;
case 3: y=ji2+2;break;
case 4: y=ji2+3;break;
default: printf("data error");
}
while(pt!=NULL)
{
if(pt->ID==num)
{
if((((pt->year)==y)&&(9<=(pt->month)<=12))||(((pt->year)==(++y))&&(1<=(pt->month)<=8)))
{
n=1;
printf("学号:%10ld 姓名:%5s 交易日期:%d %d %d 交易金额:%d 交易余额%d \n",pt->ID,pt->name,pt->year,pt->month,pt->day,pt->amount,pt->moneyLeft,);
}
}
pt=pt->next;
}
}
else if(b==4) //按日期段查询
{
int y3,y4,m3,m4;
printf(" 请输入您想选择的时间段 例如:2017, 1, 2017, 8\n\n\n");
scanf("%d, %d, %d ,%d\n",&y3,&y4,&m3,&m4);
while(pt!=NULL)
{
if(pt->ID==num)
{
if((((pt->year)==y3)&&(m3<=(pt->month)<=12))||(((pt->year)==(y4))&&(1<=(pt->month)<=m4)))
{
n=1;
printf("学号:%10ld 姓名:%5s 交易日期:%d %d %d 交易金额:%d 交易余额%d \n",pt->ID,pt->name,pt->year,pt->month,pt->day,pt->amount,pt->moneyLeft);
}
}
pt=pt->next;
}
}
else if(b==5) //按交易金额查询
{
int g;
printf(" 输入您想要查询的金额\n\n\n");
scanf("%d",&g);
while(pt!=NULL)
{
if(pt->ID==num)
{
if((pt->amount)==g)
{
n=1;
printf("学号:%10ld 姓名:%5s 交易日期:%d %d %d 交易金额:%d 交易余额%d \n",pt->ID,pt->name,pt->year,pt->month,pt->day,pt->amount,pt->moneyLeft);
}
else printf("data error\n");
}
pt=pt->next;
}
}
else if(b==6) //显示全部消费记录
{
while(pt!=NULL)
{
if(pt->ID==num)
{
n=1;
printf("学号:%10ld 姓名:%5s 交易日期:%d %d %d 交易金额:%d 交易余额%d \n",pt->ID,pt->name,pt->year,pt->month,pt->day,pt->amount,pt->moneyLeft);
}
pt=pt->next;
}
}
else if(b==7) //已删除记录查询
{
struct Student *p1;
p1=recreat();
while(p1!=NULL)
{
if(p1->ID==num)
{
n=1;
printf("学号:%10ld 姓名:%5s 交易日期:%d %d %d 交易金额:%d 交易余额%d \n",p1->ID,p1->name,p1->year,p1->month,p1->day,p1->amount,p1->moneyLeft);
}
p1=p1->next;
}
}
if(n==0)
{
printf("没有相关交易记录");
}
//选择一个后,返回主函数
}
int inquire(int b) //选择要查询的内容
{
int a;
system("cls");
if(b==1)
{
printf("***请选择您想要的功能***\n\n");
printf("1-----按月查询 2-----按学期查询 3-----按学年查询 4-----按日期区间段查询 5-----按交易金额查询 6-----显示全部消费记录\n\n 7-----已删除消息记录查询\n\n\n");
scanf("%d",&a);
switch (a)
{
case 1:check(1); break;
case 2:check(2); break;
case 3:check(3); break;
case 4:check(4); break;
case 5:check(5); break;
case 6:check(6); break;
case 7:check(7); break;
default: printf("data error");
}
}
else
{
printf(" \n\n\n\n\n\n\t\t\t ***请选择您想要的功能***\n\n");
printf("1-----按月查询 2-----按学期查询 3-----按学年查询 4-----按日期区间段查询 5-----按交易金额查询 6-----显示全部消费记录\n\n\n");
scanf("%d",&a);
switch (a)
{
case 1:check(1); break;
case 2:check(2); break;
case 3:check(3); break;
case 4:check(4); break;
case 5:check(5); break;
case 6:check(6); break;
default: printf("data error");
}
}
}
/******************************************************
Function : 排序
********************************************************/
void Rank_check(int b)
{
long num;
printf(" 请输入您的学号\n\n\n");
scanf("%ld",&num);
int xu;
printf(" 请选择升序或降序:0——升序,1——降序\n");
scanf("%d",&xu);
struct Student *pt;
pt=creat(); //头指针
struct Student *p1,*p2,temp,*p;
if(b==1) //按金额排序
{
if(xu==0) //升序
{
for(p1=pt ;p1!=NULL ;p1=p1->next)
for(p2=p1->next ;p2!=NULL ;p2=p2->next)
{
if (p1->amount > p2->amount)
{
temp = *p1;
*p1=*p2;
*p2=temp;
//重构链表
p = p1->next;
p1->next = p2->next;
p2->next = p;
}
}
}
else if(xu==1) //降序
{
for(p1=pt ;p1!=NULL ;p1=p1->next)
for(p2=p1->next ;p2!=NULL ;p2=p2->next)
{
if (p1->amount < p2->amount)
{
temp = *p1;
*p1=*p2;
*p2=temp;
//重构链表
p = p1->next;
p1->next = p2->next;
p2->next = p;
}
}
}
while(pt!=NULL)
{
if(pt->ID==num)
{
n=1;
printf("学号:%10ld 姓名:%5s 交易日期:%d %d %d 交易金额:%d 交易余额%d \n",pt->ID,pt->name,pt->year,pt->month,pt->day,pt->amount,pt->moneyLeft,);
}
pt=pt->next;
}
}
else if(b==2)
{
if(xu==0) //升序
{
for(p1=pt ;p1!=NULL ;p1=p1->next)
for(p2=p1->next ;p2!=NULL ;p2=p2->next)
{
if (p1->tradeTimes > p2->tradeTimes)
{
temp = *p1;
*p1=*p2;
*p2=temp;
//重构链表
p = p1->next;
p1->next = p2->next;
p2->next = p;
}
}
}
else if(xu==1) //降序
{
for(p1=pt ;p1!=NULL ;p1=p1->next)
for(p2=p1->next ;p2!=NULL ;p2=p2->next)
{
if (p1->tradeTimes < p2->tradeTimes)
{
temp = *p1;
*p1=*p2;
*p2=temp;
//重构链表
p = p1->next;
p1->next = p2->next;
p2->next = p;
}
}
}
while(pt!=NULL)
{
if(pt->ID==num)
{
n=1;
printf("学号:%10ld 姓名:%5s 交易日期:%d %d %d 交易金额:%d 交易余额%d \n",pt->ID,pt->name,pt->year,pt->month,pt->day,pt->amount,pt->moneyLeft);
}
pt=pt->next;
}
}
else if(b==3) //按交易日期
{
if(xu==0) //升序
{
for(p1=pt ;p1!=NULL ;p1=p1->next)
for(p2=p1->next ;p2!=NULL ;p2=p2->next)
{
if (p1->postingDate > p2->postingDate)
{
temp = *p1;
*p1=*p2;
*p2=temp;
//重构链表
p = p1->next;
p1->next = p2->next;
p2->next = p;
}
}
}
else if(xu==1) //降序
{
for(p1=pt ;p1!=NULL ;p1=p1->next)
for(p2=p1->next ;p2!=NULL ;p2=p2->next)
{
if (p1->postingDate < p2->postingDate)
{
temp = *p1;
*p1=*p2;
*p2=temp;
//重构链表
p = p1->next;
p1->next = p2->next;
p2->next = p;
}
}
}
while(pt!=NULL)
{
if(pt->ID==num)
{
n=1;
printf("学号:%10ld 姓名:%5s 交易日期:%d %d %d 交易金额:%d 交易余额%d \n",pt->ID,pt->name,pt->year,pt->month,pt->day,pt->amount,pt->moneyLeft);
}
pt=pt->next;
}
}
if(n==0)
{
printf("data error");
}
}
/************************************
Function : 排序菜单
************************************/
void rank() //排序功能
{
int a;
system("cls");
printf(" \n\n\n\n\n\n\t\t\t ***请选择您想要的功能***\n\n");
printf(" 1-----按金额 2-----按交易次数 3-----按交易日期\n\n\n");
scanf("%a",&a);
switch (a)
{
case 1: Rank_check(1);break;
case 2: Rank_check(2);break;
case 3: Rank_check(3);break;
default: printf("data error");
}
}
/***********************************************************
Funtion : 统计
************************************************************/
void tongji()
{
long num;
printf(" 请输入您的学号\n\n\n");
scanf("%ld",&num);
struct Student *pt;
pt=creat();
int y1,y2,m1,m2,total=0;
printf(" 请输入您想选择的时间段 例如:2017, 1, 2017, 8\n\n\n");
scanf("%d %d %d %d",&y1,&y2,&m1,&m2);
getchar();
while(pt!=NULL)
{
if(pt->ID==num)
{
if((((pt->year)==y1)&&(m1<=(pt->month)<=12))||(((pt->year)==(y2))&&(1<=(pt->month)<=m2)))
{
n=1;
total = total + pt->amount;
}
}
pt=pt->next;
}
printf(" 该时间段交易的总金额为:%d\n\n\n",total);
if(n==0)
{
printf("没有相关交易记录\n");
}
}
/**************************************
Function : 录入学生消费信息
***************************************/
int input() //录入学生信息,要开辟新的空间
{
FILE *fp;//文件指针
if((fp=fopen("fee.txt","ab"))==NULL)
{
printf("can not open file\n");
return ;
}
struct Student *pt,*p1; //pt指向最后一个学生
pt=creat();
while (pt->next!=NULL)
{
pt=pt->next;
}
while(1)
{
p1=(struct Student*)malloc(LEN);
system("cls");
printf(" \n\n\n\n\n\n\t\t\t \n\n");
printf(" 请输入: 学号 , 姓名 , 交易日期:年 月 日 , 入账日期, 交易金额 , 余额 \n");
printf(" 示例: 1234567890 , 喜羊羊 ,2018 02 24 , 20180224, 2 , 20 \n");
scanf("%ld %s %d %d %d %ld %d %d ",&p1->ID,p1->name,&p1->year,&p1->month,&p1->day,&p1->postingDate,&p1->amount,&p1->moneyLeft);
printf("\n");
fprintf(fp,"%ld %s %d %d %d %ld %d %d \n ",p1->ID,p1->name,p1->year,p1->month,p1->day,p1->postingDate,p1->amount,p1->moneyLeft);
p1->next=NULL;
pt->next=p1;
getchar();
printf("是否要继续录入 Y/N");
if(getchar()=='N')
break;
}
fclose(fp);
printf("录入结束");
return 0;
}
/****************************************************
Function : 修改学生消费信息
*****************************************************/
void modify()
{
int a,num;
char ch;
struct Student *temp;
temp=creat();
printf(" 请输入您要查找的学号\n\n\n");
scanf("%ld",&num);
getchar();
while(temp->next!=NULL)
{
if((temp->ID)==num)
{
printf("学号:%10ld 姓名:%5s 交易日期:%d %d %d 交易金额:%d 交易余额%d \n",temp->ID,temp->name,temp->year,temp->month,temp->day,temp->amount,temp->moneyLeft);
printf("是否要修改该信息 Y/N\n");
if(getchar()=='Y')
{
getchar();
printf("请选择您想要修改的信息: 1--学号,2--姓名,3--交易日期:年,月,日。4--入账日期 示例20170101,5--交易金额,6--交易余额\n");
scanf("%d",&a);
getchar();
switch(a)
{
case 1: printf("请输入您要修改的学号:\n");scanf("%ld",&temp->ID); break;
case 2: printf("请输入修改学生的姓名:\n");scanf("%s",temp->name); break;
case 3: printf("请输入修改交易日期: 示例:2018 2 23\n"); scanf("%d %d %d",&temp->year,&temp->month,&temp->day); break;
case 4: printf("请输入修改入账日期:\n"); scanf("%ld",&temp->postingDate); break;
case 5: printf("请输入修改交易金额:\n"); scanf("%d",&temp->amount); break;
case 6: printf("请输入修改交易余额:\n"); scanf("%d",&temp->moneyLeft); break;
default: printf("data error\n");
}
printf("修改完成\n");
printf("学号:%10ld 姓名:%5s 交易日期:%d %d %d 交易金额:%d 交易余额%d \n",temp->ID,temp->name,temp->year,temp->month,temp->day,temp->amount,temp->moneyLeft);
}
}
printf("是否要继续修改 Y/N\n");
if(getchar()=='N')
return ;
temp=temp->next;
}
}
/*******************************************
Function : 删除学生消费记录
*********************************************/
struct Student *delete()
{
long num;
struct Student *head,*temp,*p,*q;
head=creat();
temp = head;
FILE *fp,*fp2,*fp3;//文件指针
if((fp=fopen("fee_undel.dat","wb"))==NULL)
{
printf("can not open file\n");
return ;
}
if((fp2=fopen("fee.txt","wb"))==NULL)
{
printf("can not open file\n");
return ;
}
fclose(fp2);
if((fp3=fopen("fee.txt","ab"))==NULL)
{
printf("can not open file\n");
return ;
}
printf(" 请输入您要查找的学号\n\n\n");
getchar();
while(temp->next!=NULL)
{
int flag=0;
p=temp;
q=temp;
if((temp->ID)==num)
{
printf("学号:%10ld 姓名:%5s 交易日期:%d %d %d 交易金额:%d 交易余额%d \n",temp->ID,temp->name,temp->year,temp->month,temp->day,temp->amount,temp->moneyLeft);
printf("是否要删除该信息 Y/N\n");
if(getchar()=='Y')
{
flag=1;
if(temp==head) /* 表头节点*/
{
head=head->next;
free(temp); /*释放被删节点*/
}
else //将删除的节点信息保存到 fee_undel.dat中
{
p->next=temp->next; //表中节点
fprintf(fp,"%ld %s %d %d %d %ld %d %d\n ",temp->ID,temp->name,temp->year,temp->month,temp->day,temp->postingDate,temp->amount,temp->moneyLeft,);
free(temp);
}
}
getchar();
}
if(flag==0)
{
fprintf(fp3,"\n%ld %s %d %d %d %ld %d %d \n",temp->ID,temp->name,temp->year,temp->month,temp->day,temp->postingDate,temp->amount,temp->moneyLeft); //以追加方式写入
}
temp=temp->next;
}
fclose(fp);
fclose(fp3);
return (head);
}
/*******************************
Function : 更新菜单
*******************************/
void renew()
{
int a;
system("cls");
printf(" \n\n\n\n\n\n\t\t\t ***请选择您想要的功能***\n\n");
printf(" ******************************************************************\n\n\n");
printf(" 请选择 1——修改信息,2——删除信息\n\n\n");
printf(" ******************************************************************\n\n\n");
scanf("%d",&a);
switch(a)
{
case 1:modify(); break;
case 2:delete(); break;
default:printf("data error\n");
}
}
int user() //用户权限,选择功能
{
system("cls");
int a;
printf("\n\n\n\n\n\n\t\t\t ***请选择您想要的功能***\n\n");
printf(" ******************************************************************\n\n\n");
printf(" 1------查询 2------排序 3------统计 \n\n\n");
printf(" ******************************************************************\n\n\n");
scanf("%d",&a);
switch(a)
{
case 1: inquire(0); break;
case 2: rank(); break;
case 3: tongji(); break;
// default: printf("data error");
}
return 0;
}
int manager() //管理员权限,选择功能
{
system("cls");
int a;
printf(" \n\n\n\n\n\n\t\t\t ***请选择您想要的功能***\n\n");
printf(" ******************************************************************\n\n\n");
printf(" 1------查询 2------排序 3------统计 4-----录入 5-----更新\n\n\n");
printf(" ******************************************************************\n\n\n");
scanf("%d",&a);
switch(a)
{
case 1: inquire(1); break;
case 2: rank(); break;
case 3: tongji(); break;
case 4: input(); break;
case 5: renew(); break;
default: printf("data error");
}
return 0;
}
void welcome() //欢迎页面
{
int a;
printf(" ******选择您的身份:输入1——用户,输入2——管理员******\n");
scanf("%d",&a) ;
switch (a)
{
case 1: user(); break;
case 2: manager(); break;
default : printf("data error"); break;
}
}
int main()
{
welcome();
return 0;
}
学生消费记录管理系统(C语言 结构体, 链表)相关推荐
- 按平均成绩排行c语言文件操作,学生成绩管理系统(c语言结构体以及文件操作)实验报告精选.doc...
学生成绩管理系统(c语言结构体以及文件操作)实验报告精选 C程序设计 实验报告 编号: 姓名院系学号任课教师于萧指导教师实验地点实验时间实验名称文件操作同 组 人无预习报告(对实验主要内容的认识)得分 ...
- C语言——结构体链表,附完整示例
引用自身的结构体,一个结构体中有一个或多个成员的基类型就是本结构体类型时,说明这个结构体可以引用自己,所以称作引用自身的结构体. 例如下面的结构体: struct link{ char ch; str ...
- c语言结构体编辑学生成绩管理,C语言基于结构体的学生信息管理系统实现
宋福英 摘 要: 中国高校为保证学生信息安全,各分院的学生信息都在一个相对封闭的闭环内共享.中国高校在校生人数逐年递增,给高校的信息管理带来不小压力.C语言兼具高级语言和汇编语言的特点,简洁.紧凑. ...
- C语言试题五十一之已知学生的记录是由学号和学习成绩构成,n名学生的数据已存入s结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。
1. 题目 请编写一个函数void function(Student a[], int n, Student *s),其功能时:已知学生的记录是由学号和学习成绩构成,n名学生的数据已存入s结构体数组中 ...
- C语言编程题—结构体—设计程序,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数 fun:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分
4 C语言编程题--结构体 **设计程序,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中.请编写函数 fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有 ...
- C语言编程>第十二周 ③ 已知学生的记录由学号和学习成绩构成,M名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数。
已知学生的记录由学号和学习成绩构成,M名学生的数据已存入a结构体数组中.请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分).已给出函数的首部,请完成该函 ...
- C语言编程>第十三周 ⑧ 已知学生的记录由学号和学习成绩组成,M名学生的数据已存入stu结构体数组中。请编写函数fun,该函数的功能是:
例题:已知学生的记录由学号和学习成绩组成,M名学生的数据已存入stu结构体数组中.请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分).已给出函数的首部, ...
- 利用C语言结构体实现学生成绩录入系统
利用C语言结构体实现学生成绩录入系统 ##功能介绍 密码功能嵌入于主函数中,初始密码为:123456(可根据需要修改) 输入1可以调用add函数对学生的基本信息以及成绩进行输入 输入2则调用print ...
- C语言课程设计:连锁超市会员消费记录管理系统
3天时间做的,全部都是自己敲的代码 博客原文链接 #include<stdio.h> #include<stdlib.h> #include<string.h> s ...
最新文章
- linux下 proc 目录
- CPU也支持AI加速,英特尔发布第3代至强处理器,推理速度提升80%,阿里腾讯云都在用...
- GHOST重装系统只剩一个C盘 数据恢复方法
- notepad 没有plugin manager_如何在没有反光镜的情况下在户外拍摄人物?
- Java基础:JVM垃圾回收算法
- 从产品经理到创业者如何拿到第一个1000万融资
- python下载百度云盘中的数据_python爬虫:爬取百度云盘资料,保存下载地址、链接标题、链接详情...
- 【小白学习tensorflow教程】一、tensorflow基本操作、快速构建线性回归和分类模型
- ssrs报表服务器数据库配置文件,创建报表服务器数据库(SSRS 配置管理器)
- javaweb学习总结(十八):JSP属性范围
- Live rates territory LRTERR is invalid for product or account hierarchy
- HH SaaS电商系统的库存调整单设计
- tensorflow 旋转图片_使用TensorFlow对图像进行随机旋转的实现示例
- 腾讯视频如何删除观看记录
- linux计划任务crond服务
- 【干货】阿里直播平台的架构演进
- log10/log2--求常用对数/以2为底的对数
- RC电路一阶线性微分方程
- vue3 动态获取屏幕尺寸
- mysql docker oom_记一次 K3s MySQL 启动 OOM 排查