设计一个学生注册管理系统,能对学生注册信息(学号、姓名、性别、出生年月、所在系、专业、电话号码)进行查询、修改、增加、删除和存储等

madasb 2011-06-24 04:29:46
用c,最好有注释,谢了
...全文
2220 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
动感超哥 2011-06-24
  • 打赏
  • 举报
回复
先把代码复制 以后好赚分、、、、
pathuang68 2011-06-24
  • 打赏
  • 举报
回复
这个问题出现的概率咋这么高?我把4楼的代码保存再来,用于以后赚分算了:)
ryfdizuo 2011-06-24
  • 打赏
  • 举报
回复
// 课程_学生注册管理系统.c : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

struct student {
int num; //序号
char name[20]; //姓名
char sex; //性别
char id[18]; //身份证号码
int score; //入学分数
char address[80]; //家庭住址
};

struct student stu[100]; //定义学生信息数组

void createfile(); //创建磁盘文件
void readinfo(); //读取磁盘上的学生文件
int direction(); //显示欢迎界面并返回用户选择
void choose(); //用户的操作选择
void search();
void modify(); //修改学生数据
void addition(struct student); //增加学生数据并传递给结构体
void deleteinfo(); //删除学生数据
void showinfo(struct student); //显示学生数据
void saveinfo(); //保存学生数据
void exitpro(); //退出程序的函数

int main() {
int user_operation_num; //用户输入的操作
int i; //用于操作结构体的循环索引

//将每一项的序号均赋值为零, 代表该位置尚未使用
for (i = 0; i < 100; i++)
stu[i].num = 0;

readinfo();

user_operation_num = direction();

//根据用户的选择调用相应的函数
switch (user_operation_num) {
case 1:
search();
break;
case 2:
addition(stu[0]);
break;
case 3:
modify();
break;
case 4:
deleteinfo();
break;
case 5:
exitpro();
break;
default:
choose();
break;
}

return 0;
}

int direction() {
int user_operation_num; //用户的基本函数操作选择
printf("-------------------------------------\n");
printf("| 学生注册信息管理系统 |\n");
printf("| |\n");
printf("| 作者: 赵剑 |\n");
printf("-------------------------------------\n");
printf("\n\n"); //产生空行

printf("1查询 2增加 3修改 4删除 5退出\n");
printf("请输入需要进行的操作的序号: ");
scanf("%d", &user_operation_num);
return (user_operation_num);
}

void createfile() {
FILE * fp;

fp = fopen("studentdat", "wb");
if (fp == NULL) {
printf("读取文件信息发生错误\n");
exit(-1);
}
}

void choose() {
int user_operation_num; //用户的基本函数操作选择
printf("1查询 2增加 3修改 4删除 5保存 6退出\n");
printf("请输入需要进行的操作的序号:\n");
scanf("%d", &user_operation_num);

//根据用户的选择调用相应的函数
switch (user_operation_num) {
case 1:
search();
break;
case 2:
addition(stu[0]);
break;
case 3:
modify();
break;
case 4:
deleteinfo();
break;
case 5:
saveinfo();
break;
case 6:
exitpro();
break;
default:
choose();
break;
}
}

void readinfo() {
FILE *fp; //定义文件指针
fp = fopen("studentdat", "rb");
if (fp == NULL) //打开文件失败
{
createfile();
//exit(0);
} else {
int i;
for (i = 0; i < 100; i++)
fread(&stu[i], sizeof (struct student), 1, fp);
}
}

void search() {
int stu_num;
int i; //循环索引

printf("请输入学生的序号: ");
scanf("%d", &stu_num);

for (i = 0; i < 100; i++) {
if (stu[i].num == stu_num) {
showinfo(stu[i]);
break;
}
}

//未搜索到数据时的提示
if (i == 100) //如果i等于100,说明在0到99项都没有找到符合的数据,即数据不存在
{
printf("未找到学生数据\n");
choose();
}
}

