找了好多的文章,发现很多博主都不怎么走心啊,就把代码往这一放就走了,干脆我写篇高质量的吧
如果觉得我写的好记得给个赞哦
需求分析和总体设计小可爱们还是自己想把,我怎么可能给你们抄呢哈哈哈哈
题目要求:
设计一个学生证的管理程序。该程序具有以下功能:
(1)录入某位学生的学生证信息(学生证应该包括的内容请参看自己的学生证);
(2)给定学生的学号,修改该学生的学生证信息;
(3)给定学生的学号,删除该学生的学生证信息;
(4)根据输入的学生的学号,显示该学生的学生证信息;
(5)根据输入的班级的编号,显示该班所有学生的学生证信息;
(6)统计功能:提供一些统计各类信息的功能。
(7)一定要用链表和文件操作
起初想想应该随随便便一天就搞定的,但是写完链表操作后发现原来文件读写是个大大的坑,搞了好几个星期,今天终于搞定了。
正文开始:
流程设计:
总图:
1.读文档操作(这里最难了)
struct student *read_file(){
int i=0;
struct student *p1=NULL,*head=NULL,*p2=NULL;
FILE *fp;
fp = fopen("student.txt","r");
if(fp == NULL){
printf("+ 未发现存档 +\n");
return 0;}
while(!feof(fp)){
p1 = (struct student*)malloc(LEN);
if(fscanf(fp,"%d%d%d%s%s%s%s%s",&p1->idnum,&p1->cardnum,&p1->date,p1->school,p1->sex,&p1->major,&p1->iden,p1->name)>0)
/*这里我的保存格式是
18xxxxxxxx(10位)
xxxxx(5位)
20220630
数信
男
计算机
本科生
xx
18xxxxxxxxx(10位)…………
如果超过10位会报错!!!!!!!!!!!!!!!!!
*/
{
p1->next=NULL;
if(i==0) head=p1;
else p2->next=p1;
p2=p1;
i++;
}
}
fclose(fp);
printf("+ 读档成功 +\n");
return head;
}
2.录入学生信息
struct student *create(int n,struct student *file)
{
struct student *head=NULL,*p1=NULL,*p2=NULL,*p3=NULL;
int i;
if(file==NULL){
for(i=1;i<=n;i++)
{
p1=(struct student *)malloc(LEN);
printf("请输入你的学号:(去掉前面的20)"); scanf("%d",&p1->idnum);
printf("请输入你的卡号:"); scanf("%d",&p1->cardnum);
printf("请输入你的学生证有效期:(形如20220620)"); scanf("%d",&p1->date);
printf("请输入你的学院:(请输入全称,如:数学与信息学院)"); scanf("%s",&p1->school);
printf("请输入你的性别:(男或女)"); scanf("%s",&p1->sex);
printf("请输入你的专业:(请输入全称,如:计算机科学与技术)")