赞
踩
如果想看完整版的实验报告,我上传了资源,下面内容只是实验报告的精华
需求描述
系统角色:学生、教师、系统管理员。其功能分别描述如下:
一、学生:普通用户,能够完成以下功能:
1)录入个人信息,包括:
(1)姓名;
(2)年龄;
(3)性别;
请大家根据学校教学管理系统内容添加
2)信息查询
根据自己的学号查询自己的相关信息,包括:
(1)姓名;
(2)年龄;
(3)性别;
(4)所选课程名;
请大家根据学校教学管理系统内容添加。
3)信息修改
能够修改部分个人信息,包括:姓名、年龄、性别。
4)学生选课
学生根据时间,添加选修课程相关信息,包括:
(1)所选课程名;
(2)学分;
(3)上课时间;
(4)上课地点;
(5)授课教师
请大家根据学校教学管理系统内容添加。
二、教师:普通用户,能够完成以下操作:
1)课程信息录入
2)课程信息修改
3)学生选修课程信息查询
4)学生信息打印…
三、系统管理员
能够添加、删除和修改系统用户,设置用户权限。包括
1)添加新用户
2)删除用户
概要设计
一.通过自定义void函数完成:
学生使用功能流程
主界面:
1)资料浏览
2)资料修改
3)选课查询
4)退出
教师使用流程描述:
主界面:
1)课程录入
2)课程修改
3)课程打印
4)课表查询
5)退出”
系统管理员使用流程
主界面:
1)用户资料打印
2)添加用户
3)删除用户
4)修改用户权限
5)退出
二.通过使用指针进行传参 printUserInfo(char* username) ,打印用户信息。
void printUserInfo(char* username)
{
if (strcmp(username, "admin") == 0)
{
printf("用户名:%s,权限:管理员\n", username);
}
else if (strcmp(username, "guest") == 0)
{
printf("用户名:%s,权限:访客\n", username);
}
else
{
printf("用户名不存在。\n");
}
}
三.主程序主要通过
1)“if else”语句
2)for循环
3)循环嵌套
4)结构体
5)指针数组
6)strcpy语句
7)switch语句
8)调用函数
9)宏定义
详细设计(流程图)
四.程序源码(这个代码直接就能用,上面有我写的注释,就不一一赘述了)
- #define _CRT_SECURE_NO_WARNINGS
-
- #include <stdio.h>
-
- #include <stdlib.h>
-
- #include <string.h>
-
- // 定义学生结构体
-
- typedef struct
-
- {
-
- int id;
-
- char name[50];
-
- char major[50];
-
- } Student;
-
- // 定义课程结构体
-
- typedef struct
-
- {
-
- int id;
-
- char name[50];
-
- } Course;//typedefe 重新定义 Course等于struct ,则调用时 Course num(随机定义名)
-
- // 假设最多有100个学生和10门课程
-
- #define MAX_STUDENTS 100
-
- #define MAX_COURSES 10
-
- // 全局变量
-
- Student students[MAX_STUDENTS];
-
- int numStudents = 0;
-
- Course courses[MAX_COURSES];
-
- int numCourses = 0;
-
- // 函数声明
-
- void login();
-
- void studentMenu(int studentIndex);
-
- void teacherMenu();
-
- void adminMenu();
-
- void printStudentInfo(int studentIndex);
-
- void modifyStudentInfo(int studentIndex);
-
- void searchCourse(int studentIndex);
-
- void addCourse();
-
- void modifyCourse();
-
- void printCourseStudents();
-
- void printCourseSchedule();
-
- void printUserInfo(char* username);
-
- void addUser();
-
- void deleteUser();
-
- void modifyUserPermissions();
-
- // 程序入口
-
- int main()
-
- {
-
- // 初始化课程
-
- Course course1 = { 1, "计算机科学" };
-
- Course course2 = { 2, "数学" };
-
- courses[numCourses++] = course1;
-
- courses[numCourses++] = course2;
-
- // 初始化学生
-
- Student student1 = { 1, "张三", "计算机科学" };
-
- Student student2 = { 2, "李四", "数学" };
-
- students[numStudents++] = student1;
-
- students[numStudents++] = student2;
-
- // 登录
-
- login();
-
- return 0;
-
- }
-
- // 登录菜单
-
- void login()
-
- {
-
- int role;
-
- printf("请选择角色:\n");
-
- printf("1. 学生\n");
-
- printf("2. 教师\n");
-
- printf("3. 管理员\n");
-
- printf("请输入数字选择角色:");
-
- scanf("%d", &role);
-
- if (role == 1)
-
- {
-
- int studentIndex;
-
- int id,gum;
-
- printf("请输入学生ID:");
-
- scanf("%d", &id);
-
- for (int i = 0; i < numStudents; i++)
-
- {
-
- if (students[i].id == id)
-
- {
-
- studentIndex = i;
-
- studentMenu(studentIndex);
-
- return;
-
- }
-
- }
-
- printf("学生ID不存在,请重新登录。\n");
-
- scanf("%d",&gum);
-
- login();
-
- }
-
- else if (role == 2) {
-
- teacherMenu();
-
- }
-
- else if (role == 3) {
-
- adminMenu();
-
- }
-
- else
-
- {
-
- printf("无效的角色,请重新登录。\n");
-
- login();
-
- }
-
- }
-
- // 学生菜单
-
- void studentMenu(int studentIndex)
-
- {
-
- int choice;
-
- printf("\n欢迎,%s!\n", students[studentIndex].name);
-
- printf("请选择功能:\n");
-
- printf("1. 资料浏览\n");
-
- printf("2. 资料修改\n");
-
- printf("3. 选课查询\n");
-
- printf("4. 退出\n");
-
- printf("请输入数字选择功能:");
-
- scanf("%d", &choice);
-
- switch (choice)
-
- {
-
- case 1:
-
- printStudentInfo(studentIndex);
-
- studentMenu(studentIndex);
-
- break;
-
- case 2:
-
- modifyStudentInfo(studentIndex);
-
- studentMenu(studentIndex);
-
- break;
-
- case 3:
-
- searchCourse(studentIndex);
-
- studentMenu(studentIndex);
-
- break;
-
- case 4:
-
- login();
-
- break;
-
- default:
-
- printf("无效的选择,请重新输入。\n");
-
- studentMenu(studentIndex);
-
- break;
-
- }
-
- }
-
- // 教师菜单
-
- void teacherMenu() {
-
- int num;
-
- printf("\n欢迎,教师!\n");
-
- printf("请选择功能:\n");
-
- printf("1. 课程录入\n");
-
- printf("2. 课程修改\n");
-
- printf("3. 课程打印\n");
-
- printf("4. 课表查询\n");
-
- printf("5. 退出\n");
-
- printf("请输入数字选择功能:");
-
- scanf("%d", &num);
-
- switch (num)
-
- {
-
- case 1:
-
- addCourse();
-
- teacherMenu();
-
- break;
-
- case 2:
-
- modifyCourse();
-
- teacherMenu();
-
- break;
-
- case 3:
-
- printCourseStudents();
-
- teacherMenu();
-
- break;
-
- case 4:
-
- printCourseSchedule();
-
- teacherMenu();
-
- break;
-
- case 5:
-
- login();
-
- break;
-
- default:
-
- printf("无效的选择,请重新输入。\n");
-
- teacherMenu();
-
- break;
-
- }
-
- }
-
-
-
- // 管理员菜单
-
- void adminMenu()
-
- {
-
- int choice;
-
- printf("\n欢迎,管理员!\n");
-
- printf("请选择功能:\n");
-
- printf("1. 用户资料打印\n");
-
- printf("2. 添加用户\n");
-
- printf("3. 删除用户\n");
-
- printf("4. 修改用户权限\n");
-
- printf("5. 退出\n");
-
- printf("请输入数字选择功能:");
-
- scanf("%d", &choice);
-
- switch (choice)
-
- {
-
- case 1: {
-
- char username[50];
-
- printf("请输入要打印信息的用户名:");
-
- scanf("%s", username);
-
- printUserInfo(username);
-
- adminMenu();
-
- break;
-
- }
-
- case 2:
-
- addUser();
-
- adminMenu();
-
- break;
-
- case 3:
-
- deleteUser();
-
- adminMenu();
-
- break;
-
- case 4:
-
- modifyUserPermissions();
-
- adminMenu();
-
- break;
-
- case 5:
-
- login();
-
- break;
-
- default:
-
- printf("无效的选择,请重新输入。\n");
-
- adminMenu();
-
- break;
-
- }
-
- }
-
- // 打印学生信息
-
- void printStudentInfo(int studentIndex) {
-
- printf("\n学号:%d\n", students[studentIndex].id);
-
- printf("姓名:%s\n", students[studentIndex].name);
-
- printf("专业:%s\n", students[studentIndex].major);
-
- }
-
- // 修改学生信息
-
- void modifyStudentInfo(int studentIndex)
-
- {
-
- int choice;
-
- printf("\n请选择要修改的字段:\n");
-
- printf("1. 学号\n");
-
- printf("2. 姓名\n");
-
- printf("3. 专业\n");
-
- printf("请输入数字选择字段:");
-
- scanf("%d", &choice);
-
- switch (choice)
-
- {
-
- case 1:
-
- printf("请输入新的学号:");
-
- scanf("%d", &students[studentIndex].id);
-
- break;
-
- case 2:
-
- printf("请输入新的姓名:");
-
- scanf("%s", students[studentIndex].name);
-
- break;
-
- case 3:
-
- printf("请输入新的专业:");
-
- scanf("%s", students[studentIndex].major);
-
- break;
-
- default:
-
- printf("无效的选择,请重新输入。\n");
-
- modifyStudentInfo(studentIndex);
-
- break;
-
- }
-
-
-
- printf("学生信息修改成功!\n");
-
- }
-
- // 查询选课信息
-
- void searchCourse(int studentIndex) {
-
- char courseName[50];
-
- printf("请输入要查询的课程名:");
-
- scanf("%s", courseName);
-
- for (int i = 0; i < numCourses; i++) {
-
- if (strcmp(courses[i].name, courseName) == 0) {
-
- printf("学生%s是否选修%s课程:是\n", students[studentIndex].name, courseName);
-
- return;
-
- }
-
- }
-
-
-
- printf("学生%s是否选修%s课程:否\n", students[studentIndex].name, courseName);
-
- }
-
-
-
- // 添加课程
-
- void addCourse()
-
- {
-
- if (numCourses >= MAX_COURSES) {
-
- printf("课程数量已达上限,无法添加新课程。\n");
-
- return;
-
- }
-
- Course course;
-
- int id;
-
- printf("请输入课程ID:");
-
- scanf("%d", &id);
-
-
-
- for (int i = 0; i < numCourses; i++) {
-
- if (courses[i].id == id) {
-
- printf("课程ID已存在,请重新输入。\n");
-
- addCourse();
-
- return;
-
- }
-
- }
-
- course.id = id;
-
- printf("请输入课程名称:");
-
- scanf("%s", course.name);
-
- courses[numCourses++] = course;
-
- printf("课程添加成功!\n");
-
- }
-
- // 修改课程
-
- void modifyCourse() {
-
- int choice;
-
- printf("请输入要修改的课程ID:");
-
- scanf("%d", &choice);
-
-
-
- for (int i = 0; i < numCourses; i++) {
-
- if (courses[i].id == choice) {
-
- printf("\n当前课程信息:\n");
-
- printf("课程ID:%d\n", courses[i].id);
-
- printf("课程名称:%s\n", courses[i].name);
-
-
-
- printf("请输入新的课程名称:");
-
- scanf("%s", courses[i].name);
-
-
-
- printf("课程信息修改成功!\n");
-
- return;
-
- }
-
- }
-
-
-
- printf("课程ID不存在,请重新输入。\n");
-
- modifyCourse();
-
- }
-
- // 打印课程学生
-
- void printCourseStudents()
-
- {
-
- int courseId;
-
- printf("请输入课程ID:");
-
- scanf("%d", &courseId);
-
- for (int i = 0; i < numCourses; i++)
-
- {
-
- if (courses[i].id == courseId) {
-
- printf("\n选修%s课程的学生如下:\n", courses[i].name);
-
- for (int j = 0; j < numStudents; j++) {
-
- printf("学号:%d,姓名:%s\n", students[j].id, students[j].name);
-
- }
-
- return;
-
- }
-
- }
-
- printf("课程ID不存在,请重新输入。\n");
-
- printCourseStudents();
-
- }
-
- // 打印教师课表
-
- void printCourseSchedule()
-
- {
-
- printf("教师课表如下:\n");
-
- for (int i = 0; i < numCourses; i++) {
-
- printf("课程ID:%d,课程名称:%s\n", courses[i].id, courses[i].name);
-
- }
-
- }
-
- // 打印用户信息
-
- void printUserInfo(char* username) {
-
- // 假设有两个用户admin和guest
-
- if (strcmp(username, "admin") == 0)
-
- {
-
- printf("用户名:%s,权限:管理员\n", username);
-
- }
-
- else if (strcmp(username, "guest") == 0) {
-
- printf("用户名:%s,权限:访客\n", username);
-
- }
-
- else {
-
- printf("用户名不存在。\n");
-
- }
-
- }
-
-
-
- // 添加用户
-
- void addUser()
-
- {
-
- char username[50];
-
- char password[50];
-
- printf("请输入用户名:");
-
- scanf("%s", username);
-
-
-
- printf("请输入初始密码:");
-
- scanf("%s", password);
-
-
-
- printf("用户添加成功!\n");
-
- }
-
-
-
- // 删除用户
-
- void deleteUser() {
-
- char username[50];
-
-
-
- printf("请输入要删除的用户名:");
-
- scanf("%s", username);
-
- // 假设不能删除admin用户
-
- if (strcmp(username, "admin") == 0)
-
- {
-
- printf("不能删除管理员账号。\n");
-
- return;
-
- }
-
-
-
- printf("用户删除成功!\n");
-
- }
-
- // 修改用户权限
-
- void modifyUserPermissions()
-
- {
-
- char username[50];
-
- int permissions;
-
- printf("请输入要修改权限的用户名:");
-
- scanf("%s", username);
-
- printf("请输入新的权限(1表示管理员,2表示访客):");
-
- scanf("%d", &permissions);
-
- printf("用户权限修改成功!\n");
-
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。