void modify() {
int stu_mod_num;
int i; //循环索引
struct student * p; //指向需要被修改的数据
int flag = 1; //寻找数据项成功与否的标记
char c;
printf("请输入需要修改学生的序号:\n");
scanf("%d", &stu_mod_num);

p = NULL;

//寻找需要修改的学生数据
for (i = 0; i < 100; i++) {
if (stu[i].num == stu_mod_num) {
flag = 2; //找到数据项
p = stu + i;
break; //当寻找到待修改的数据项时跳出循环
}
}

//未寻找到数据
if (p == NULL) {
printf("未搜寻到学生数据\n");
choose();
}

if (flag == 2) {
char stu_mod_name[20]; //姓名
char stu_mod_sex; //性别
char stu_mod_id[18]; //身份证号码
int stu_mod_score; //入学分数
char stu_mod_address[80]; //家庭住址
struct student * p; //指向结构体的指针

p = stu;

//从键盘读取学生数据
printf("请输入学生的姓名: ");
scanf("%s", stu_mod_name);
c = getchar();
printf("请输入学生的性别: ");
scanf("%c", &stu_mod_sex);
printf("请输入学生的身份证号码: ");
scanf("%s", stu_mod_id);
printf("请输入学生的入学分数:");
scanf("%d", &stu_mod_score);
printf("请输入学生的家庭住址: ");
scanf("%s", stu_mod_address);

//将键盘输入的数据传递到学生数据的结构体中
p->num = stu_mod_num;
strcpy(p->name, stu_mod_name);
p->sex = stu_mod_sex;
strcpy(p->id, stu_mod_id);
p->score = stu_mod_score;
strcpy(p->address, stu_mod_address);
}
choose();
}

void addition(struct student stu_add) {
int stu_add_num;
char stu_add_name[20]; //姓名
char stu_add_sex; //性别
char stu_add_id[18]; //身份证号码
int stu_add_score; //入学分数
char stu_add_address[80]; //家庭住址
int i; //循环索引
struct student * p; //指向结构体的指针
int flag = 1; //未找到重复数据时, flag = 1
char c;

p = stu;

//从键盘读取学生数据
printf("请输入学生的序号: ");
scanf("%d", &stu_add_num);
//查询重复数据
for (i = 0; i < 100; i++) {
if (p->num == stu_add_num) //找到重复数据
{
flag = 2;
printf("学生数据中有重复的序号\n");
choose();
break;
}
p++;
}

if (flag == 1) //未找到重复数据
{
printf("请输入学生的姓名: ");
scanf("%s", stu_add_name);
c = getchar(); //吸收换行符
printf("请输入学生的性别: ");
scanf("%c", &stu_add_sex);
c = getchar(); //吸收换行符
printf("请输入学生的身份证号码: ");
scanf("%s", stu_add_id);
printf("请输入学生的入学分数:");
scanf("%d", &stu_add_score);
printf("请输入学生的家庭住址: ");
scanf("%s", stu_add_address);
}

//寻找未被使用的结构体数组
p = stu; //从结构体数组起始位置开始搜索
for (i = 0; i < 100; i++) {
p++;
if (p->num == 0)
break; //寻找到未被占用的位置即刻跳出循环, 指针指向该位置
}

//将键盘输入的数据传递到学生数据的结构体中
p->num = stu_add_num;
strcpy(p->name, stu_add_name);
p->sex = stu_add_sex;
strcpy(p->id, stu_add_id);
p->score = stu_add_score;
strcpy(p->address, stu_add_address);

printf("建立数据完毕\n");

choose(); //用户选择
}

void deleteinfo() {
int stu_del_num;
int i; //循环索引
struct student * p; //指向需要被删除的数据
int flag = 1;

p = NULL;

printf("请输入需要删除的学生的序号: ");
scanf("%d", &stu_del_num);

//寻找需要删除的学生数据
for (i = 0; i < 100; i++) {
if (stu[i].num == stu_del_num) {
flag = 2;
p = stu + i;
break; //当寻找到待删除的数据项时跳出循环
}
}

//未寻找到数据
if (p == NULL) {
printf("未搜寻到学生数据\n");
choose();
}

if (flag == 2) {
p->num = 0;
printf("删除学生数据完毕\n");
}
choose();
}

void saveinfo() //保存学生数据
{
FILE * fp;
int i;

fp = fopen("studentdat", "wb");
if (fp == NULL) {
printf("读取文件信息发生错误");
exit(0);
}

for (i = 0; i < 100; i++)
fwrite(&stu[i], sizeof (struct student), 1, fp);

printf("保存成功\n");

choose();
}

void showinfo(struct student stu_fnc) {
printf("序号: %d\n", stu_fnc.num);
printf("姓名: %s\n", stu_fnc.name);
printf("性别: %c\n", stu_fnc.sex);
printf("身份证号码: %s\n", stu_fnc.id);
printf("入学分数: %d\n", stu_fnc.score);
printf("家庭住址: %s\n", stu_fnc.address);

choose();
}

void exitpro() {
exit(0);
}
五哥 2011-06-24
  • 打赏
  • 举报
回复
先模拟下一个控制台程序 ,演练熟悉先


深入那不是一天两天的事情,慢慢积累

祝你成功...
祝你成功...
祝你成功...
至善者善之敌 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 q191201771 的回复:]
http://hi.baidu.com/waiting90/blog/item/f3e6c4fde3cc1885b801a0c1.html
[/Quote]

