C语言课程设计:学生学籍管理系统。有谁有代码给我做个参考吗?谢谢了,C语言和C++的都可以。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言课程设计:学生学籍管理系统。有谁有代码给我做个参考吗?谢谢了,C语言和C++的都可以。相关的知识,希望对你有一定的参考价值。
实验模块:
1:实现学生基本情况的录入,修改,删除等基本操作。
2:对学生的基本信息提供灵活的查询方式。
3:完成一个班级的学期选课功能。
4:实现学生成绩的录入修改和删除等操作。
5:能方便的对学生的各个学期的成绩进行查询。
6:具有成绩统计,排名等功能。
7:具有留级,休学等特殊情况的处理功能。
8:能输出常用的各种表,课程表,成绩单等。
9:具有数据备份和数据恢复功能。
要求:
1:学生成绩表的设计要考虑到不同年级教学计划的变化情况。
2:对于新生班级,应该首先进行基本的情况的录入,选课,然后才能进行成绩的录入。
#include<string.h>
#include<stdlib.h>
typedef struct stud //学生信息结构
long num;
char name[20];
float score;
Stud;
typedef struct node
Stud student;
struct node *next;
Node;
Node *head=NULL;
void read(void);
void inser(long b);
void print();
void find(long b);
void searchname(char *s);
Node * del(long n);
void sort(int flag);
void menu();
void main()
char choose;
int flag=1;
while (flag)
menu(); //调用功能菜单函数,显示菜单项。
printf(" 请选择:");
choose=getchar();
switch(choose)
1
case '1': read(); //调用建立链表的函数;输出链表信息;
print();
printf("\nPress any key Continue ");
//getchar();
getchar();
break;
case '2': //调用按学号查找学生信息的函数;并输出查找结果信息;
long c;
printf("input the number you want to find:");
scanf("%ld",&c);
find(c);
printf("\nPress any key Continue.");
getchar();
break;
case '3':
//调用按姓名查找学生信息的函数;并输出查找结果信息;
char s[20];
printf("input the name you want to find:");
scanf("%s",s);
searchname(s);
printf("\n Press any key Continue.");
getchar();
getchar();
break;
case '4':
//调用根据学号删除某个学生信息的函数;并输出删除后的链表信息;
Node *h;
long n;
printf("input the number you want to delete:");
scanf("%ld",&n);
h=del(n);
if(h==NULL) printf("No find the student \n");
else print();
printf("\n Press any key Continue.");
getchar();
getchar();
break;
case '5':
//调用插入新的学生信息的函数;并输出插入后的链表信息;
long a;
printf("input the number for the new:\n");
scanf("%ld",&a);
inser(a); 2
print();
printf("\n Press any key Continue.");
getchar();
getchar();
break;
case '6':
//调用按分数降序排序输出的函数;并输出排序后的链表信息;
sort(1);
print();
sort(0);
printf("\nPress any key Continue.");
getchar();
getchar();
break;
case '0':
//结束程序运行!
flag=0;
printf("\n *** The End! ***\n");
break;
default: printf("\n Wrong Selection !(选择错误,重选)\n");
getchar();
void menu() //综合作业功能菜单
printf(" \n 学 生 信 息 管 理 系 统\n");
printf(" \n 菜 单\n\n");
printf(" \n 1. 建 立 链 表 并 显 示 \n");
printf(" \n 2. 查 找 某 学 号 的 学 生 信 息 \n");
printf(" \n 3. 查 找 某 姓 名 的 学 生 信 息 \n");
printf(" \n 4. 删 除 某 个 学 号 的 学 生\n");
printf(" \n 5. 插 入 新 的 学 生 信 息 \n");
printf(" \n 6. 按 分 数 降 序 排 序 输 出 \n");
printf(" \n 0. 退 出\n\n");
void read(void)
long a;
printf("input the number:");
scanf("%ld",&a);
while(a>0) 3
inser(a);
printf("input the number:");
scanf("%ld",&a);
void inser(long b)
Node *last,*current,*p;
current=head;
while(current!=NULL&&b>current->student.num)
last=current;
current=current->next;
if(current==NULL||b<current->student.num)
printf("input the name,score:");
p=(Node *)malloc(sizeof(Node));
p->student.num=b;
scanf("%s%f",p->student.name,&p->student.score);
p->next=NULL;
if(current==head)
p->next=head;
head=p;
else
p->next=current;
last->next=p;
else if(b==current->student.num)
printf("error input a different number:");
void print()
Node *p=head;
printf("学号 姓名 成绩:\n");
while(p!=NULL)
printf("%ld %s %f\n",p->student.num,p->student.name,p->student.score);
p=p->next;
4
printf("\n");
void find(long b)
Node *p=head;
while(p!=NULL&&b!=p->student.num)
p=p->next;
if(!p) printf("No found\n");
else
printf("学号 姓名 成绩\n");
printf("%ld %s %f\n",p->student.num,p->student.name,p->student.score);
void searchname(char *s)
Node *p=head;
int flag=0;
printf("学号 姓名 成绩:\n");
while(p!=NULL)
if(strcmp(p->student.name,s)==0)
printf("%ld %s %f\n",p->student.num,p->student.name,p->student.score);
flag=1;
p=p->next;
continue;
else p=p->next;
if(!flag) printf("No find");
Node * del(long n)
Node *p=head,*last;
while(p->student.num!=n)
last=p;
p=p->next;
if(p==NULL) return p;
else if(p==head) head=p->next;
else last->next=p->next; 5
return head;
void sort(int flag)
/*flag==1 按分数排序 else 按学号排序*/
Node *p1,*p2,*k;
float t1;
long t2;
char s[20];
for(p1=head;p1->next;p1=p1->next)
k=p1;
for(p2=p1->next;p2;p2=p2->next)
if(flag==1&&k->student.score<p2->student.score||!flag&&k->student.num>p2->student.num)
k=p2;
if(k!=p1)
t1=p1->student.score;
p1->student.score=k->student.score;
k->student.score=t1;
t2=p1->student.num;
p1->student.num=k->student.num;
k->student.num=t2;
strcpy(s,p1->student.name);
strcpy(p1->student.name,k->student.name);
strcpy(k->student.name,s);
给你看看 参考技术A #include<iostream.h>
#include<string.h>
#include<fstream.h>
class stu
char name[20];
double math,chinese,english,average,sum;
public:
stu()
stu(char n[20],double ma,double chin,double eng)
strcpy(name,n);
math=ma;
chinese=chin;
english=eng;
double getsum()
sum=chinese+english+math;
return sum;
double getaver()
average=getsum()/3;
return average;
friend void main();
;
void main()
cout<<"请选择您需要的操作!"<<endl;
cout<<"操作:"<<endl;
cout<<"(0)数据录入"<<endl;
cout<<"(1)增加人员"<<endl;
cout<<"(2)删除人员"<<endl;
cout<<"(3)修改数据"<<endl;
cout<<"查询:"<<endl;
cout<<"(4)按总成绩查询"<<endl;
cout<<"(5)按姓名查询"<<endl;
cout<<"(6)输出所有学生的数据"<<endl;
cout<<"成绩名词"<<endl;
cout<<"(7)按总分查询排名"<<endl;
cout<<"(8)按语文查询排名"<<endl;
cout<<"(9)按数学查询排名"<<endl;
cout<<"(y)按英语查询排名"<<endl;
cout<<"选择相关操作请输入相对的括号里的阿拉伯数字!"<<endl;
char p;char w;
stu *s[50];
ofstream *file[50];
int i=0;
int j=0;
bool flag2=0;
do
cin>>p;
if((p>='0'&&p<='10'))
flag2=1;
else
cout<<"指令错误!请重新输入:"<<endl;
while(flag2==0);
do
switch(p)
case '0':
char c;
char name[20];double math,chinese,english;
do
cout<<"请输入姓名"<<endl;
cin>>name;
cout<<"请输入数学成绩:"<<endl;
cin>>math;
cout<<"请输入语文成绩:"<<endl;
cin>>chinese;
cout<<"请输入外语成绩:"<<endl;
cin>>english;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl;
j++;
s[i]=new stu(name, math, chinese, english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;
cin>>c;
flag2=0;
do
if(c!='y'&&c!='n')
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
else
flag2=1;
while(flag2==0);
while(c=='y');
break;
case '4':
double t;char c;
do
int flag1=0;
cout<<"请输入你要查询学生的总成绩"<<endl;
cin>>t;
for(int q=0;q<i;q++)
if(s[q]->getsum()==t)
flag1=1;
cout<<"您要查询的学生是:"<<(*s[q]).name<<endl;
if(flag1==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
while(c=='y');
break;
case '5':
char n[20];int j=0;char c;
do
int flag=0;
cout<<"请输入你要查询的学生姓名"<<endl;
cin>>n;
for(int j=0;j<i;j++)
if(strcmp(n,(*s[j]).name)==0)
flag=1;
cout<<"您要查询的学生是:"<<(*s[j]).name<<endl;
cout<<(*s[j]).name<<"的总成绩成绩是"<<(*s[j]).getsum()<<endl<<"平均成绩是:"<<(*s[j]).getaver()<<endl;
if(flag==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
while(c=='y');
break;
case '1':
char name[20];double math,chinese,english;
char c;
do
cout<<"请输入您要增加的学生的姓名:"<<endl;
cin>>name;
cout<<"请输入数学成绩:"<<endl;
cin>>math;
cout<<"请输入语文成绩:"<<endl;
cin>>chinese;
cout<<"请输入外语成绩:"<<endl;
cin>>english;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl;
j++;
s[i]=new stu(name, math, chinese, english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
while(c=='y');
break;
case '2':
char name[20];bool flag3=0;char c;
do
cout<<"请输入您要删除的学生姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
if(strcmp(name,s[h]->name)==0)
flag3=1;
i--;
do
s[h]=s[h+1];
h++;
while(h<=i);
if(flag3==0)
cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";
cout<<"要继续删除吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
while(c=='y');
break;
case '3':
char name[20];double mat,chin,eng;flag2=0;
char c;
do
cout<<"请输入您要修改的学生的姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
if(strcmp(name,s[h]->name)==0)
flag2=1;
cout<<"请输入新的数学成绩:"<<endl;
cin>>mat;
cout<<"请输入新的语文成绩:"<<endl;
cin>>chin;
cout<<"请输入新的外语成绩:"<<endl;
cin>>eng;
s[h]->chinese=chin;
s[h]->math=mat;
s[h]->english=eng;
cout<<"数据修改成功!";
if(flag2==0)
cout<<"您要修改的学生本来就不存在!请检查重新输入!"<<endl;
cout<<"想继续修改吗(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
while(c=='y');
break;
case '6':
cout<<"本系统所有学生数据如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;
for(int k=0;k<i;k++)
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<(*s[k]).getsum()
<<"平均分:"<<" "<<(*s[k]).getaver()<<endl;
break;
case '7':
int t;stu b;
cout<<"本系统所以学生排名如下:"<<endl;
for(int x=0;x<i-1;x++)
t=x;
for(int y=x+1;y<i;y++)
if((s[t]->getsum())<(s[y]->getsum()))
t=y;
if(t!=x)
b=*s[x];
*s[x]=*s[t];
*s[t]=b;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
break;
case '8':
int t;stu b;
cout<<"本系统所以学生语文排名如下:"<<endl;
for(int x=0;x<i-1;x++)
t=x;
for(int y=x+1;y<i;y++)
if((s[t]->chinese)<(s[y]->chinese))
t=y;
if(t!=x)
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
break;
case '9':
int t;stu b;
cout<<"本系统所以学生数学排名如下:"<<endl;
for(int x=0;x<i-1;x++)
t=x;
for(int y=x+1;y<i;y++)
if((s[t]->math)<(s[y]->math))
t=y;
if(t!=x)
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
break;
case 'y':
int t;stu b;
cout<<"本系统所以学生英语排名如下:"<<endl;
for(int x=0;x<i-1;x++)
t=x;
for(int y=x+1;y<i;y++)
if((s[t]->english)<(s[y]->english))
t=y;
if(t!=x)
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
break;
cout<<"您想继续进行其他操作吗?(y/n)"<<endl;
bool flag4=0;
do
cin>>w;
if(w!='y'&&w!='n')
cout<<"指令错误!请重新输入!"<<endl;
else
flag4=1;
while(flag4==0);
if(w=='y')
cout<<"请输入操作代码(0 录入/4 按总分查询/5 按姓名查询/1 增加人员/2 删除人员/3 修改数据/6 显示所有成员数据/7 按总分排名/8 按语文排名/9按数学排名/y按英语排名)"<<endl;
cin>>p;
while(w=='y');
for(int x=0;x<i;x++)
delete s[x];
cout<<"delete all members!"<<endl;
参考技术B 请问步骤是什么?
C语言课程设计
今天给大家分享一下小编当年大一C语言做的课程涉设计(学生成绩以及基本信息系统)有什么疑问和不懂的可以给我留言
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
long num;
char name[12];
char phone[11];
char city[12];
char postal[6];
struct student *next ;
;
long num1,numm;
char name1[12],namee[12],phone1[11],city1[12],cityy[12],postal1[6];
typedef struct student *stu;
FILE *fp;
int n,i=0,w;
char ch;
int code ()
long a;
printf("\\t\\t请输入密码:(你还有2次机会)");
scanf("%d",&a);
if(a==123)
printf("轻敲任意键继续");
getch();
return 1;
else
printf("\\t\\t请重新输入密码:(还有1次机会)");
scanf("%d",&a);
if(a==123)
printf("轻敲回车键继续");
return 1;
else return 0;
int menu()
printf("+++---------请选择:-----------+++\\n");
printf("+++++---------1.录入个人通讯信息:-------+++++\\n");
printf("+++++++---------2.查找个人通讯信息:-------+++++++\\n");
printf("+++++++++---------3.删除个人通讯信息:-------+++++++++\\n");
printf("+++++++++++---------4.更改个人通讯信息:-------+++++++++++\\n");
printf("+++++++++---------5.添加个人通讯信息:-------+++++++++\\n");
printf("+++++++++++---------6.显示功能:----+++++++++++++\\n");
printf("+++++++---------7.将已写的数据存入文件中----------+++++++\\n");
printf("+++++---------8.读出已经存储的文件信息-----------+++++\\n");
printf("+++---------0.退出客户端-------------+++\\n");
scanf("%s",&ch);
return ch;
//第1个功能的实现:
struct student *p()
struct student *head,*p1,*p2;
n=0;
p1=p2=(stu)malloc(sizeof(struct student ));
head=NULL;
system("cls");
printf("以学号为000结束。\\n");
while(1)
printf("请输入学生的基本信息:学号、姓名、电话、城市、邮编\\n");
scanf("%d",&p1->num);
if(p1->num==000)
break;
scanf("%s %s %s %s",p1->name,p1->phone,p1->city,p1->postal);
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(stu)malloc(sizeof(struct student ));
p2->next=NULL;
return (head);
//第2个查找的功能的实现:
void s(stu head);
void s1(stu head)//1、用学号来查找信息。
stu p1;
int j=0;
p1=(stu)malloc(sizeof(struct student ));
printf("请输入要查找学生的学号:\\n");
scanf("%ld",&num1);
p1=head;
while(p1!=NULL)
if(p1->num==num1)
j=1;
printf("学号:%d 姓名:%s 电话:%s 城市:%s 邮编:%s\\n",p1->num,p1->name,p1->phone,p1->city,p1->postal);
break;
p1=p1->next;
if(j==0)
printf("没有找到你要查找学生的信息。\\n");
else
printf("这是你要查找学生的信息:\\n");
system("pause");
s(head);
void s2(stu head)
stu p1;
int j=0;
p1=(stu)malloc(sizeof(struct student));
printf("请输入要查找学生的姓名:\\n");
scanf("%s",name1);
p1=head;
while(p1!=NULL)
if((strcmp(p1->name,name1))==0)
j=1;
printf("学号:%d 姓名:%s 电话:%s 城市:%s 邮编:%s\\n",p1->num,p1->name,p1->phone,p1->city,p1->postal);
p1=p1->next;
if(j==0)
printf("sorry 没有找到你要查找学生的信息。\\n");
else
printf("你看,这是你想要的信息吗?\\n");
system("pause");
s(head);
void s3(stu head)
stu p1;
int j=0;
p1=(stu)malloc(sizeof(struct student ));
printf("请输入要查找学生的城市:\\n");
scanf("%s",city1);
p1=head;
while(p1!=NULL)
if((strcmp(p1->city,city1))==0)
j=1;
printf("学号:%d 姓名:%s 电话:%s 城市:%s 邮编:%s\\n",p1->num,p1->name,p1->phone,p1->city,p1->postal);
p1=p1->next;
if(j==0)
printf("sorry 没有找到你要查找学生的信息\\n");
else
printf("这是你要查找学生的信息吗?\\n");
system("pause");
s(head);
void s(stu head)
system("cls");
printf("********请输入你想查找的方式********\\n");
printf("******** 1.以学号查找 ********\\n");
printf("******** 2.以姓名查找 ********\\n");
printf("******** 3.以城市查找 ********\\n");
printf("******** 4.返回 ********\\n");
scanf("%d",&w);
switch(w)
case 1:s1(head);break;
case 2:s2(head);break;
case 3:s3(head);break;
case 4:menu();break;
default:printf("你的输入有错,请重新输入\\n");system("pause");s(head);
//用学生学号方尺删除:
stu delet(stu head);
void delete1(stu head)
stu p1,p2;
int j=0;
p2=p1=(stu )malloc(sizeof(struct student));
printf("请输入要删除学生的学号:\\n");
scanf("%d",&num1);
p2=p1=head;
if(head->num==num1&&head!=NULL)
head=head->next;
free(p1);
i--;
j=1;
else
p1=head->next;
if(p1!=NULL)
while(p1->num!=num1)
p2=p1;
p1=p1->next;
p2->next=p1->next;
free(p1);
i--;
j=1;
if(j==0)
printf("此通讯信息不存在,删除的失败!\\n");
else
printf("删除成功!\\n");
system("pause");
delet(head);
/*用学生姓名的方尺查找*/
void delete2(stu head)
stu p1,p2;
int j=0;
printf("请输入要删除学生的姓名:\\n");
scanf("%s",name1);
p2=p1=head;
if(head!=NULL&&(strcmp(head->name,name1))==0)
head=head->next;
free(p1);
i--;
j=1;
else
p1=head->next;
if (p1!=NULL)
while(p1!=NULL&&(strcmp(p1->name,name1))!=0)
p2=p1;
p1=p1->next;
p2->next=p1->next;
free(p1);
j=1;
i--;
if(j==0)
printf("此学生不存在,删除的失败!\\n");
else
printf("删除成功!\\n");
system("pause");
delet(head);
stu delet(stu head)
system("cls");
printf("********请输入你想删除的方式********\\n");
printf("******** 1.以学号查找 ********\\n");
printf("******** 2.以姓名查找 ********\\n");
printf("******** 3.返回 ********\\n");
scanf("%d",&w);
switch(w)
case 1:delete1(head);break;
case 2:delete2(head);break;
case 3:menu();return head;
default:printf("你的输入有错,请重新输入\\n");system("pause");delet(head);
/*实现第5个功能,添加信息功能。 */
stu add(stu head);
//1、按学号添加
void add1(stu head)
struct student *p1,*p,*p2;
int j=0;
p1=p2=(stu )malloc(sizeof(struct student ));
p=(stu )malloc(sizeof(struct student ));
printf("请输入你要添加学生的位置:\\n");
printf("如果想放在头,请输入0, 否则请输入要添加前一个学生的学号:\\n");
scanf("%d",&numm);
printf("请输入要添加学生的信息:\\n");
scanf("%d %s %s %s %s",&num1,name1,phone1,city1,postal1);
if(numm==0)
p1=head;
p->num=num1;
strcpy(p->name,name1);
strcpy(p->phone,phone1);
strcpy(p->city,city1);
strcpy(p->postal,postal1);
head=p;
p->next=p1;
i++;
j=1;
else
p1=head;
p2=p1->next;
if(p1!=NULL)
while(p1->num!=numm)
p1=p2;
p2=p1->next;
p->num=num1;
strcpy(p->name,name1);
strcpy(p->phone,phone1);
strcpy(p->city,city1);
strcpy(p->postal,postal1);
p1->next=p;
p->next=p2;
i++;
j=1;
if(j==0)
printf("你要添加的位置不存在,添加失败!\\n");
else
printf("添加成功!\\n");
system("pause");
add(head);
//2、按姓名(适用于按姓名字母排序)
void add2(stu head)
struct student *p1,*p,*p2;
int j=0;
p1=p2=(stu )malloc(sizeof(struct student ));
p=(stu )malloc(sizeof(struct student ));
printf("请输入你要添加学生的位置:\\n");
printf("如果想放在头,请输入h, 否则请输入要添加前一个学生的姓名:\\n");
scanf("%s",namee);
printf("请输入要添加学生的信息:\\n");
scanf("%d%s%s%s%s",&num1,name1,phone1,city1,postal1);
if(namee[0]=='h')
p1=head;
p->num=num1;
strcpy(p->name,name1);
strcpy(p->phone,phone1);
strcpy(p->city,city1);
strcpy(p->postal,postal1);
head=p;
p->next=p1;
i++;
j=1;
else
p1=head;
p2=p1->next;
if(p1!=NULL)
while((strcmp(p1->name,namee))!=0)
p1=p2;
p2=p1->next;
p->num=num1;
strcpy(p->name,name1);
strcpy(p->phone,phone1);
strcpy(p->city,city1);
strcpy(p->postal,postal1);
p1->next=p;
p->next=p2;
i++;
j=1;
if(j==0)
printf("你要添加的位置不存在,添加失败!\\n");
else
printf("添加成功!\\n");
system("pause");
add(head);
//3、按城市
void add3(stu head)
struct student *p1,*p,*p2;
int j=0;
p1=p2=(stu )malloc(sizeof(struct student ));
p=(stu )malloc(sizeof(struct student ));
printf("请输入你要添加学生的位置:\\n");
printf("如果想放在头,请输入h, 否则请输入要添加前一个学生的城市:\\n");
scanf("%s",cityy);
printf("请输入要添加学生的信息:\\n");
scanf("%d%s%s%s%s",&num1,name1,phone1,city1,postal1);
if(cityy[0]=='h')
p1=head;
p->num=num1;
strcpy(p->name,name1);
strcpy(p->phone,phone1);
strcpy(p->city,city1);
strcpy(p->postal,postal1);
head=p;
p->next=p1;
i++;
j=1;
else
p1=head;
p2=p1->next;
if(p1!=NULL)
while((strcmp(p1->city,cityy))!=0)
p1=p2;
p2=p1->next;
p->num=num1;
strcpy(p->name,name1);
strcpy(p->phone,phone1);
strcpy(p->city,city1);
strcpy(p->postal,postal1);
p1->next=p;
p->next=p2;
i++;
j=1;
if(j==0)
printf("你要添加的位置不存在,你的操作失败!\\n");
else
printf("恭喜你,添加成功!\\n");
system("pause");
add(head);
stu add(stu head)
system("cls");
printf("********请输入你想添加的方式********\\n");
printf("******** 1.以学号添加 ********\\n");
printf("******** 2.以姓名添加 ********\\n");
printf("******** 3.以城市添加 ********\\n");
printf("******** 4.返回 ********\\n");
scanf("%d",&w);
switch(w)
case 1:add1(head);break;
case 2:add2(head);break;
case 3:add3(head);break;
case 4:menu();return head;
default:printf("选择有错,请重新选择\\n");system("pause");add(head);
//更改内容:
//学号更改;
//以姓名更改;
stu modify(stu head);
void modify1(stu head)
struct student *p1;
int j=0;
p1=(stu )malloc(sizeof(struct student ));
printf("请输入你要更改学生的学号:\\n");
scanf("%d",&numm);
printf("请输入要更改学生的信息:\\n");
scanf("%d%s%s%s%s",&num1,name1,phone1,city1,postal1);
p1=head;
if(head->num==numm)
head->num=num1;
strcpy(head->name,name1);
strcpy(head->phone,phone1);
strcpy(head->city,city1);
strcpy(head->postal,postal1);
j=1;
else
p1=head->next;
if(p1!=NULL)
while(p1->num!=numm)
p1=p1->next;
p1->num=num1;
strcpy(p1->name,name1);
strcpy(p1->phone,phone1);
strcpy(p1->city,city1);
strcpy(p1->postal,postal1);
j=1;
if(j==0)
printf("没有找到你要更改的学生,更改失败!\\n");
else
printf("更改成功!\\n");
system("pause");
modify(head);
void modify2(stu head)
struct student *p1;
int j=0;
p1=(stu )malloc(sizeof(struct student ));
printf("请输入你要更改学生的姓名:\\n");
scanf("%s",namee);
printf("请输入要更改学生的信息:\\n");
scanf("%d%s%s%s%s",&num1,name1,phone1,city1,postal1);
p1=head;
if((strcmp(head->name,namee))==0)
head->num=num1;
strcpy(head->name,name1);
strcpy(head->phone,phone1);
strcpy(head->city,city1);
strcpy(head->postal,postal1);
j=1;
else
p1=head->next;
if(p1!=NULL)
while((strcmp(p1->name,namee))!=0)
p1=p1->next;
p1->num=num1;
strcpy(p1->name,name1);
strcpy(p1->phone,phone1);
strcpy(p1->city,city1);
strcpy(p1->postal,postal1);
j=1;
if(j==0)
printf("没有找到你要更改的学生,更改失败!\\n");
else
printf("更改成功!\\n");
system("pause");
modify(head);
stu modify(stu head)
system("cls");
printf("********请输入你想更改的方式********\\n");
printf("******** 1.以学号更改 ********\\n");
printf("******** 2.以姓名更改 ********\\n");
printf("******** 3.返回 ********\\n");
scanf("%d",&w);
switch(w)
case 1:modify1(head);break;
case 2:modify2(head);break;
case 3:menu();return head;
default:printf("选择有错,请重新选择\\n");system("pause");modify(head);
void display(stu head)
stu p;
printf("\\n这里有%d个学生的信息:\\n",n+i);
p=head;
while(p!=NULL)
printf("%d %s %s %s %s\\n",p->num,p->name,p->phone,p->city,p->postal);
p=p->next;
void write_file(stu p)//6.保存信息,写入文件
FILE *fp= fopen("王欣欣.txt","wb");//b
system("cls");
while(p)
fwrite(p,sizeof(struct student),1,fp);//把p指向的内存中的东西复制到磁盘里
p = p->next;
fclose(fp);
stu read_file(void)//读出文件
FILE *fp;
stu p1,p2,head;
fp= fopen("王欣欣.txt","rb");
head = p2 = p1=(stu)malloc(sizeof(struct student));
system("cls");
while(fread(p1,sizeof(struct student),1,fp))
printf("%d %s %s %s %s\\n",p1->num,p1->name,p1->phone,p1->city,p1->postal);
p2->next = p1;
p2 = p1;
p1=(stu)malloc(sizeof(struct student));
p2->next=NULL;
fclose(fp);
return head;
int main()
stu head;
head=NULL;
if(code ()==0)
return 0;
system("cls");
printf("**********欢迎进入通讯客户端!**********\\n");
printf("----------------------- 祝你使用愉快!\\n");
system("pause");
while(1)
switch (menu())
case'1':head=p();system("pause");break;
case'2':s(head);break;
case'3':head = delet(head);system("pause");break;
case'4':head = modify(head);system("pause");break;
case'5':head = add(head);system("pause");break;
case'6':display(head);system("pause");break;
case'7':write_file(head);system("pause");break;
case'8':head=read_file();system("pause");break;
case'0':printf("Thanks Goodbay\\n");getch();return 0;
default:printf("选择有错,请重新选择\\n");
以上是关于C语言课程设计:学生学籍管理系统。有谁有代码给我做个参考吗?谢谢了,C语言和C++的都可以。的主要内容,如果未能解决你的问题,请参考以下文章