数据结构课程设计源代码设计题目:学生宿舍管理系统院系:计算机学院班级:软件1501 组别:六组长:周佳理组员: 韩壮壮陈义安起止日期: 2016年12月20日~2016年12月24日指导教师:韩丽娜源代码:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>void AppendNode(long studentID, char studentName[15], char roomNumber[4], char bedNumber[4]);//向链表中添加数据void DisplayNode(struct link *head);//打印链表中数据void Display(struct link *head);//表头格式控制void DeleteMemory(struct link *head);//删除链表所占用的内存void Save();//保存数据void Open();//打开数据void FindID();//按学号查找学生void FindName();//按姓名查找学生void InsertNodeNumber(long studentID, char studentName[15], char roomNumber[4], char bedNumber[4]);//按学号从小到大排序void NumberSorting();//排序void Menu();//菜单控制模块功能代码://主函数int main(){long studentID;char studentName[15];char roomNumber[4];char bedNumber[4];//定义要输入学生信息的变量;char c;int menu;//保存要进行的选项;while (1) {system("pause");Menu();printf("请输入要进行的操作:");scanf("%d", &menu);switch (menu) {case 0:exit(0); break;case 1:printf("请输入Y或y来添加数据\n");scanf(" %c", &c);while (c == 'y' || c == 'Y') {printf("请输入学生学号:");scanf("%lld", &studentID);printf("请输入学生姓名:");scanf("%s", &studentName);printf("请输入房间号:");scanf("%s", &roomNumber);printf("请输入床位号:");scanf("%s", &bedNumber);AppendNode(studentID, studentName, roomNumber, bedNumber);printf("请输入Y或y来添加数据\n");scanf(" %c", &c);}Display(head); break;case 2:FindID(); break;case 3:FindName(); break;case 4:Display(head);//显示信息break;case 5:NumberSorting();Display(head1);//排序后的学生信息head1 = NULL; break;case 6:Save(); break;case 7:Open(); break;default:printf("输入有误!请重新输入"); break;}}DeleteMemory(head);DeleteMemory(head1);system("pause");return 0;}//菜单void Menu() {system("cls");//清屏操作;printf("\n\n\n\n\n");printf("\t\t|.......学生宿舍管理系统..............|\n");printf("\t\t|\t 0.退出 |\n");printf("\t\t|\t 1.添加学生住宿信息 |\n");printf("\t\t|\t 2.查找学生(按学号)信息 |\n");printf("\t\t|\t 3.查找学生(按姓名)信息 |\n");printf("\t\t|\t 4.显示学生信息 |\n");printf("\t\t|\t 5.按学号排序 |\n");printf("\t\t|\t 6.保存信息 |\n");printf("\t\t|\t 7.打开信息 |\n");printf("\t\t|.......学生宿舍管理系统..............|\n");}//表头格式控制void Display(struct link *head) {printf("-----------------------------------------------------------\n");printf(" 学号姓名宿舍号床号 \n");printf("-----------------------------------------------------------\n");DisplayNode(head);}数据模块功能代码://定义结构体typedef struct student {long studentID; //学号char studentName[15];//姓名char roomNumber[4];//房间号char bedNumber[4];//床号}STU;//初始化链表struct link {STU student;struct link *next;};struct link *head = NULL;//保存输入的学生信息数据struct link *head1 = NULL;//保存排序后的学生信息数据//添加数据void AppendNode(long studentID, char studentName[15], char roomNumber[4], char bedNumber[4]) {struct link *p = NULL, *pr = head;p = (struct link *) malloc(sizeof(struct link));if (p == NULL) {printf("申请内存失败"); return;}if (head == NULL) {head = p;}else {while (pr->next != NULL) {pr = pr->next;}pr->next = p;}p->student.studentID = studentID;strcpy(p->student.studentName, studentName);strcpy(p->student.roomNumber, roomNumber);strcpy(p->student.bedNumber,bedNumber);p->next = NULL; return;}//打印数据void DisplayNode(struct link *head) {struct link *p = head;if (p == NULL) {return;}printf("%lld%15s%13s%13s",p->student.studentID,p->student.studentName,p->stu dent.roomNumber, p->student.bedNumber);printf("\n"); p=p->next; DisplayNode(p);}//保存链表中的数据void Save() {FILE *fp;struct link *p = head;fp = fopen("demo.txt", "w");if (fp== NULL) {printf("打开文件失败"); return;}while (p != NULL) {fprintf(fp,"%20lld%15s%5s%4s", p->student.studentID, p->student.studentName, p->student.roomNumber,p->student.bedNumber);p = p->next;}fclose(fp); return;}//将文件中获得的数据写入到链表中void Open() {fflush(stdin);fflush(stdout);long studentID;char studentName[15];char roomNumber[4];char bedNumber[4];FILE *fp; char c;fp = fopen("demo.txt", "a+");if (fp== NULL) {printf("文件打开失败"); return;}while ((c = fgetc(fp))!=EOF) {fscanf(fp, "%20lld", &studentID);fscanf(fp, "%15s", studentName);fscanf(fp, "%5s", roomNumber);fscanf(fp,"%4s",bedNumber);AppendNode(studentID, studentName, roomNumber, bedNumber);}fclose(fp);}功能模块功能代码://排序函数void NumberSorting() {struct link *p = head;struct link *p1 = head1;int sum = 0;if(p == NULL) {printf("没有数据,无法排序"); return;}while (p!=NULL) {InsertNodeNumber(p->student.studentID,p->student.studentName,p->student.roo mNumber, p->student.bedNumber);p = p->next;}}//按学号的从小到大排序void InsertNodeNumber(long studentID, char studentName[15], char roomNumber[4], char bedNumber[4]) {struct link *pr = head1, *p = head1, *temp = NULL;p = (struct link *)malloc(sizeof(struct link));if (p == NULL) {printf("内存申请失败"); return;}p->next = NULL;p->student.studentID = studentID;strcpy(p->student.studentName, studentName);strcpy(p->student.roomNumber, roomNumber);strcpy(p->student.bedNumber,bedNumber);if (head1 == NULL) {head1 = p;}else {while (pr->student.studentID < studentID&&pr->next != NULL) {temp = pr; pr = pr->next;}if (pr->student.studentID >= studentID) {if (pr == head1) {p->next = head1; head1 = p;}else {pr = temp; p->next = pr->next; pr->next = p;}}else {pr->next = p;}}}//删除链表所占用的内存void DeleteMemory(struct link *head) {struct link *p = head, *pr = NULL;while (p != NULL) {pr = p; p = p->next; free(pr);}}//按学号查找学生void FindID() {struct link *p = head;long studentID=0;if (head == NULL) {printf("没有数据查找"); return;}printf("请输入你要查找的学生的学号:");scanf("%lld", &studentID);while (studentID != p->student.studentID&&p->next != NULL) {p = p->next;}if (p->student.studentID == studentID) {printf("-----------------------------------------------------------\n");printf(" 学号姓名宿舍号床号 \n"); printf("-----------------------------------------------------------\n");printf("%lld%15s%13s%13s", p->student.studentID, p->student.studentName, p->student.roomNumber, p->student.bedNumber);;}else {printf("没有你要查找的数据");} return;}//按姓名查找学生void FindName() {struct link *p = head;char studentName[15] = "";if (head == NULL) {printf("没有数据查找"); return;}printf("请输入你要查找的学生的姓名:");scanf("%s", studentName);while (0!=strcmp(studentName,p->student.studentName)&&p->next != NULL) { p = p->next;}if (0==strcmp(studentName,p->student.studentName)) {printf("-----------------------------------------------------------\n");printf(" 学号姓名宿舍号床号 \n");printf("-----------------------------------------------------------\n");printf("%lld%15s%13s%13s",p->student.studentID,p->student.studentName,p->studen t.roomNumber, p->student.bedNumber);}else {printf("没有你要查找的数据");} return;}Welcome To Download !!!欢迎您的下载,资料仅供参考!。