+++1
目 录 概述 3 一、 课题介绍 3 二、 目的和要求 3 三、 任务计划 3 需求分析 5 一、 学生管理的发展现状 5 二、 统功能分析 5 三、 统结构框图 5 数据库设计 7 一、 创建数据表的结构 7 二、 各表功能及其关 7 统模块功能的实现与界面设计 8 一、 统主要模块 8 二、 欢迎界面 9 三、 主菜单界面 9 四、 子菜单 10 五、 学生信息录入 11 六、 学生信息查找 12 七、 学生信息删除 13 八、 学生信息修改 14 课程设计心得 15 一、 程序结构设计培养 15 二、 书写习惯养成 15 三、 注意程序简洁 15 总结 16 参考文献 17 附录:项目源代码 18 一、 数据库连接(DbConnection.java) 18 二、 学生信息数据库管理(Student_Dao.java) 18 三、 欢迎界面(Welcome.java) 23 四、 主菜单界面(Menu.java) 24 五、 子菜单界面(Son_Menu.java) 27 六、 添加功能(Add_Menu.java) 31 七、 查找功能(Find_Menu.java) 34 八、 删除功能(Delet_Menu.java) 36 九、 修改功能(Change_Menu.java) 38 概述 课题介绍 本次课程设计要求实现一个面向学生信息管理学生信息统是一个非常通用 的管理。很多大、中、小学校都需要拥有自己的学生档案管理,以便对本校学 生的基本信息和学习情况进行管理,另一方面,较完整的学校信息管理同样也需要 有学生信息管理的支持。 由通用的学生相关数据分析可知,统包括院管理、学生基本信息管理、课程管理 、学生从成绩管理等主要功能。 该统要求使用JAVA和MySQL作为开发工具和数据库管理,因此,设计涉及 统功能设计、数据库设计统界面等几个方面内容。 目的和要求 了解JAVA语言的特点及使用的范围,掌握开发软件平台的搭建。 要求使用JAVA和MySQL开发一个学生信息管理统主要功能如下: 1) 院信息管理 院信息的录入,包括院编号、院名称等信息; 院信息修改删除查询。 2) 学生基本信息管理 学生基本信息的录入,包括学号姓名性别、出生日期、所在院、班级等信息学生基本信息修改删除查询。 3) 课程设置管理 课程信息的录入,包括课程编号、课程名称、学分、课程内容等信息; 课程信息修改删除查询。 4) 学生成绩管理 学生成绩的录入,包括课程编号、课程名称、学分、课程内容等信息学生信息修改删除查询。 任务计划 考虑到本次课程设计是独立完成,所以,不需要进行细致的分工,只要对框架和时间 进行一定的规划就行。 " "时间 "计划 "执行结果 " "1 "12月13日 "查阅相关资料 "查阅了JAVA Swing,MySQL等方面的 " " " "准备好基础知识 "相关资料。 " "2 "12月14日 "进行需求分析 "得到需求分析总结。 " "3 "12月14日~21日 "正式设计 "完成代码设计及调试 " "5 "12月22日 "完成课程设计报告"整理文件,并完成书面报告 " 需求分析 学生管理的发展现状 经过了一段时间的发展,当今,各大高校普遍都有了相对完善的学生管理,但在 部分中小学中,这种高效的管理手段,仍未能全面普及。目前已有的学生管理存在 界面和操作相对繁琐,实现成本较高等缺点,仍需改进。 统功能分析 由通用的学生相关数据分析可知,统包括院管理、学生基本信息管理、课程管理 、学生从成绩管理等主要功能[1]。 实现以上各模块的功能,需要以下子功能: 1数据库连接的建立与断开 2数据库的数据操作,包括插入、查询删除修改 统操作界面与数据库操作相关联 统结构框图 从统功能表述可以看出,该统可以实现几个功能,根据这些功能设计统的功 能模块如 图表 1所示: 数据库设计 创建数据表的结构 (以学生基本信息管理为例) 主要数据项 学号姓名性别出生年月、所在院、所在班级 数据类型及要求 为操作方便,均定义为字符串。其中学号不得重复。 MySQL建表语句 各表功能及其关统各表分别存储相应数据。 涉及的数据表之间相对独立,但仍有少量关联。 1) 学生成绩表 包含对 学生基本信息表 和 课程设置表 的映射 5) 学生基本信息表 包含对 院信息表 的映射 统模块功能的实现与界面设计 统主要模块 本次课程设计的主要目的,是通过实践,让我对所学到的知识进行考验和巩固。经过 一点时间的了解。设计出了统的总体框架,参看图表 1。 由于各模块的功能及原理基本相同,只是涉及的
软件工程课程设计任务书 "课题 "学生信息管理 " "名称 " " "设计 "本课程设计的目的就是通过实践使学生经历一个软件统开发的全过程并" "目的 "受到一次综合的训练,以便能较全面地理解、掌握与综合运用所学的知识 " " "去分析、解决实际问题。 " "实验 "1、Windows 7及以上 " "环境 "2、SQL Server2008 " " "3、VS、NET " "任务 "任务: " "要求 "完成《学生信息管理统的分析设计工作,并选用适当的开发工具完 " " "成统的开发。 " " "要求: " " "1、完成需求分析; " " "2、进行数据库的概念设计; " " "3、进行数据库的逻辑设计; " " "4、进行数据库的物理设计; " " "5、进行应用程序设计; " " "6、编程实现。 " "工作进度计划 " "序号 "起止日期 "工 作 内 容 " "1 "2017、06、12-2017、"需求分析 " " "06、13 " " "2 "2017、06、13-2017、"概念设计 " " "06、14 " " "3 "2017、06、14-2017、"逻辑设计 " " "12、15 " " "4 "2017、06、15-2017、"设计 " " "06、17 " " "5 "2017、06、18-2017、"课程设计报告纂写 " " "06、19 " " "指导教师(签章): " " 2017 年 6 月 15 日 " 计算机工程 软件工程 课程设计报告 选题名称: 学生信息管理 (院): 计 算 机 工 程与软件工程学院 专 业: 计算机科学与技术 班 级: 姓 名: 学 号: 指导教师: 学年学期: 2016 ~ 2017 学年 第 2 学期 2017 年 6 月 15 日 摘要: 学生信息管理就是一个小型的管理,其开发技术就是后台数据库的建立与维 护、前端应用程序的开发两个方面。数据库要体现数据精简与数据一致性、联强的特 点,应用程序要体现功能健全与使用方便的特点。 设计报告介绍了与学生相关的信息,划分数据库,将统划分为录入新生信息、程序学生 信息、更新学生信息删除学生信息、添加用户、修改密码、添加班级、添加课程、退 出统等功能,来了解学生的基本身份信息统达到的预期的目标就是录入新生信息、 程序学生信息、更新学生信息删除学生信息、添加用户、修改密码、添加班级、添加 课程、退出统的增删改查的功能。本统只就是个人的基本信息的增删改查,可随着添 加更多的程序去实现更多的功能。 关键词:数据库;ER图; 目 录 1 需求分析 1 2 概念设计 1 3 逻辑设计 1 4 编程实现 1 总结与体会 3 致 谢 4 参考文献 5 软件工程课程设计报告 1 需求分析 1、1 统需求 随着学校人数的不断扩大,学生信息不断增多,面对如此庞大的信息量,传统的 统计学生信息的方法不仅占用大量的人力物力,而且容易出错,已经不再使用,这需要 我们设计一个简单方便的计算机统来解决这个问题,来对学校所有学生信息进 行处理。方便进行增删改查的功能,使一切更加方便。 现代科技的进步已经就是日新月异,应将这种方便的技术应用于人民的日常生活 ,方便人民。保障信息的正确性、完整性、实时性。 1、2 可行性分析 了解了统的具体的功能,对其实现的可行性进行分析。该统所需的硬件设备 市场价格低,操作统采用Windows7的操作统,采用C#编写的,技术上就是可行的。 每个人都有学号,所以登录号与密码均可以设置为学号,所以管理上也就是可行的。 1、3 功能需求 学生信息管理具有以下功能: 学籍管理:对学生信息档案进行管理,主要包括学生档案信息修改删除、 添加、档案查询及档案输出等,其中档案查询可以根据学号姓名查询需要的信息; 档案输出可以输出学生档案、成绩、课程表等。学生档案记录主要包括:学号姓名 、出生日期、年龄、性别、政治面貌、入学时间、个人简介、照片、家庭住址、邮 编、所在别以及所学专业等字段。 成绩管理:对学生的成绩进行管理,主要就就是成绩查询,成绩查询可以按学号姓名进行查询。成绩记录主要包括:学期、学号姓名、课程号以及成绩字段等。 课程管理:学生可以通过该模块进行课程表查瞧、打印课程表。 选修课选择:对学生报选修课进行管理,学生可以对自己喜爱的课程进行选择。 统维护:教师对学生的密码进行管理,主要包括增加新用户与用户修改。其中 用户修改可以实现对学生的密码修改学生用户名的删去。 统辅助工具:通过该模块用户可以打开一些辅助工具,如记事本与记事本。 退出统:离开本学生信息管理。 图1 模块图 1、4 数据流图 图2 数据流图 2 概念设计

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