帮我设计个C语言课程设计 谢谢
编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。具体功能:(1)创建信息链表并以磁盘文件保存;
(2)读取磁盘文件并显示输出所有学生的籍贯信息;
(3)按学号或姓名查询其籍贯;
(4)按籍贯查询并输出该籍贯的所有学生;
(5)能添加、删除和修改学生的籍贯信息;
答案:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define LEN sizeof(STU)
typedef struct stu
{
char num[30];
char name[30];
char jiguan[100]; //籍贯
struct stu *next;
}STU;
/*============================
function:主菜单
return:选项
parameter:NULL
=============================*/
char mainMenu()
{
char sele[30];
system("cls");
printf("\n\n********************Main menu*******************\n\n");
printf("1. Add a new record.\n");
printf("2. Look through all records.\n");
printf("3. Search record\n");
printf("4. Delete record\n");
printf("5. Modify record\n");
printf("6. Help\n");
printf("0. Exit. \n");
printf("*************************************************\n\n");
printf("Please select:");
gets(sele);
puts("");
if(strlen(sele)!=1 ||sele[0]<'0'&&sele[0]>'6')
{
printf("\n\nError! please select [0-6]\n");
system("PAUSE");
return -1;
}
else
return sele[0];
}
/*=================================
function:提取文件数据并生成链表
return:返回链表头指针
parameter:NULL
===================================*/
STU *getRecordfromFile()
{
STU *head = NULL;
STU *p1 = NULL;
STU *p2 = NULL;
FILE *fp = NULL;
char ch;
fp = fopen("addressbook.txt","r");
if(fp == NULL)//文件不存在说明没有输入任何记录!
return NULL;
ch = fgetc(fp);
if(ch == EOF)//文件存在但没有记录说明没有任何记录!
return NULL;
else
rewind(fp);//否则重新指向文件头
head = p1 = (STU *)malloc(LEN);
while(!feof(fp))
{
if(fscanf(fp,"%s%s%s",p1->num,p1->name,p1->jiguan)!=EOF)//这里千万要注意!!! 增加了籍贯
{//最后读取回车不能输出!
p2 = p1;
p1 = (STU *)malloc(LEN);
p2->next = p1;
}
}
p2->next = NULL;
free(p1);
fclose(fp);
return head;
}//简单学籍管理程序
#include <stdio.h>
#include <math.h>
#include <string.h>
//学生姓名、成绩都采用数组存放。学号为数组下标
//定义学生姓名长度为8以下,学生数不超过250
char name[250][8];
float score[20][250];
/////////////////////////////////////////////////////////////////////
//程序入口,接收所有用户的指令
main()
{
int i,command;
//程序采用指令式,设指令不超过255个字节
//姓名第一个字节为"&"刚表示该记录已删
for(i=1;i<=250;i++)
name[i][0]='&';//初始化所有记录
printf("简单学籍管理程序 Ver 1.0 CopyRight 雪原\n");
start:;
{
printf("\n请输入指令,?取得帮助:==>");
command=getch();
switch (command)
{
case 63:{printf("帮助\n");help();}break;//?帮助
case 97:{printf("增加记录\n");add();}break;//a增加记录
case 100:{printf("删除记录\n");dele();}break;//d删除记录
case 102:{printf("查找记录\n");search();}break;//f查找记录
case 108:{printf("读盘\n");loadfile();}break;//l读盘
case 112:{printf("列出记录\n");list();}break;//p列出记录
case 27:{printf("退出\n");quit();}break;//q退出
case 115:{printf("存盘\n");savefile();}break;//s存盘
default:printf("错误的命令!\n\n");//报错
}
}
goto start;
}
////////////////////////////////////////////////////////////////////
int help()//帮助模块
{
printf("/---------------程序使用说明---------------\\\n");
printf("|------------------------------------------|\n");
printf("|指令| 功能 | 说明 |\n");
printf("| ? | 取得帮助 |显示本帮助信息 |\n");
printf("| a | 添加记录 |向表中添加一条或多条记录 |\n");
printf("| d | 删除记录 |删除表中某条或某段记录 |\n");
printf("| f | 查找记录 |按学号或姓名查找表中的记录|\n");
printf("| p | 显示记录 |显示表中全部记录 |\n");
printf("| l | 读取文件 |读入磁盘文件 |\n");
printf("| s | 存为文件 |将当前工作保存为文件 |\n");
printf("|Esc | 退出程序 |退出本系统 |\n");
printf("\\------------------------------------------/\n");
return(0);
}