学生学分管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include
#include
#include
#define LEN sizeof(Node)
#define ConsoleLength 60
typedef struct
{
char num[11]; /*学号*/
char name[10]; /*姓名*/
int Credit;
} elemtype ;
typedef struct node
{
elemtype data;
struct node * next;
} Node,*Nodeptr;
//赋值elem
void CopyElem (elemtype *x,const char* num,const char* name,const int Credit); void CopyElem (Node *p,const elemtype x);
void CopyElem (Node *p,const char* num,const char* name,const int Credit);
void menu();//菜单函数
void to_menu();//返回菜单函数
void PrintTheLink (Nodeptr L);
//传入链表头指针,插入元素,排序方法(1降序,0升序,-1无序)
void InsertElemToLink (Nodeptr L,const elemtype x);
void InsertElemToLink (Nodeptr L,const char* num,const char* name,const int Credit); int DelElem (Nodeptr L,const int aID);
int DelElem (Nodeptr L,const char* num);
int SortTheLink(Nodeptr L,int elemOrder=0);
int ClearTheLink(Nodeptr L);
int SortLink(Nodeptr L);
int CreateLink(Nodeptr L);
void InsertElemToLink(Nodeptr L);
int DeleteLink(Nodeptr L);
void save(Node *L);
Node *load();
void main()
{
int fun;
Nodeptr L;
L = new Node;
menu();//打印目录
L->next = NULL;
L->data.Credit=0;
while (1)
{
printf("请输入功能号[0-7]:",&fun);
scanf("%d",&fun);
switch (fun)
{
case 0: break;
case 1:
CreateLink(L);//传进一个结构体指针的实参
break;
case 2:
PrintTheLink(L);
break;
case 3:
DeleteLink(L);
break;
case 4:
InsertElemToLink(L);
break;
case 5:
SortLink(L);
break;
case 6:save(L);break;
case 7:L=load(); break;
default:
printf("输入错误!");
break;
}
if(fun==0) break;
to_menu();
}
}
void menu()/*显示主菜单*/
{
system("cls");//清屏
printf("\n");
printf("\t\t★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆★\n");
printf("\t\t☆☆\n");
printf("\t\t☆★☆学分管理系统☆★☆\n");
printf("\t\t☆☆\n");
printf("\t\t☆[0] 退出[1] 创建链表☆\n");
printf("\t\t☆☆\n");
printf("\t\t☆[2] 输出学生记录[3] 删除学生记录☆\n");
printf("\t\t☆☆\n");
printf("\t\t☆[4]插入学生记录[5] 排序☆\n");
printf("\t\t☆☆\n");
printf("\t\t☆[6]保存到文件[7]从文件读取☆\n");
printf("\t\t☆☆\n");
printf("\t\t★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆★\n\n"); }
void to_menu()// 等待用户按回车后回到主菜单
{
char c1,c2;
printf("\n\n\n按回车键返回主菜单...");
scanf("%c%c",&c1,&c2);//第一个字符吸收上次的确认回车键
menu();
}
//显示学生信息
void PrintTheLink (Nodeptr L)
{
//传入的L为储存学生信息的头结点
Nodeptr p;
int i = 1;
int j,numlen,namelen;
p = L->next;//P指向下一个结点
for(j=0;j { printf("*"); } printf("\n"); printf("序号%*c学号%*c姓名%*c成绩\n",ConsoleLength/4-4,' ', ConsoleLength/4-4,' ',ConsoleLength/4-4,' ');//输出提示信息