69,373
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
#define LEN sizeof(Student)
#include <time.h>
typedef struct SIS { //结构体的声明
long StudentID; //学号
char Name[20]; //姓名
char Sex[10];//性别
int Age;//年龄
char TOE[30] ;//Time of Enrollment入学日期
float GPA;//(加权平均)
char PhoneNo[100]; //电话号码
char MailingAddress[100];//邮箱
struct SIS *next;//指向下一个结构体的指针
} Student;
Student *head;
/////////////////////声明函数///////////////////////
void wellcome();//欢迎界面
void start();//开始界面
int menu();//菜单
int input();//输入/插入
int del();//删除
int search ();//查找
int ALL();//显示全部
///////////////////////////////////////////////////
void wellcome() { //欢迎界面
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf("*************************************************\n");
printf("*\t\t学生信息管理系统\t\t*\n");
printf("*\t\t\t\t\t\t*\n");
printf("*\t\t\tLAB 8\t\t\t*\n");
printf("*\t\t\t\t\t\t*\n");
printf("*\t 莱茵出品\t\t *\n");
printf("*\t\t\t\t\t\t*\n");
printf("*\t\t\t\t2.33.ver\t*\n");
printf("*\t\t\t\t\t\t*\n");
printf("*\t\t\t\t\t\t*\n");
printf("*************************************************\n");
printf("%s", asctime (timeinfo));
printf("Please Press Enter to continue……");
}
void start() { //开始界面
int a=0;
int b=0;
int A=15080121;
getchar();
system("cls");
printf("\n\n\n");
printf("\t\t学生信息管理系统\n\n\n");
printf("\t\t\t2.33.Ver\n\n\n");
getchar();
system("cls");
printf("\t\t请输入用户名和密码,按下Enter继续\n\n\n");
printf("\tAdmin:");
scanf("%d",&a);
printf("\n");
printf("\tPassword:");
scanf("%d",&b);
if(a==A&&b==A) {
getchar();
system("cls");
} else {
printf("\t\t\t您没有足够的权限!!!!!\nPlease Press Enter to EXIT……");
getchar();
exit(0);
}
}
int menu() {//菜单
int shuru=0;
printf("\n\n\n");
printf("\t\t (1)Create a student list\n");
printf("\t\t (2)Insert a student\n");//(to the sorted array or the sorted linked list )
printf("\t\t (3)Delete a student\n");
printf("\t\t (4)Search a student\n");
printf("\t\t (5)Display all students\n");
printf("\t\t (6)exit\n");
printf("\t\t请选择功能:");
scanf("%d",&shuru);
return shuru;
}
int input() {//输入、插入
Student *p1,*p2;
Student *student;
char a = 'y';
system("cls");
student = (Student*) malloc (LEN);
printf("\t请按照要求输入\n");
while(a=='y'||a=='Y') {
p2=p1=head;
printf("\tStudentID:");
scanf("%ld",&student->StudentID);
printf("\t");
printf("Name:");
scanf("%s",student->Name);
printf("\t");
printf("Sex:");
scanf("%s",&student->Sex);
printf("\t");
printf("Age:");
scanf("%d",&student->Age);
printf("\t");
printf("TOE:");
scanf("%s",&student->TOE);
printf("\t");
printf("GPA:");
scanf("%f",&student->GPA);
printf("\t");
printf("PhoneNo:");
scanf("%s",&student->PhoneNo);
printf("\t");
printf("MailingAddress:");
scanf("%s",&student->MailingAddress);
printf("\n\n\n\n");
student->next=NULL;
fflush(stdin);
if(head==NULL)head=student;
else {
while(p1->StudentID<student->StudentID&&p1->next!=NULL) {
p2=p1;
p1=p1->next;
}
if(p1->StudentID>student->StudentID)
if(p1==head) {
student->next=head;
head=student;
} else {
p2->next=student;
student->next=p1;
}
else p1->next=student;
}
student = (Student *) malloc (LEN);
printf("是否继续添加,输入'y'或'Y'继续\n");
a=getchar();
fflush(stdin);
}
printf("\t\t\t录入成功!\n");
free(student);
return 0;
}
int del() { //删除学生信息
Student *p1,*p2;
int tage = 0;
long StudentID;
system("cls");
p1=head;
printf("\n\t\t请输入学号:");
scanf("%d",&StudentID);
if(head==NULL) {
printf("不存在学生信息!\n");
return 0;
}
while(p1!=NULL) {
if(p1->StudentID==StudentID) {
tage=1;
if(p1==head)head=head->next;
else p2->next=p1->next;
free(p1);
break;
}
p2=p1;
p1=p1->next;
}
if(tage==0) printf("要删除的学生信息不存在!\n");
tage=0;
printf("\t\t\t成功删除息\n");
fflush(stdin);
// system("cls");
return 0;
}
int search () { //查询
Student *p1;
Student *student;
int tage = 0;
long StudentID;
system("cls");
printf("请输入要查询的学生学号:");
scanf("%d",&StudentID);
p1=head;
if(head==NULL) {
printf("无学生信息!\n");
return 0;
} else
while(p1!=NULL)
if(p1->StudentID==StudentID) {
tage=1;
printf("你查找的学生信息如下:\n");
printf("\t\tStudentID:%ld\n",p1->StudentID);
printf("\t\tName:%s\n",p1->Name);
printf("\t\tSex:%s\n",p1->Sex);
printf("\t\tAge:%d\n",p1->Age);
printf("\t\tTOE:%s\n",p1->TOE);
printf("\t\tGPA:%2f\n",p1->GPA);
printf("\t\tPhonrNo:%s\n",p1->PhoneNo);
printf("\t\tMailingAddress:%s\n\n\n",&p1->MailingAddress);
break;
}
else p1=p1->next;
if(tage==0)printf("\t\t\t无该学生信息!\n");
tage=0;
fflush(stdin);
return 0;
}
int ALL() { //显示全部信息
Student *p1;
p1 = head;
system("cls");
if(head==NULL) {
printf("无学生信息!\n");
return 0;
}
while(p1!=NULL) {
printf("\t\tStudentID:%ld\n",p1->StudentID);
printf("\t\tName:%s\n",p1->Name);
printf("\t\tSex:%s\n",p1->Sex);
printf("\t\tAge:%d\n",p1->Age);
printf("\t\tTOE:%s\n",p1->TOE);
printf("\t\tGPA:%2f\n",p1->GPA);
printf("\t\tPhonrNo:%s\n",p1->PhoneNo);
printf("\t\tMailingAddress:%s\n\n",p1->MailingAddress);
p1=p1->next;
}
return 0;
}
main() {
int choose;
int x=1;
head=NULL;
wellcome();
start();
while(x) {
choose=menu();
switch(choose) {
case 1: {
input();
system("pause");
printf("Please Press Enter to Return……");
getchar();
system("cls");
break;
}
case 2: {
input();
system("pause");
printf("Please Press Enter to Return……");
getchar();
system("cls");
break;
}
case 3: {
del();
system("pause");
printf("Please Press Enter to Return……");
getchar();
system("cls");
break;
}
case 4: {
search();
system("pause");
printf("Please Press Enter to Return……");
getchar();
system("cls");
break;
}
case 5: {
ALL();
system("pause");
printf("Please Press Enter to Return……");
getchar();
system("cls");
break;
}
case 6: {
exit(1);
}
default: {
system("cls");
printf("\n\n\n\t\t\t无此功能\n\n\n\n");
break;
}
}
}
}
void start() { //开始界面
int a=0;
int b=0;
int A=15080121;
getchar();
system("cls");
printf("\n\n\n");
printf("\t\t学生信息管理系统\n\n\n");
printf("\t\t\t2.33.Ver\n\n\n");
getchar();
system("cls");
/* printf("\t\t请输入用户名和密码,按下Enter继续\n\n\n");
printf("\tAdmin:");
scanf("%d",&a);
printf("\n");
printf("\tPassword:");
scanf("%d",&b);
if(a==A&&b==A) {
getchar();
system("cls");
} else {
printf("\t\t\t您没有足够的权限!!!!!\nPlease Press Enter to EXIT……");
getchar();
exit(0);
}*/
}
int menu() {//菜单
int shuru=0;
printf("\n\n\n");
printf("\t\t (1)Create a student list\n");
printf("\t\t (2)Insert a student\n");//(to the sorted array or the sorted linked list )
printf("\t\t (3)Delete a student\n");
printf("\t\t (4)Search a student\n");
printf("\t\t (5)Display all students\n");
printf("\t\t (6)exit\n");
printf("\t\t请选择功能:");
scanf("%d",&shuru);
return shuru;
}
SIS* input() {//输入、插入
Student *p1,*p2;
Student *student;
Student *head=NULL;
char a = 'y';
system("cls");
student = (Student*) malloc (LEN);
printf("\t请按照要求输入\n");
while(a=='y'||a=='Y') {
p2=p1=head;
printf("\tStudentID:");
scanf("%ld",&student->StudentID);
printf("\t");
printf("Name:");
scanf("%s",student->Name);
printf("\t");
printf("Sex:");
scanf("%s",&student->Sex);
printf("\t");
printf("Age:");
scanf("%d",&student->Age);
printf("\t");
printf("TOE:");
scanf("%s",&student->TOE);
printf("\t");
printf("GPA:");
scanf("%f",&student->GPA);
printf("\t");
printf("PhoneNo:");
scanf("%s",&student->PhoneNo);
printf("\t");
printf("MailingAddress:");
scanf("%s",&student->MailingAddress);
printf("\n\n\n\n");
student->next=NULL;
fflush(stdin);
if(head==NULL)head=student;
else {
while(p1->StudentID<student->StudentID&&p1->next!=NULL) {
p2=p1;
p1=p1->next;
}
if(p1->StudentID>student->StudentID)
if(p1==head) {
student->next=head;
head=student;
} else {
p2->next=student;
student->next=p1;
}
else p1->next=student;
}
student = (Student *) malloc (LEN);
printf("是否继续添加,输入'y'或'Y'继续\n");
a=getchar();
fflush(stdin);
}
printf("\t\t\t录入成功!\n");
free(student);
return (head);
}
SIS* del(Student *head) { //删除学生信息
Student *p1,*p2;
int tage = 0;
long StudentID;
system("cls");
p1=head;
printf("\n\t\t请输入学号:");
scanf("%d",&StudentID);
if(head==NULL) {
printf("不存在学生信息!\n");
return 0;
}
while(p1!=NULL) {
if(p1->StudentID==StudentID) {
tage=1;
if(p1==head)head=head->next;
else p2->next=p1->next;
free(p1);
break;
}
p2=p1;
p1=p1->next;
}
if(tage==0) printf("要删除的学生信息不存在!\n");
tage=0;
printf("\t\t\t成功删除息\n");
fflush(stdin);
// system("cls");
return (head);
}
int search (Student *head) { //查询
Student *p1;
Student *student;
int tage = 0;
long StudentID;
system("cls");
printf("请输入要查询的学生学号:");
scanf("%d",&StudentID);
p1=head;
if(head==NULL) {
printf("无学生信息!\n");
return 0;
} else
while(p1!=NULL)
if(p1->StudentID==StudentID) {
tage=1;
printf("你查找的学生信息如下:\n");
printf("\t\tStudentID:%ld\n",p1->StudentID);
printf("\t\tName:%s\n",p1->Name);
printf("\t\tSex:%s\n",p1->Sex);
printf("\t\tAge:%d\n",p1->Age);
printf("\t\tTOE:%s\n",p1->TOE);
printf("\t\tGPA:%2f\n",p1->GPA);
printf("\t\tPhonrNo:%s\n",p1->PhoneNo);
printf("\t\tMailingAddress:%s\n\n\n",&p1->MailingAddress);
break;
}
else p1=p1->next;
if(tage==0)printf("\t\t\t无该学生信息!\n");
tage=0;
fflush(stdin);
return 0;
}
int ALL(Student *head) { //显示全部信息
Student *p1;
p1 = head;
system("cls");
if(head==NULL) {
printf("无学生信息!\n");
return 0;
}
while(p1!=NULL) {
printf("\t\tStudentID:%ld\n",p1->StudentID);
printf("\t\tName:%s\n",p1->Name);
printf("\t\tSex:%s\n",p1->Sex);
printf("\t\tAge:%d\n",p1->Age);
printf("\t\tTOE:%s\n",p1->TOE);
printf("\t\tGPA:%2f\n",p1->GPA);
printf("\t\tPhonrNo:%s\n",p1->PhoneNo);
printf("\t\tMailingAddress:%s\n\n",p1->MailingAddress);
p1=p1->next;
}
return 0;
}
main() {
int choose;
int x=1;
Student *head=NULL;
wellcome();
start();
while(x) {
choose=menu();
switch(choose) {
case 1: {
input();
system("pause");
printf("Please Press Enter to Return……");
getchar();
system("cls");
break;
}
case 2: {
input();
system("pause");
printf("Please Press Enter to Return……");
getchar();
system("cls");
break;
}
case 3: {
del(head);
system("pause");
printf("Please Press Enter to Return……");
getchar();
system("cls");
break;
}
case 4: {
search(head);
system("pause");
printf("Please Press Enter to Return……");
getchar();
system("cls");
break;
}
case 5: {
ALL(head);
system("pause");
printf("Please Press Enter to Return……");
getchar();
system("cls");
break;
}
case 6: {
exit(1);
}
default: {
system("cls");
printf("\n\n\n\t\t\t无此功能\n\n\n\n");
break;
}
}
}
}
这样吗?好像传递不出去
[/quote]
如果你要在函数中修改这个指针,那么你应该传指针的指针进去,否则你传入的参数是复制到函数内部的,你在函数内部修改的都是对那个复制品的修改void start() { //开始界面
int a=0;
int b=0;
int A=15080121;
getchar();
system("cls");
printf("\n\n\n");
printf("\t\t学生信息管理系统\n\n\n");
printf("\t\t\t2.33.Ver\n\n\n");
getchar();
system("cls");
/* printf("\t\t请输入用户名和密码,按下Enter继续\n\n\n");
printf("\tAdmin:");
scanf("%d",&a);
printf("\n");
printf("\tPassword:");
scanf("%d",&b);
if(a==A&&b==A) {
getchar();
system("cls");
} else {
printf("\t\t\t您没有足够的权限!!!!!\nPlease Press Enter to EXIT……");
getchar();
exit(0);
}*/
}
int menu() {//菜单
int shuru=0;
printf("\n\n\n");
printf("\t\t (1)Create a student list\n");
printf("\t\t (2)Insert a student\n");//(to the sorted array or the sorted linked list )
printf("\t\t (3)Delete a student\n");
printf("\t\t (4)Search a student\n");
printf("\t\t (5)Display all students\n");
printf("\t\t (6)exit\n");
printf("\t\t请选择功能:");
scanf("%d",&shuru);
return shuru;
}
SIS* input() {//输入、插入
Student *p1,*p2;
Student *student;
Student *head=NULL;
char a = 'y';
system("cls");
student = (Student*) malloc (LEN);
printf("\t请按照要求输入\n");
while(a=='y'||a=='Y') {
p2=p1=head;
printf("\tStudentID:");
scanf("%ld",&student->StudentID);
printf("\t");
printf("Name:");
scanf("%s",student->Name);
printf("\t");
printf("Sex:");
scanf("%s",&student->Sex);
printf("\t");
printf("Age:");
scanf("%d",&student->Age);
printf("\t");
printf("TOE:");
scanf("%s",&student->TOE);
printf("\t");
printf("GPA:");
scanf("%f",&student->GPA);
printf("\t");
printf("PhoneNo:");
scanf("%s",&student->PhoneNo);
printf("\t");
printf("MailingAddress:");
scanf("%s",&student->MailingAddress);
printf("\n\n\n\n");
student->next=NULL;
fflush(stdin);
if(head==NULL)head=student;
else {
while(p1->StudentID<student->StudentID&&p1->next!=NULL) {
p2=p1;
p1=p1->next;
}
if(p1->StudentID>student->StudentID)
if(p1==head) {
student->next=head;
head=student;
} else {
p2->next=student;
student->next=p1;
}
else p1->next=student;
}
student = (Student *) malloc (LEN);
printf("是否继续添加,输入'y'或'Y'继续\n");
a=getchar();
fflush(stdin);
}
printf("\t\t\t录入成功!\n");
free(student);
return (head);
}
SIS* del(Student *head) { //删除学生信息
Student *p1,*p2;
int tage = 0;
long StudentID;
system("cls");
p1=head;
printf("\n\t\t请输入学号:");
scanf("%d",&StudentID);
if(head==NULL) {
printf("不存在学生信息!\n");
return 0;
}
while(p1!=NULL) {
if(p1->StudentID==StudentID) {
tage=1;
if(p1==head)head=head->next;
else p2->next=p1->next;
free(p1);
break;
}
p2=p1;
p1=p1->next;
}
if(tage==0) printf("要删除的学生信息不存在!\n");
tage=0;
printf("\t\t\t成功删除息\n");
fflush(stdin);
// system("cls");
return (head);
}
int search (Student *head) { //查询
Student *p1;
Student *student;
int tage = 0;
long StudentID;
system("cls");
printf("请输入要查询的学生学号:");
scanf("%d",&StudentID);
p1=head;
if(head==NULL) {
printf("无学生信息!\n");
return 0;
} else
while(p1!=NULL)
if(p1->StudentID==StudentID) {
tage=1;
printf("你查找的学生信息如下:\n");
printf("\t\tStudentID:%ld\n",p1->StudentID);
printf("\t\tName:%s\n",p1->Name);
printf("\t\tSex:%s\n",p1->Sex);
printf("\t\tAge:%d\n",p1->Age);
printf("\t\tTOE:%s\n",p1->TOE);
printf("\t\tGPA:%2f\n",p1->GPA);
printf("\t\tPhonrNo:%s\n",p1->PhoneNo);
printf("\t\tMailingAddress:%s\n\n\n",&p1->MailingAddress);
break;
}
else p1=p1->next;
if(tage==0)printf("\t\t\t无该学生信息!\n");
tage=0;
fflush(stdin);
return 0;
}
int ALL(Student *head) { //显示全部信息
Student *p1;
p1 = head;
system("cls");
if(head==NULL) {
printf("无学生信息!\n");
return 0;
}
while(p1!=NULL) {
printf("\t\tStudentID:%ld\n",p1->StudentID);
printf("\t\tName:%s\n",p1->Name);
printf("\t\tSex:%s\n",p1->Sex);
printf("\t\tAge:%d\n",p1->Age);
printf("\t\tTOE:%s\n",p1->TOE);
printf("\t\tGPA:%2f\n",p1->GPA);
printf("\t\tPhonrNo:%s\n",p1->PhoneNo);
printf("\t\tMailingAddress:%s\n\n",p1->MailingAddress);
p1=p1->next;
}
return 0;
}
main() {
int choose;
int x=1;
Student *head=NULL;
wellcome();
start();
while(x) {
choose=menu();
switch(choose) {
case 1: {
input();
system("pause");
printf("Please Press Enter to Return……");
getchar();
system("cls");
break;
}
case 2: {
input();
system("pause");
printf("Please Press Enter to Return……");
getchar();
system("cls");
break;
}
case 3: {
del(head);
system("pause");
printf("Please Press Enter to Return……");
getchar();
system("cls");
break;
}
case 4: {
search(head);
system("pause");
printf("Please Press Enter to Return……");
getchar();
system("cls");
break;
}
case 5: {
ALL(head);
system("pause");
printf("Please Press Enter to Return……");
getchar();
system("cls");
break;
}
case 6: {
exit(1);
}
default: {
system("cls");
printf("\n\n\n\t\t\t无此功能\n\n\n\n");
break;
}
}
}
}
这样吗?好像传递不出去