我们计算机软件技术基础要做一个课程设计C语言的,谁有思路给我提供帮助!万分感谢!!

2025-03-14 22:54:22
推荐回答(2个)
回答1:

#include 
#include 
#include 
#include 
#define LEN sizeof(struct studentlist)
int n;         //全局变量
FILE *fp;
struct studentlist
{
 double  number;     //学号
 char  name[20];     //姓名
 float Chiscore;     //语文成绩
 float   Mscore;     //数学成绩
 float Engscore;     //英语成绩
 float comscore;     //计算机专业成绩
 struct studentlist *next;
};

struct studentlist *set_list()    //建立学生链表函数
{
 struct studentlist *head;
 struct studentlist *p1,*p2;
 int i;
 
 printf("请问需要建立几份学生信息?\n");
  scanf("%d", &n);
  
  for(i=1;i<=n;i++)
  {
   printf("请输入第%d份学生信息\n",i);
   p1=(struct studentlist *)malloc(LEN);
   printf("学号:");
   scanf("%lf",&p1->number);
   printf("姓名:");
   scanf("%s",p1->name);
   printf("语文成绩:");
   scanf("%f",&p1->Chiscore);
   printf("数学成绩:");
   scanf("%f",&p1->Mscore);
   printf("英语成绩:");
   scanf("%f",&p1->Engscore);
   printf("专业成绩:");
   scanf("%f",&p1->comscore);
   printf("\n");
  
   if(i==1)
     head=p1;
     else 
     p2->next=p1;
   p2=p1;
 
  }
  p2->next=NULL;
 return head;
}
void put_list(struct studentlist *head)   //输出学生信息函数
{
 struct studentlist *p1;
 int i;
 p1=head;
 printf("学号 姓名 语文成绩 数学成绩 英语成绩 计算机专业成绩\n");
 
 while(p1!=NULL)
 {
  printf("%-2.0lf %s  %-7.1f ",p1->number,p1->name,p1->Chiscore);
  printf("%-7.1f %-7.1f %-7.1f",p1->Mscore,p1->Engscore,p1->comscore);
  printf("\n");
  p1=p1->next;
 }
}
struct studentlist *del_list()
{
 return 0;
}
void save_list(struct studentlist *head)    //链表数据保存
{
 struct studentlist *p1;
 p1=head;
 if((fp=fopen("D:\\学生信息表数据.txt","wb"))==NULL)
 {
  printf("文件打开失败\n");
  exit(1);
 }
 while(p1!=NULL)
 {
  if( (fwrite(p1,LEN,1,fp))!=1)
  {
   printf("数据写入失败\n");
   exit(1);
  }
  p1=p1->next;
 }
 fclose(fp);    //释放内存
 printf("\n");
 printf("链表保存成功!\n");
}
struct studentlist *read_list()     //读取文件函数
{
 int i;
 struct studentlist *head;
 struct studentlist *p1,*p2;
 if((fp=fopen("D:\\学生信息表数据.txt","rb"))==NULL)
 {
  printf("文件读取失败\n");
  exit(1);
 }
 
 for(i=0;i<3;i++)
 {
  p1=(struct studentlist*)malloc(LEN);
  
  if(fread(p1,LEN,1,fp)!=1)
  {
   printf("数据读取失败\n");
   exit(1);
  }
  
  if(i==1)
   head=p1;
  else
   p2->next=p1;
  p2=p1;
 }
 p2->next=NULL;
 
 printf("文件读取成功\n");
 fclose(fp);
 return head;
}
int main(void)
{
 int n;
 struct studentlist *temp;
 printf("=========================\n");
 printf("‖     按1:建立学生信息    按2:输出学生信息     ‖\n");
 printf("‖     按3:删除学生信息    按4:保存学生信息     ‖\n");
 printf("‖     按5:读取学生信息                         ‖\n");
 printf("=========================\n");
 printf("请问需要执行哪一项操作\n");
  scanf("%d",&n);
 while(n!=0)     //输入 0结束程序
 {
  switch(n)
  {
   case 1: temp=set_list();
     break;
   case 2: put_list(temp);
     break;
   case 3: del_list();
     break;
   case 4: save_list(temp);
     break;
   case 5: temp=read_list();
     break;
   default :printf("没有找到符合你的操作!请重新输入。\n");
  }
  printf("请问需要执行哪一项操作\n");
   scanf("%d",&n);
 }
 printf("程序结束!感谢您的使用!");
 return 0;
}
~~~~~~~~~~~~~~~~~~~~~
是这个?

回答2:

看着你的名字,就不想帮你,一点都不尊重别人