master
Silent7lambs 4 years ago
parent 329180599e
commit 077b5b8e8b

@ -1 +0,0 @@
Subproject commit 4f78403179f5d5659054cd4ba702fdf6d30d2123

Binary file not shown.

After

Width:  |  Height:  |  Size: 559 KiB

@ -0,0 +1,14 @@
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx

@ -0,0 +1,164 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<DBN-PSQL>
<case-options enabled="true">
<option name="KEYWORD_CASE" value="lower" />
<option name="FUNCTION_CASE" value="lower" />
<option name="PARAMETER_CASE" value="lower" />
<option name="DATATYPE_CASE" value="lower" />
<option name="OBJECT_CASE" value="preserve" />
</case-options>
<formatting-settings enabled="false" />
</DBN-PSQL>
<DBN-SQL>
<case-options enabled="true">
<option name="KEYWORD_CASE" value="lower" />
<option name="FUNCTION_CASE" value="lower" />
<option name="PARAMETER_CASE" value="lower" />
<option name="DATATYPE_CASE" value="lower" />
<option name="OBJECT_CASE" value="preserve" />
</case-options>
<formatting-settings enabled="false">
<option name="STATEMENT_SPACING" value="one_line" />
<option name="CLAUSE_CHOP_DOWN" value="chop_down_if_statement_long" />
<option name="ITERATION_ELEMENTS_WRAPPING" value="chop_down_if_not_single" />
</formatting-settings>
</DBN-SQL>
<DBN-PSQL>
<case-options enabled="true">
<option name="KEYWORD_CASE" value="lower" />
<option name="FUNCTION_CASE" value="lower" />
<option name="PARAMETER_CASE" value="lower" />
<option name="DATATYPE_CASE" value="lower" />
<option name="OBJECT_CASE" value="preserve" />
</case-options>
<formatting-settings enabled="false" />
</DBN-PSQL>
<DBN-SQL>
<case-options enabled="true">
<option name="KEYWORD_CASE" value="lower" />
<option name="FUNCTION_CASE" value="lower" />
<option name="PARAMETER_CASE" value="lower" />
<option name="DATATYPE_CASE" value="lower" />
<option name="OBJECT_CASE" value="preserve" />
</case-options>
<formatting-settings enabled="false">
<option name="STATEMENT_SPACING" value="one_line" />
<option name="CLAUSE_CHOP_DOWN" value="chop_down_if_statement_long" />
<option name="ITERATION_ELEMENTS_WRAPPING" value="chop_down_if_not_single" />
</formatting-settings>
</DBN-SQL>
<codeStyleSettings language="XML">
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>ANDROID_ATTRIBUTE_ORDER</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
</code_scheme>
</component>

@ -0,0 +1,461 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DBNavigator.Project.DataEditorManager">
<record-view-column-sorting-type value="BY_INDEX" />
<value-preview-text-wrapping value="true" />
<value-preview-pinned value="false" />
</component>
<component name="DBNavigator.Project.DataExportManager">
<export-instructions>
<create-header value="true" />
<quote-values-containing-separator value="true" />
<quote-all-values value="false" />
<value-separator value="" />
<file-name value="" />
<file-location value="" />
<scope value="GLOBAL" />
<destination value="FILE" />
<format value="EXCEL" />
<charset value="GBK" />
</export-instructions>
</component>
<component name="DBNavigator.Project.DatabaseBrowserManager">
<autoscroll-to-editor value="false" />
<autoscroll-from-editor value="true" />
<show-object-properties value="true" />
<loaded-nodes />
</component>
<component name="DBNavigator.Project.DatabaseFileManager">
<open-files />
</component>
<component name="DBNavigator.Project.EditorStateManager">
<last-used-providers />
</component>
<component name="DBNavigator.Project.ExecutionManager">
<retain-sticky-names value="false" />
</component>
<component name="DBNavigator.Project.MethodExecutionManager">
<method-browser />
<execution-history>
<group-entries value="true" />
<execution-inputs />
</execution-history>
<argument-values-cache />
</component>
<component name="DBNavigator.Project.ObjectDependencyManager">
<last-used-dependency-type value="INCOMING" />
</component>
<component name="DBNavigator.Project.ObjectQuickFilterManager">
<last-used-operator value="EQUAL" />
<filters />
</component>
<component name="DBNavigator.Project.ScriptExecutionManager" clear-outputs="true">
<recently-used-interfaces />
</component>
<component name="DBNavigator.Project.Settings">
<connections />
<browser-settings>
<general>
<display-mode value="TABBED" />
<navigation-history-size value="100" />
<show-object-details value="false" />
</general>
<filters>
<object-type-filter>
<object-type name="SCHEMA" enabled="true" />
<object-type name="USER" enabled="true" />
<object-type name="ROLE" enabled="true" />
<object-type name="PRIVILEGE" enabled="true" />
<object-type name="CHARSET" enabled="true" />
<object-type name="TABLE" enabled="true" />
<object-type name="VIEW" enabled="true" />
<object-type name="MATERIALIZED_VIEW" enabled="true" />
<object-type name="NESTED_TABLE" enabled="true" />
<object-type name="COLUMN" enabled="true" />
<object-type name="INDEX" enabled="true" />
<object-type name="CONSTRAINT" enabled="true" />
<object-type name="DATASET_TRIGGER" enabled="true" />
<object-type name="DATABASE_TRIGGER" enabled="true" />
<object-type name="SYNONYM" enabled="true" />
<object-type name="SEQUENCE" enabled="true" />
<object-type name="PROCEDURE" enabled="true" />
<object-type name="FUNCTION" enabled="true" />
<object-type name="PACKAGE" enabled="true" />
<object-type name="TYPE" enabled="true" />
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
<object-type name="ARGUMENT" enabled="true" />
<object-type name="DIMENSION" enabled="true" />
<object-type name="CLUSTER" enabled="true" />
<object-type name="DBLINK" enabled="true" />
</object-type-filter>
</filters>
<sorting>
<object-type name="COLUMN" sorting-type="NAME" />
<object-type name="FUNCTION" sorting-type="NAME" />
<object-type name="PROCEDURE" sorting-type="NAME" />
<object-type name="ARGUMENT" sorting-type="POSITION" />
</sorting>
<default-editors>
<object-type name="VIEW" editor-type="SELECTION" />
<object-type name="PACKAGE" editor-type="SELECTION" />
<object-type name="TYPE" editor-type="SELECTION" />
</default-editors>
</browser-settings>
<navigation-settings>
<lookup-filters>
<lookup-objects>
<object-type name="SCHEMA" enabled="true" />
<object-type name="USER" enabled="false" />
<object-type name="ROLE" enabled="false" />
<object-type name="PRIVILEGE" enabled="false" />
<object-type name="CHARSET" enabled="false" />
<object-type name="TABLE" enabled="true" />
<object-type name="VIEW" enabled="true" />
<object-type name="MATERIALIZED VIEW" enabled="true" />
<object-type name="NESTED TABLE" enabled="false" />
<object-type name="COLUMN" enabled="false" />
<object-type name="INDEX" enabled="true" />
<object-type name="CONSTRAINT" enabled="true" />
<object-type name="DATASET TRIGGER" enabled="true" />
<object-type name="DATABASE TRIGGER" enabled="true" />
<object-type name="SYNONYM" enabled="false" />
<object-type name="SEQUENCE" enabled="true" />
<object-type name="PROCEDURE" enabled="true" />
<object-type name="FUNCTION" enabled="true" />
<object-type name="PACKAGE" enabled="true" />
<object-type name="TYPE" enabled="true" />
<object-type name="TYPE ATTRIBUTE" enabled="false" />
<object-type name="ARGUMENT" enabled="false" />
<object-type name="DIMENSION" enabled="false" />
<object-type name="CLUSTER" enabled="false" />
<object-type name="DBLINK" enabled="true" />
</lookup-objects>
<force-database-load value="false" />
<prompt-connection-selection value="true" />
<prompt-schema-selection value="true" />
</lookup-filters>
</navigation-settings>
<dataset-grid-settings>
<general>
<enable-zooming value="true" />
<enable-column-tooltip value="true" />
</general>
<sorting>
<nulls-first value="true" />
<max-sorting-columns value="4" />
</sorting>
<tracking-columns>
<columnNames value="" />
<visible value="true" />
<editable value="false" />
</tracking-columns>
</dataset-grid-settings>
<dataset-editor-settings>
<text-editor-popup>
<active value="false" />
<active-if-empty value="false" />
<data-length-threshold value="100" />
<popup-delay value="1000" />
</text-editor-popup>
<values-actions-popup>
<show-popup-button value="true" />
<element-count-threshold value="1000" />
<data-length-threshold value="250" />
</values-actions-popup>
<general>
<fetch-block-size value="100" />
<fetch-timeout value="30" />
<trim-whitespaces value="true" />
<convert-empty-strings-to-null value="true" />
<select-content-on-cell-edit value="true" />
<large-value-preview-active value="true" />
</general>
<filters>
<prompt-filter-dialog value="true" />
<default-filter-type value="BASIC" />
</filters>
<qualified-text-editor text-length-threshold="300">
<content-types>
<content-type name="Text" enabled="true" />
<content-type name="Properties" enabled="true" />
<content-type name="XML" enabled="true" />
<content-type name="DTD" enabled="true" />
<content-type name="HTML" enabled="true" />
<content-type name="XHTML" enabled="true" />
<content-type name="Java" enabled="true" />
<content-type name="SQL" enabled="true" />
<content-type name="PL/SQL" enabled="true" />
<content-type name="JSON" enabled="true" />
<content-type name="JSON5" enabled="true" />
<content-type name="Groovy" enabled="true" />
<content-type name="AIDL" enabled="true" />
<content-type name="YAML" enabled="true" />
<content-type name="Manifest" enabled="true" />
</content-types>
</qualified-text-editor>
<record-navigation>
<navigation-target value="VIEWER" />
</record-navigation>
</dataset-editor-settings>
<code-editor-settings>
<general>
<show-object-navigation-gutter value="false" />
<show-spec-declaration-navigation-gutter value="true" />
<enable-spellchecking value="true" />
<enable-reference-spellchecking value="false" />
</general>
<confirmations>
<save-changes value="false" />
<revert-changes value="true" />
</confirmations>
</code-editor-settings>
<code-completion-settings>
<filters>
<basic-filter>
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
<filter-element type="RESERVED_WORD" id="function" selected="true" />
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
<filter-element type="OBJECT" id="schema" selected="true" />
<filter-element type="OBJECT" id="role" selected="true" />
<filter-element type="OBJECT" id="user" selected="true" />
<filter-element type="OBJECT" id="privilege" selected="true" />
<user-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="false" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</user-schema>
<public-schema>
<filter-element type="OBJECT" id="table" selected="false" />
<filter-element type="OBJECT" id="view" selected="false" />
<filter-element type="OBJECT" id="materialized view" selected="false" />
<filter-element type="OBJECT" id="index" selected="false" />
<filter-element type="OBJECT" id="constraint" selected="false" />
<filter-element type="OBJECT" id="trigger" selected="false" />
<filter-element type="OBJECT" id="synonym" selected="false" />
<filter-element type="OBJECT" id="sequence" selected="false" />
<filter-element type="OBJECT" id="procedure" selected="false" />
<filter-element type="OBJECT" id="function" selected="false" />
<filter-element type="OBJECT" id="package" selected="false" />
<filter-element type="OBJECT" id="type" selected="false" />
<filter-element type="OBJECT" id="dimension" selected="false" />
<filter-element type="OBJECT" id="cluster" selected="false" />
<filter-element type="OBJECT" id="dblink" selected="false" />
</public-schema>
<any-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</any-schema>
</basic-filter>
<extended-filter>
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
<filter-element type="RESERVED_WORD" id="function" selected="true" />
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
<filter-element type="OBJECT" id="schema" selected="true" />
<filter-element type="OBJECT" id="user" selected="true" />
<filter-element type="OBJECT" id="role" selected="true" />
<filter-element type="OBJECT" id="privilege" selected="true" />
<user-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</user-schema>
<public-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</public-schema>
<any-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</any-schema>
</extended-filter>
</filters>
<sorting enabled="true">
<sorting-element type="RESERVED_WORD" id="keyword" />
<sorting-element type="RESERVED_WORD" id="datatype" />
<sorting-element type="OBJECT" id="column" />
<sorting-element type="OBJECT" id="table" />
<sorting-element type="OBJECT" id="view" />
<sorting-element type="OBJECT" id="materialized view" />
<sorting-element type="OBJECT" id="index" />
<sorting-element type="OBJECT" id="constraint" />
<sorting-element type="OBJECT" id="trigger" />
<sorting-element type="OBJECT" id="synonym" />
<sorting-element type="OBJECT" id="sequence" />
<sorting-element type="OBJECT" id="procedure" />
<sorting-element type="OBJECT" id="function" />
<sorting-element type="OBJECT" id="package" />
<sorting-element type="OBJECT" id="type" />
<sorting-element type="OBJECT" id="dimension" />
<sorting-element type="OBJECT" id="cluster" />
<sorting-element type="OBJECT" id="dblink" />
<sorting-element type="OBJECT" id="schema" />
<sorting-element type="OBJECT" id="role" />
<sorting-element type="OBJECT" id="user" />
<sorting-element type="RESERVED_WORD" id="function" />
<sorting-element type="RESERVED_WORD" id="parameter" />
</sorting>
<format>
<enforce-code-style-case value="true" />
</format>
</code-completion-settings>
<execution-engine-settings>
<statement-execution>
<fetch-block-size value="100" />
<execution-timeout value="20" />
<debug-execution-timeout value="600" />
<focus-result value="false" />
<prompt-execution value="false" />
</statement-execution>
<script-execution>
<command-line-interfaces />
<execution-timeout value="300" />
</script-execution>
<method-execution>
<execution-timeout value="30" />
<debug-execution-timeout value="600" />
<parameter-history-size value="10" />
</method-execution>
</execution-engine-settings>
<operation-settings>
<transactions>
<uncommitted-changes>
<on-project-close value="ASK" />
<on-disconnect value="ASK" />
<on-autocommit-toggle value="ASK" />
</uncommitted-changes>
<multiple-uncommitted-changes>
<on-commit value="ASK" />
<on-rollback value="ASK" />
</multiple-uncommitted-changes>
</transactions>
<session-browser>
<disconnect-session value="ASK" />
<kill-session value="ASK" />
<reload-on-filter-change value="false" />
</session-browser>
<compiler>
<compile-type value="KEEP" />
<compile-dependencies value="ASK" />
<always-show-controls value="false" />
</compiler>
<debugger>
<debugger-type value="ASK" />
<use-generic-runners value="true" />
</debugger>
</operation-settings>
<ddl-file-settings>
<extensions>
<mapping file-type-id="VIEW" extensions="vw" />
<mapping file-type-id="TRIGGER" extensions="trg" />
<mapping file-type-id="PROCEDURE" extensions="prc" />
<mapping file-type-id="FUNCTION" extensions="fnc" />
<mapping file-type-id="PACKAGE" extensions="pkg" />
<mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
<mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
<mapping file-type-id="TYPE" extensions="tpe" />
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
</extensions>
<general>
<lookup-ddl-files value="true" />
<create-ddl-files value="false" />
<synchronize-ddl-files value="true" />
<use-qualified-names value="false" />
<make-scripts-rerunnable value="true" />
</general>
</ddl-file-settings>
<general-settings>
<regional-settings>
<date-format value="MEDIUM" />
<number-format value="UNGROUPED" />
<locale value="SYSTEM_DEFAULT" />
<use-custom-formats value="false" />
</regional-settings>
<environment>
<environment-types>
<environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
<environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
<environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
<environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
</environment-types>
<visibility-settings>
<connection-tabs value="true" />
<dialog-headers value="true" />
<object-editor-tabs value="true" />
<script-editor-tabs value="false" />
<execution-result-tabs value="true" />
</visibility-settings>
</environment>
</general-settings>
</component>
<component name="DBNavigator.Project.StatementExecutionManager">
<execution-variables />
</component>
</project>

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="PLATFORM" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="1.8" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
</GradleProjectSettings>
</option>
</component>
</project>

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="BintrayJCenter" />
<option name="name" value="BintrayJCenter" />
<option name="url" value="https://jcenter.bintray.com/" />
</remote-repository>
<remote-repository>
<option name="id" value="Google" />
<option name="name" value="Google" />
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
</remote-repository>
</component>
</project>

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
</set>
</option>
</component>
</project>

@ -0,0 +1,154 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="issues">
<option name="index">
<map>
<entry key="/Dummy.txt">
<value>
<set />
</value>
</entry>
<entry key="D:/ComputerScience/softwareEngineer/git_src/Android-Student-Course-Selection-System/app/src/main/java/com/check_course/Course_ManagerActivity.java">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/build.gradle">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/AndroidManifest.xml">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/assets/litepal.xml">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/java/com/example/softengineering_selectivecourse/Comments.java">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/java/com/example/softengineering_selectivecourse/Course.java">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/java/com/example/softengineering_selectivecourse/CourseBasicInfoActivity.java">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/java/com/example/softengineering_selectivecourse/CourseRecommendedActivity.java">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/java/com/example/softengineering_selectivecourse/CourseSelectingActivity.java">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/java/com/example/softengineering_selectivecourse/Course_ManagerActivity.java">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/java/com/example/softengineering_selectivecourse/LoginActivity.java">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/java/com/example/softengineering_selectivecourse/PersonalBasicInfoActivity.java">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/java/com/example/softengineering_selectivecourse/RegisterActivity.java">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/java/com/example/softengineering_selectivecourse/User.java">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/java/com/example/softengineering_selectivecourse/User_ManagerActivity.java">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/java/com/example/softengineering_selectivecourse/ui/login/LoginActivity.java">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/res/layout/activity_course__manager.xml">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/res/layout/activity_course_basic_info.xml">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/res/layout/activity_course_recommended.xml">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/res/layout/activity_course_selecting.xml">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/res/layout/activity_login.xml">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/res/layout/activity_personal_basic_info.xml">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/res/layout/activity_register.xml">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/res/layout/activity_user__manager.xml">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/res/layout/comment_sqlist.xml">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/res/layout/sqlist.xml">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/res/layout/user_sqlist.xml">
<value>
<set />
</value>
</entry>
<entry key="$PROJECT_DIR$/app/src/main/res/values/selectDown.xml">
<value>
<set />
</value>
</entry>
</map>
</option>
</component>
</project>

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="projectSettings">
<option name="alternativeWorkingDirPath" value="" />
<option name="localAnalysisScripName" value="&lt;NO LOCAL ANALYSIS&gt;" />
<option name="serverName" value="&lt;NO SONAR&gt;" />
<option name="useAlternativeWorkingDir" value="false" />
<option name="workingDirSelection" value="&lt;PROJECT&gt;" />
</component>
</project>

@ -0,0 +1,19 @@

java:S13198"pThe return type of this method should be an interface such as "List" rather than the implementation "ArrayList".(©Ðœ¸

java:S1319$"pThe return type of this method should be an interface such as "List" rather than the implementation "ArrayList".(ùé <C3A9>
x java:S116"^Rename this field "NumOfCourseSelected" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ÿ¼ìãþÿÿÿÿ
q java:S116"\Rename this field "NumOfCourseNeeded" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Ïá’¤
t
java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(êáÕàüÿÿÿÿ
w java:S116"]Rename this field "brief_introduction" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(úäþòÿÿÿÿÿ
f java:S117a"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ÃÈŽÄ
t
java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(ߥºîøÿÿÿÿ
h java:S100M"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(î÷ðÿÿÿÿÿ
c java:S100a"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ÃÈŽÄ
Ž
java:S1319U"sThe type of the "comments" object should be an interface such as "List" rather than the implementation "ArrayList".(±Ò¨îúÿÿÿÿ

java:S1319v"sThe type of the "selected" object should be an interface such as "List" rather than the implementation "ArrayList".(½Ñâ

@ -0,0 +1,43 @@
c java:S100s"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(³˜•ú
| java:S116"bRename this field "humanity_class_NotTaken" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(‹Õ•Èüÿÿÿÿ
d java:S100 "NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(‚‚®–

java:S1319˜"pThe return type of this method should be an interface such as "List" rather than the implementation "ArrayList".(ùé <C3A9>
k java:S117o"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(¤¹¢žúÿÿÿÿ
f java:S117w"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(×·¡Û
<EFBFBD>
java:S1319s"zThe type of the "course_selected" object should be an interface such as "List" rather than the implementation "ArrayList".(³˜•ú
d java:S100¬"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Õ÷“ø
i java:S100ƒ"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(¥ÞÅ™ÿÿÿÿÿ
f java:S117s"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(³˜•ú
o
java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(Ñ ç•
i java:S100œ"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(™¥äÌÿÿÿÿÿ
h java:S100{"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(êêΦÿÿÿÿÿ
| java:S116"bRename this field "military_class_NotTaken" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(æâËßýÿÿÿÿ
i java:S100¨"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ßë‚Èüÿÿÿÿ
t
java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(‡ÐÓ˜ûÿÿÿÿ

java:S1319 "pThe return type of this method should be an interface such as "List" rather than the implementation "ArrayList".(‚‚®–
Œ
java:S1319œ"pThe return type of this method should be an interface such as "List" rather than the implementation "ArrayList".(™¥äÌÿÿÿÿÿ
l java:S117ƒ"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(¥ÞÅ™ÿÿÿÿÿ
 java:S116"hRename this field "naturalScience_class_NotTaken" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Ó÷ùÐùÿÿÿÿ
c java:S100w"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(×·¡Û
d java:S100¤"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ñ€‘×
} java:S116"cRename this field "political_class_NotTaken" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(™‰àªýÿÿÿÿ
t
java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(êáÕàüÿÿÿÿ
h java:S100o"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(¤¹¢žúÿÿÿÿ
d java:S100°"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(·Õÿ÷
f java:S117"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(µ¥˜–
c java:S100"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(µ¥˜–
Ž
java:S1319k"sThe type of the "comments" object should be an interface such as "List" rather than the implementation "ArrayList".(œžÛÌüÿÿÿÿ
o java:S116"ZRename this field "course_selected" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Ñ ç•
k java:S117{"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(êêΦÿÿÿÿÿ
v java:S116"\Rename this field "completed_courses" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(‡ÐÓ˜ûÿÿÿÿ

java:S1319o"|The type of the "completed_courses" object should be an interface such as "List" rather than the implementation "ArrayList".(¤¹¢žúÿÿÿÿ

@ -0,0 +1,30 @@
h
java:S1450$"RRemove the "add" field and declare it as a local variable in the relevant methods.(‚ò ¶
W
java:S1128":Remove this unused import 'android.content.ContentValues'.(å’µÞ8ÍŒ<C38D>Óú.
I
java:S1905")Remove this unnecessary cast to "String".(˃ÍÑþÿÿÿÿ8·»Ñú.
t
java:S2293D"YReplace the type specification in this constructor call with the diamond operator ("<>").(ÖÔ¾Ÿúÿÿÿÿ
b java:S101"MRename this class name to match the regular expression '^[A-Z][a-zA-Z0-9]*$'.(ù­¬£
u
java:S1450,"SRemove the "item" field and declare it as a local variable in the relevant methods.(•²<E280A2>µüÿÿÿÿ8Ýù«Ïú.
w
java:S1450-"ZRemove the "listAdapter" field and declare it as a local variable in the relevant methods.(Ï”¨·8ÊÈúÁú.
w
java:S2293ù"YReplace the type specification in this constructor call with the diamond operator ("<>").(ùãÒ<C3A3>8·»Ñú.
n
java:S1450'"SRemove the "User" field and declare it as a local variable in the relevant methods.(Êͱ¤þÿÿÿÿ
p
java:S1450#"URemove the "select" field and declare it as a local variable in the relevant methods.(®ùç¶þÿÿÿÿ
d
java:S1192š"FDefine a constant instead of duplicating this literal "cname" 3 times.(«‡³ó8·»Ñú.
i java:S116'"ORename this field "User" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Êͱ¤þÿÿÿÿ
D
java:S1905")Remove this unnecessary cast to "String".(äœÁÔ8·»Ñú.
Q java:S110"<This class has 9 parents which is greater than 5 authorized.(ù­¬£
^
java:S1128"<Remove this unused import 'android.annotation.SuppressLint'.(ÕƒóÏûÿÿÿÿ8¡Ò™ú.
V
java:S1128"4Remove this unused import 'android.database.Cursor'.(ŽÔäåúÿÿÿÿ8™¥Ïú.

@ -0,0 +1,2 @@
Q java:S110"<This class has 9 parents which is greater than 5 authorized.(ÞÒð

@ -0,0 +1,25 @@
?
java:S1659"$Declare "forget" on a separate line.(ð–ŒÅüÿÿÿÿ
Q
java:S1481 ".Remove this unused "firstTime" local variable.(‘°á¹ýÿÿÿÿ·×ú.
=
java:S1659""Declare "exit" on a separate line.(Ú¢è®øÿÿÿÿ
Y java:S125£"<This block of commented-out lines of code should be removed.(Ú°à¬8ùê½×ú.
V java:S110"<This class has 9 parents which is greater than 5 authorized.(·¡ïõøÿÿÿÿ
E
java:S1125i"(Remove the literal "true" boolean value.(Œýž„8Õ®×ú.
A
java:S1659"&Declare "showCode" on a separate line.(ð–ŒÅüÿÿÿÿ
H
java:S1068$"-Remove this unused "forgetpwd" private field.(ƒœÛ³ÿÿÿÿÿ
H
java:S1128"-Remove this unused import 'java.util.Random'.(èøÉ›ùÿÿÿÿ
t
java:S3776("RRefactor this method to reduce its Cognitive Complexity from 26 to the 15 allowed.(<28>ž¨Œþÿÿÿÿ8‡áôÖú.
a
java:S11928"FDefine a constant instead of duplicating this literal "sname" 4 times.(žÎôÌýÿÿÿÿ
;
java:S1659" Declare "us" on a separate line.(ð–ŒÅüÿÿÿÿ
<
java:S1659"!Declare "pwd" on a separate line.(º€Š·ùÿÿÿÿ

@ -0,0 +1,36 @@
<EFBFBD>
java:S1450"_Remove the "getCourseDetails" field and declare it as a local variable in the relevant methods.(³éÔ•ÿÿÿÿÿ8¢áë…û.
e
java:S1192Ü"GDefine a constant instead of duplicating this literal "cclass" 5 times.(‚ÍÄû.
u
java:S1450""SRemove the "item" field and declare it as a local variable in the relevant methods.(•²<E280A2>µüÿÿÿÿ8ê딀û.
w
java:S1450#"ZRemove the "listAdapter" field and declare it as a local variable in the relevant methods.(Ï”¨·8ê딀û.
O
java:S1128"-Remove this unused import 'org.w3c.dom.Text'.(¶Äè‹þÿÿÿÿ8ç£åÿú.
w
java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(ùãÒ<C3A3>8Åþý“û.
h
java:S1192t"FDefine a constant instead of duplicating this literal "cname" 7 times.(½äÿŒþÿÿÿÿ8ÄÙ”û.
^ java:S125Ñ"<This block of commented-out lines of code should be removed.(<28>êïöùÿÿÿÿ8Åþý“û.
k java:S100"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(¾ð¸â8Åþý“û.
~
java:S1192Ì"`Define a constant instead of duplicating this literal "classFeature = ? and credit < ?" 4 times.(Ìôœ±8„ª·…û.
w
java:S2293é"YReplace the type specification in this constructor call with the diamond operator ("<>").(ùãÒ<C3A3>8Åþý“û.
V java:S110"<This class has 9 parents which is greater than 5 authorized.(û©Ÿ™úÿÿÿÿ
f
java:S1192Þ"HDefine a constant instead of duplicating this literal "ccredit" 5 times.(í¾•î8„ª·…û.
{
java:S2293]"YReplace the type specification in this constructor call with the diamond operator ("<>").(ÖÔ¾Ÿúÿÿÿÿ8í¾Ä…û.
w
java:S2293ø"YReplace the type specification in this constructor call with the diamond operator ("<>").(ùãÒ<C3A3>8Åþý“û.

java:S1192<"nDefine a constant instead of duplicating this literal "å<>生未知错误,显示详细信æ<C2A1>¯å¤±è´¥" 3 times.(…“Çü8󟌔û.
a
java:S1854ˆ">Remove this useless assignment to local variable "updateUser".(¶©Íµÿÿÿÿÿ8´æƒ”û.
R
java:S1481ˆ"/Remove this unused "updateUser" local variable.(¶©Íµÿÿÿÿÿ8´æƒ”û.
w
java:S2293Ù"YReplace the type specification in this constructor call with the diamond operator ("<>").(ùãÒ<C3A3>8Åþý“û.

@ -0,0 +1,2 @@
V java:S110"<This class has 9 parents which is greater than 5 authorized.(À¬” ÿÿÿÿÿ

@ -0,0 +1,34 @@
x java:S116"\Rename this field "TextViewUserMajor" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ÊŠ ¾8Œ©ÄÛú.

java:S1450"rRemove the "TextViewUserCreditNotTaken_Military" field and declare it as a local variable in the relevant methods.(ɽôÛûÿÿÿÿ8»ôÊÛú.
ˆ java:S116"lRename this field "TextViewUserCreditNotTaken_Nature" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ù·…Ê8Œ©ÄÛú.
 java:S116 "eRename this field "TextViewUserSelectedCourse" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Ééí°ÿÿÿÿÿ8ð±Üú.
w
java:S1450'"ZRemove the "listAdapter" field and declare it as a local variable in the relevant methods.(Ï”¨·8ûÛú.
w
java:S2293§"YReplace the type specification in this constructor call with the diamond operator ("<>").(ùãÒ<C3A3><38>óÜú.
<EFBFBD>
java:S1450"rRemove the "TextViewUserCreditNotTaken_Humanity" field and declare it as a local variable in the relevant methods.(ã‚æÅÍÛú.
u
java:S1450&"SRemove the "item" field and declare it as a local variable in the relevant methods.(•²<E280A2>µüÿÿÿÿ8ûÛú.
<EFBFBD> java:S116"oRename this field "TextViewUserCreditNotTaken_Political" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Ìêݧøÿÿÿÿ8Œ©ÄÛú.
<EFBFBD>
java:S1450"pRemove the "TextViewUserCreditNotTaken_Nature" field and declare it as a local variable in the relevant methods.(ù·…Ê8ÕÜËÛú.
z
java:S1450"]Remove the "TextViewUserID" field and declare it as a local variable in the relevant methods.(ÁØ”Ÿ8²èÈÛú.

java:S1450"sRemove the "TextViewUserCreditNotTaken_Political" field and declare it as a local variable in the relevant methods.(Ìêݧøÿÿÿÿ8„¸ÌÛú.
V java:S110"<This class has 9 parents which is greater than 5 authorized.(¬«ÇÎýÿÿÿÿ
<EFBFBD>
java:S1450"_Remove the "TextViewUserName" field and declare it as a local variable in the relevant methods.(³ÄÍÄÿÿÿÿÿ8²èÈÛú.
u java:S116"YRename this field "TextViewUserID" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ÁØ”Ÿ8Œ©ÄÛú.
<EFBFBD> java:S116"nRename this field "TextViewUserCreditNotTaken_Military" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ɽôÛûÿÿÿÿ8Œ©ÄÛú.
}
java:S1450"`Remove the "TextViewUserMajor" field and declare it as a local variable in the relevant methods.(ÊŠ ¾8²èÈÛú.
Š java:S116"nRename this field "TextViewUserCreditNotTaken_Humanity" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ã‚æÅ8Œ©ÄÛú.
p java:S100Š"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(à€Ë¾þÿÿÿÿ<38>óÜú.
| java:S116"[Rename this field "TextViewUserName" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(³ÄÍÄÿÿÿÿÿ8ò²ÃÛú.
c
java:S1192{"FDefine a constant instead of duplicating this literal "cname" 3 times.(öÂö<38>óÜú.
| java:S116!"[Rename this field "ButtonDropCourse" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(¶Ç³üÿÿÿÿ8¢•¸Üú.

@ -0,0 +1,52 @@
H
java:S1128"-Remove this unused import 'android.Manifest'.(¦øïŽúÿÿÿÿ
H
java:S1128"-Remove this unused import 'android.os.Build'.(ãǤÚýÿÿÿÿ
U
java:S1128":Remove this unused import 'java.io.FileNotFoundException'.(·î™<C3AE>ùÿÿÿÿ
O
java:S1128"9Remove this unused import 'android.annotation.TargetApi'.(¥Îì‘
O
java:S1128 "4Remove this unused import 'android.database.Cursor'.(ŽÔäåúÿÿÿÿ
>
java:S1068)"(Remove this unused "btn1" private field.(áë†Ü
G
java:S1128",Remove this unused import 'android.net.Uri'.(òêû‘ýÿÿÿÿ
S
java:S1128
">Remove this unused import 'android.content.SharedPreferences'.(íÎÉr
S
java:S1128"8Remove this unused import 'android.content.ContentUris'.(Źä­ùÿÿÿÿ
?
java:S1128")Remove this unused import 'java.io.File'.(†Ð¥Å
n
java:S1450("SRemove the "back" field and declare it as a local variable in the relevant methods.(ƒøè£ùÿÿÿÿ
K
java:S1128"0Remove this unused import 'java.io.IOException'.(ªº»Úýÿÿÿÿ
Q java:S110""<This class has 9 parents which is greater than 5 authorized.(ʨ¹<C2A8>
U
java:S1128"?Remove this unused import 'android.provider.DocumentsContract'.(匎Ò
m
java:S1450'"WRemove the "register" field and declare it as a local variable in the relevant methods.(†çæ½
V
java:S1128";Remove this unused import 'android.graphics.BitmapFactory'.(âàºÍûÿÿÿÿ
F
java:S1068*"+Remove this unused "picture" private field.(ôŽ«”úÿÿÿÿ
N
java:S1128"8Remove this unused import 'android.provider.MediaStore'.(ãçšþ
A
java:S1481M"+Remove this unused "values" local variable.(ϱøæ
I
java:S1128"4Remove this unused import 'android.graphics.Bitmap'.(¾ì<C2BE>
>
java:S1068)"(Remove this unused "btn2" private field.(áë†Ü
8
java:S1659)""Declare "btn2" on a separate line.(áë†Ü
Y
java:S1128 ">Remove this unused import 'android.content.pm.PackageManager'.(€®¥õÿÿÿÿÿ
P
java:S1854M":Remove this useless assignment to local variable "values".(ϱøæ
^
java:S1128 "CRemove this unused import 'android.database.sqlite.SQLiteDatabase'.(ãµèÈùÿÿÿÿ
k java:S117N"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(²ª¶¹úÿÿÿÿ

@ -0,0 +1,23 @@
c
java:S1192u"FDefine a constant instead of duplicating this literal "uname" 3 times.(·äùã8Ï»¾Öú.
X java:S110"<This class has 9 parents which is greater than 5 authorized.(öòÚŒ8Åí¢Õú.
w
java:S1450%"ZRemove the "listAdapter" field and declare it as a local variable in the relevant methods.(Ï”¨·<38>¡Õú.
w
java:S2293¿"YReplace the type specification in this constructor call with the diamond operator ("<>").(ùãÒ<C3A3><38>´Öú.
i java:S101"MRename this class name to match the regular expression '^[A-Z][a-zA-Z0-9]*$'.(öòÚŒ<38>¡Õú.
{
java:S22939"YReplace the type specification in this constructor call with the diamond operator ("<>").(ÖÔ¾Ÿúÿÿÿÿ<38>¡Õú.
w
java:S1450"URemove the "select" field and declare it as a local variable in the relevant methods.(®ùç¶þÿÿÿÿ<38>¡Õú.
o
java:S1450"RRemove the "add" field and declare it as a local variable in the relevant methods.(‚ò ¶<38>¡Õú.
E
java:S1905")Remove this unnecessary cast to "String".(«žÓo8ˆ©ÉÖú.
E
java:S1905~")Remove this unnecessary cast to "String".(Š¨ä^8äôÇÖú.
u
java:S1450$"SRemove the "item" field and declare it as a local variable in the relevant methods.(•²<E280A2>µüÿÿÿÿ8•ñ¼Õú.
K
java:S1905}")Remove this unnecessary cast to "String".(ç†Üòúÿÿÿÿ8£©ÇÖú.

@ -0,0 +1,23 @@
P
app/src/main/AndroidManifest.xml,8\c\8c55c3ccc257e5907959013f99656e4c8ec3903e

Papp/src/main/java/com/example/softengineering_selectivecourse/LoginActivity.java,7\7\77becc57a2ca9e703b8e6cbda6b052b6473df28b
w
Gapp/src/main/java/com/example/softengineering_selectivecourse/User.java,3\1\312e7b7c35c2dc14d5deccaa212fd733c0443a84

Wapp/src/main/java/com/example/softengineering_selectivecourse/User_ManagerActivity.java,b\7\b786dc55a2bfe8b15ba666f050505789b29d48ba
Ś
\app/src/main/java/com/example/softengineering_selectivecourse/PersonalBasicInfoActivity.java,b\5\b5fc2407afc1be8c213f2b4c313bad593688c0e2
<EFBFBD>
Sapp/src/main/java/com/example/softengineering_selectivecourse/RegisterActivity.java,b\6\b686a512c2435388bcdce171b5a75e28ac952920

Yapp/src/main/java/com/example/softengineering_selectivecourse/Course_ManagerActivity.java,5\9\5926027da99b6a336fecb3ba9ba36f5fbcf1c959
Ś
\app/src/main/java/com/example/softengineering_selectivecourse/CourseRecommendedActivity.java,8\4\84d1e3e0533b35b01f34b2bc6c4a5cabc3b9eded
y
Iapp/src/main/java/com/example/softengineering_selectivecourse/Course.java,0\a\0a3ec6a74641d91051bb8ffb2bfb8f7d10b30480
Š
Zapp/src/main/java/com/example/softengineering_selectivecourse/CourseSelectingActivity.java,5\9\597998839ff8e48a7e7ea9cd947efb862a54fffb
Š
Zapp/src/main/java/com/example/softengineering_selectivecourse/CourseBasicInfoActivity.java,9\0\90b87721d50a394070e56f8cf6c0f808c0ffa791

@ -0,0 +1,40 @@
apply plugin: 'com.android.application'
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"
defaultConfig {
applicationId "com.example.softengineering_selectivecourse"
minSdkVersion 14
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.annotation:annotation:1.1.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
implementation 'org.litepal.android:core:1.5.1'
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:27.0.1'
}

@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

@ -0,0 +1,26 @@
package com.example.softengineering_selectivecourse;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
assertEquals("com.example.softengineering_selectivecourse", appContext.getPackageName());
}
}

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.softengineering_selectivecourse">
<application
android:name="org.litepal.LitePalApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".CourseBasicInfoActivity" />
<activity android:name=".CourseSelectingActivity" />
<activity android:name=".CourseRecommendedActivity" />
<activity android:name=".PersonalBasicInfoActivity" />
<activity android:name=".User_ManagerActivity" />
<activity android:name=".Course_ManagerActivity" />
<activity android:name=".RegisterActivity" />
<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" ?>
<litepal>
<dbname value = "CourseSelctionData"></dbname>
<version value = "6"></version>
<list>
<mapping class="com.example.softengineering_selectivecourse.User"></mapping>
<mapping class="com.example.softengineering_selectivecourse.Course"></mapping>
<mapping class="com.example.softengineering_selectivecourse.Comments"></mapping>
</list>
</litepal>

@ -0,0 +1,40 @@
package com.example.softengineering_selectivecourse;
import org.litepal.crud.DataSupport;
public class Comments extends DataSupport {
private int id;
private String comments;
private String provider;
private String courseName;
public String getComments() {
return comments;
}
public void setComments(String comments) {
this.comments = comments;
}
public int getId() {
return id;
}
public String getCourseName() {
return courseName;
}
public String getProvider() {
return provider;
}
public void setId(int id) {
this.id = id;
}
public void setProvider(String provider) {
this.provider = provider;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
}

@ -0,0 +1,126 @@
package com.example.softengineering_selectivecourse;
import org.litepal.crud.DataSupport;
import java.util.ArrayList;
public class Course extends DataSupport {
private int id;
private String name;
private String teacher;
private String classFeature;
private int credit;
private int classtime;
private int classroom;
private int NumOfCourseSelected;
private int NumOfCourseNeeded;
private String brief_introduction;
private ArrayList<com.example.softengineering_selectivecourse.User> selected = new ArrayList<com.example.softengineering_selectivecourse.User>();
private ArrayList<Comments> comments = new ArrayList<Comments>();
public int getClassroom() {
return classroom;
}
public void setClassroom(int classroom) {
this.classroom = classroom;
}
// private ArrayList<userIdentification> numOfStuSelected= new ArrayList<userIdentification>();
// private ArrayList<Integer> Comments = new ArrayList<Integer>();
// public class userIdentification{
// private int id;
// private String name;
// }
public ArrayList<com.example.softengineering_selectivecourse.Comments> getComments() {
return comments;
}
public String getClassFeature() {
return classFeature;
}
public void setClassFeature(String classFeature) {
this.classFeature = classFeature;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public ArrayList<com.example.softengineering_selectivecourse.User> getSelected() {
return selected;
}
public int getClasstime() {
return classtime;
}
public int getCredit() {
return credit;
}
public int getNumOfCourseNeeded() {
return NumOfCourseNeeded;
}
public int getNumOfCourseSelected() {
return NumOfCourseSelected;
}
public String getBrief_introduction() {
return brief_introduction;
}
public String getTeacher() {
return teacher;
}
public void setComments(ArrayList<com.example.softengineering_selectivecourse.Comments> comments) {
this.comments = comments;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setBrief_introduction(String brief_introduction) {
this.brief_introduction = brief_introduction;
}
public void setClasstime(int classtime) {
this.classtime = classtime;
}
public void setCredit(int credit) {
this.credit = credit;
}
public void setNumOfCourseNeeded(int numOfCourseNeeded) {
NumOfCourseNeeded = numOfCourseNeeded;
}
public void setNumOfCourseSelected(int numOfCourseSelected) {
NumOfCourseSelected = numOfCourseSelected;
}
public void setSelected(ArrayList<com.example.softengineering_selectivecourse.User> selected) {
this.selected = selected;
}
public void setTeacher(String teacher) {
this.teacher = teacher;
}
}

@ -0,0 +1,190 @@
package com.example.softengineering_selectivecourse;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import org.litepal.crud.DataSupport;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CourseBasicInfoActivity extends AppCompatActivity {
private TextView courseFeature;
private TextView courseName;
private TextView courseCredit;
private TextView courseTeacher;
private TextView courseMaxStudents;
private TextView courseClassroom;
private TextView courseBriefIntroduce;
private Button courseCommentDelete;
private Button courseCommentUpdate;
private Button courseAdd;
Course selCourse;
String userName;
Comments selComment;
private EditText courseComment;
private Button courseCommentAdd;
private ListView lv;
private ArrayList<Map<String,Object>> data;//所有记录
private Map<String,Object> item; //每一条记录
private SimpleAdapter listAdapter; //适配器
View view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_course_basic_info);
Intent intent = getIntent();
userName = intent.getStringExtra("name");
long courseId = intent.getLongExtra("courseId", 0);
List<Course> courses = DataSupport.where("id = ?", Long.toString(courseId)).find(Course.class);
courseFeature = (TextView) findViewById(R.id.couseDetailClassRight);
courseName = (TextView) findViewById(R.id.courseDetailNameRight);
courseCredit = (TextView) findViewById(R.id.courseDetailCreditRight);
courseTeacher = (TextView) findViewById(R.id.courseDetailTeacherRight);
courseMaxStudents = (TextView) findViewById(R.id.courseDetailStuNeededRight);
courseClassroom = (TextView) findViewById(R.id.courseDetailClassRoomRight);
courseBriefIntroduce = (TextView) findViewById(R.id.courseDetailBriefIntroduceRight);
courseCommentDelete = (Button) findViewById(R.id.courseDetailcommentDelete);
courseCommentUpdate = (Button) findViewById(R.id.courseDetailcommentUpdate);
courseAdd = (Button) findViewById(R.id.courseDetailAdd);
data = new ArrayList<Map<String, Object>>();//将data实例化
lv = (ListView) findViewById(R.id.lvDetail);
if(courses.isEmpty())
{
Toast.makeText(CourseBasicInfoActivity.this, "no course for this", Toast.LENGTH_SHORT);
}
else
{
selCourse = courses.get(0);
courseFeature.setText(selCourse.getClassFeature());
courseName.setText(selCourse.getName());
courseCredit.setText(Integer.toString(selCourse.getCredit()));
courseTeacher.setText(selCourse.getTeacher());
courseMaxStudents.setText(Integer.toString(selCourse.getNumOfCourseNeeded()));
courseClassroom.setText(Integer.toString(selCourse.getClassroom()));
courseBriefIntroduce.setText(selCourse.getBrief_introduction());
dbFindAll();
}
//
dbFindAll();
courseComment = (EditText) findViewById(R.id.courseDetailCommentInfo);
courseCommentAdd = (Button) findViewById(R.id.courseDetailComment);
courseCommentAdd.setEnabled(true);
courseCommentAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbCommentAdd(courseComment.getText().toString().trim());
dbFindAll();
courseComment.setText("");
}
});
//鼠标点击数据可以获取相对应的数据存入Map中
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Map<String,Object> listItem = (Map<String,Object>)lv.getItemAtPosition(position);
courseComment.setText((String)listItem.get("ucommentInfo"));
// List<Course> courses = DataSupport.where("name = ? and id = ?", inputName.getText().toString(), listItem.get("cid").toString() ).find(Course.class);
List<Comments> commentset = DataSupport.where("id = ? and provider = ?", listItem.get("uid").toString(), listItem.get("uprovider").toString()).find(Comments.class);
if(commentset.isEmpty())
{
Toast.makeText(CourseBasicInfoActivity.this,"you are not the provider of the comment",Toast.LENGTH_SHORT).show();
}
else
{
Comments commentItem = commentset.get(0);
selComment = commentItem;
courseCommentDelete.setEnabled(true);
courseCommentUpdate.setEnabled(true);
dbFindAll();
}
}
});
courseCommentDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbDelete();
courseCommentDelete.setEnabled(false);
courseCommentUpdate.setEnabled(false);
dbFindAll();
}
});
courseCommentUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbUpdate();
courseCommentUpdate.setEnabled(false);
courseCommentDelete.setEnabled(false);
dbFindAll();
}
});
}
private void dbDelete()
{
DataSupport.deleteAll(Comments.class, "id = ?", Long.toString(selComment.getId()) );
}
private void dbUpdate()
{
Comments comment = new Comments();
comment.setComments(courseComment.getText().toString().trim());
comment.updateAll("id = ?", Long.toString(selComment.getId()));
}
private void dbCommentAdd(String comment)
{
Comments commentForCourse = new Comments();
commentForCourse.setComments(comment);
commentForCourse.setCourseName(selCourse.getName());
commentForCourse.setProvider(userName);
commentForCourse.save();
}
private void dbFindAll() {
data.clear();//防止重复添加,每次清空
List<Comments> commentset = DataSupport.where("courseName = ?", selCourse.getName()).find(Comments.class);
if(commentset.isEmpty())
{
Toast.makeText(CourseBasicInfoActivity.this, "comments is empty", Toast.LENGTH_SHORT).show();
}
else{
int num = 1;
for (Comments commentItem : commentset) {
item = new HashMap<String, Object>();
item.put("id", num);
item.put("uid", commentItem.getId());
item.put("ucommentInfo", commentItem.getComments());
item.put("uprovider", commentItem.getProvider());
data.add(item);
num++;
}
showList();
}
}
//显示所有的记录
public void showList () {
listAdapter = new SimpleAdapter(this, data,
R.layout.comment_sqlist,
new String[]{"id","uid", "ucommentInfo", "uprovider"},
new int[]{R.id.textCommentID1, R.id.textCommentCID1, R.id.textCommentInfo1, R.id.textCommentProvider1});
lv.setAdapter(listAdapter);
}
}

@ -0,0 +1,289 @@
package com.example.softengineering_selectivecourse;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import org.litepal.crud.DataSupport;
import org.litepal.util.DBUtility;
import org.w3c.dom.Text;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CourseRecommendedActivity extends AppCompatActivity {
private TextView textClikedCourse;
private Button attendCourse;
private Button getCourseDetails;
private ListView lv;
private ArrayList<Map<String,Object>> data;//所有记录
private Map<String,Object> item; //每一条记录
private SimpleAdapter listAdapter; //适配器
View view;
long selCourseId;
long selUserId;
String selUserName;
String selCourseName;
Course selCourse;
String courseTable = DBUtility.getTableNameByClassName(Course.class.getName());
String userTable = DBUtility.getTableNameByClassName(User.class.getName());
String commentTable = DBUtility.getTableNameByClassName(Comments.class.getName());
// classroomTable = DBUtility.getTableNameByClassName(Classroom.class.getName());
// studentTable = DBUtility.getTableNameByClassName(Student.class.getName());
// teacherTable = DBUtility.getTableNameByClassName(Teacher.class.getName());
// idcardTable = DBUtility.getTableNameByClassName(IdCard.class.getName());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_course_recommended);
Intent intent = getIntent();
final String userName = intent.getStringExtra("name");
List<User> users = DataSupport.where("name = ?", userName).find(User.class);
if (users.isEmpty())
{
Toast.makeText(CourseRecommendedActivity.this,"发生未知错误,显示详细信息失败",Toast.LENGTH_SHORT).show();
}
else
{
User user = users.get(0);
selUserId = user.getId();
selUserName = user.getName();
}
getCourseDetails = (Button) findViewById(R.id.buttonCourseRecommendedQueryDetail);
getCourseDetails.setEnabled(false);
getCourseDetails.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Intent intent = new Intent();
// intent.putExtra("name", userName);
// intent.putExtra("courseId", selCourseId);
// intent.setClass(CourseRecommendedActivity.this, CourseBasicInfoActivity.class);
// startActivity(intent);
Intent intent = new Intent();
intent.putExtra("name", userName);
intent.putExtra("courseId", selCourseId);
intent.setClass(CourseRecommendedActivity.this, CourseBasicInfoActivity.class);
startActivity(intent);
CourseRecommendedActivity.this.finish();
}
});
lv = (ListView) findViewById(R.id.lv5);
data = new ArrayList<Map<String, Object>>();//将data实例化
dbFindAll(); //查询的方法//查询
attendCourse = (Button) findViewById(R.id.buttonCourseRecommendedSelect);
attendCourse.setEnabled(false);
attendCourse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CourseAdd();
dbFindAll();
textClikedCourse.setText("");
attendCourse.setEnabled(false);
Toast.makeText(CourseRecommendedActivity.this,"选课成功!",Toast.LENGTH_SHORT).show();
}
});
textClikedCourse = (TextView) findViewById(R.id.textCourseRecommendedClikedCourse);
//
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Map<String,Object> listItem = (Map<String,Object>)lv.getItemAtPosition(position);
textClikedCourse.setText((String)listItem.get("cname"));
List<Course> courses = DataSupport.where("name = ? and id = ?", (String)listItem.get("cname"), listItem.get("cid").toString() ).find(Course.class);
if(courses.isEmpty())
{
Toast.makeText(CourseRecommendedActivity.this,"can't find the course, some wrong happened",Toast.LENGTH_SHORT).show();
}
else {
Course course = courses.get(0);
selCourse = course;
selCourseId = course.getId();
selCourseName = course.getName();
attendCourse.setEnabled(true);
getCourseDetails.setEnabled(true);
}
}
});
}
private void CourseAdd()
{
User updateUser = new User();
List<User> users = DataSupport.where("id = ? and name = ?", Long.toString(selUserId), selUserName).find(User.class);
if (users.isEmpty())
{
Toast.makeText(CourseRecommendedActivity.this,"发生未知错误,显示详细信息失败",Toast.LENGTH_SHORT).show();
}
else {
User user = users.get(0);
user.getCourse_selected().add(selCourse);
if(user.save())
{
List<User> userss = DataSupport.where("id = ? and name = ?", Long.toString(selUserId), selUserName).find(User.class);
User xuser = userss.get(0);
List<Course> xcourse = xuser.getCourse_selected();
if(xcourse.isEmpty())
{
Log.d("CourseRecommended", Integer.toString(xcourse.size()));
}
}
else
{
Log.d("CourseRecommended", "update lose");
}
// if (selectedCourse.isEmpty())
// {
// Log.d("CourseRecommended", "the selectedCourse is empty");
// }
// else
// {
// User userUpdate = new User();
// userUpdate.setCourse_selected(selectedCourse);
//// for (Course courseHad: selectedCourse)
//// {
//// userUpdate.getCourse_selected().add(courseHad);
//// }
//// userUpdate.getCourse_selected().add(selCourse);
//
// userUpdate.updateAll("name = ? and id = ? ", selUserName, Long.toString(selUserId));
// List<User> userss = DataSupport.where("id = ? and name = ?", Long.toString(selUserId), selUserName).find(User.class);
// User xuser = userss.get(0);
// Log.d("CourseRecommended", xuser.getName());
// ArrayList<Course> tt = xuser.getCourse_selected();
// if(tt.isEmpty())
// {
// Log.d("CourseRecommended", "the tt is empty");
// }
// else
// {
// Log.d("CourseRecommended", tt.get(0).getName());
// }
// }
}
}
private void dbFindAll(){
data.clear();//防止重复添加,每次清空
List<User> users = DataSupport.where("id = ? and name = ?", Long.toString(selUserId), selUserName).find(User.class);
if (users.isEmpty())
{
Toast.makeText(CourseRecommendedActivity.this,"发生未知错误,显示详细信息失败",Toast.LENGTH_SHORT).show();
}
else
{
User user = users.get(0);
int militaryNotTaken = user.getMilitary_class_NotTaken();
int natureNotTaken = user.getNaturalScience_class_NotTaken();
int politicalNotTaken = user.getPolitical_class_NotTaken();
int humanityNotTaken = user.getHumanity_class_NotTaken();
List<Course> courseMilitary = DataSupport.where("classFeature = ? and credit < ?", "Military", Integer.toString(militaryNotTaken)).find(Course.class);
List<Course> courseNature = DataSupport.where("classFeature = ? and credit < ?", "Nature", Integer.toString(natureNotTaken)).find(Course.class);
List<Course> coursePolitical = DataSupport.where("classFeature = ? and credit < ?", "Political", Integer.toString(politicalNotTaken)).find(Course.class);
List<Course> courseHumanity = DataSupport.where("classFeature = ? and credit < ?", "Humanity", Integer.toString(humanityNotTaken)).find(Course.class);
// List<Course> recommendedCourse = ;//TO DO 没有去除已经选择的课程,这是一个重要的不足
// ArrayList<Course> courses = user.getCourse_selected();
int num = 1;
for (Course course: courseMilitary)
{
int uid = course.getId();
String uclass = course.getClassFeature();
String uname = course.getName();
int ucredit = course.getCredit();
item = new HashMap<String, Object>();
item.put("id", num);
item.put("cid", uid);
item.put("cclass", uclass);
item.put("cname", uname);
item.put("ccredit", ucredit);
data.add(item);
num++;
}
for (Course course: courseNature)
{
int uid = course.getId();
String uclass = course.getClassFeature();
String uname = course.getName();
int ucredit = course.getCredit();
item = new HashMap<String, Object>();
item.put("id", num);
item.put("cid", uid);
item.put("cclass", uclass);
item.put("cname", uname);
item.put("ccredit", ucredit);
data.add(item);
num++;
}
for (Course course: coursePolitical)
{
int uid = course.getId();
String uclass = course.getClassFeature();
String uname = course.getName();
int ucredit = course.getCredit();
item = new HashMap<String, Object>();
item.put("id", num);
item.put("cid", uid);
item.put("cclass", uclass);
item.put("cname", uname);
item.put("ccredit", ucredit);
data.add(item);
num++;
}
for (Course course: courseHumanity)
{
int uid = course.getId();
String uclass = course.getClassFeature();
String uname = course.getName();
int ucredit = course.getCredit();
item = new HashMap<String, Object>();
item.put("id", num);
item.put("cid", uid);
item.put("cclass", uclass);
item.put("cname", uname);
item.put("ccredit", ucredit);
data.add(item);
num++;
}
}
showList();
}
//显示所有的记录
public void showList(){
listAdapter = new SimpleAdapter(this,data,
R.layout.sqlist,
new String[]{"id", "cid", "cclass", "cname", "ccredit"},
new int[]{R.id.textID1, R.id.textCID1, R.id.textCourseClass1, R.id.textCourseName1, R.id.textCredit1});
lv.setAdapter(listAdapter);
}
}

@ -0,0 +1,268 @@
package com.example.softengineering_selectivecourse;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import org.litepal.crud.DataSupport;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CourseSelectingActivity extends AppCompatActivity {
private TextView siftingCourse;
private Spinner spinnerclass;
private Spinner spinnercredit;
private Spinner spinnerclassroom;
private Spinner spinnerSift;
private EditText editTextTeacher;
private String courseFeature;
private String courseCredit;
private String courseClassroom;
private String courseTeacher;
private String courseSift = new String();
private Button Sifting;
private Button courseAdd;
private Button getDetail;
private ListView lv;
private ArrayList<Map<String,Object>> data;//所有记录
private Map<String,Object> item; //每一条记录
private SimpleAdapter listAdapter; //适配器
View view;
long selId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_course_selecting);
Intent intent = getIntent();
final String userName = intent.getStringExtra("name");
spinnerclass=(Spinner) findViewById(R.id.spinnerCourseSelectingFeature);
spinnercredit=(Spinner) findViewById(R.id.spinnerCourseSelectingCredit);
spinnerclassroom = (Spinner)findViewById(R.id.spinnerCourseSelectingClassRoom);
spinnerSift = (Spinner) findViewById(R.id.spinnerCourseSelectingselItem);
editTextTeacher = (EditText) findViewById(R.id.EditCourseSelectingTeacher);
siftingCourse = (TextView) findViewById(R.id.textCourseSelectingClikedCourse);
spinnerclass.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
String[] courseFeatureItem = getResources().getStringArray(R.array.classOrder);
if (pos == 0)
{
courseFeature = "";
}
else{
courseFeature = courseFeatureItem[pos];
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
spinnercredit.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
String[] courseCreditItem = getResources().getStringArray(R.array.classCredit);
if (pos == 0)
{
courseCredit = "";
}
else{
courseCredit = courseCreditItem[pos];
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
spinnerclassroom.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
String[] courseClassroomItem = getResources().getStringArray(R.array.classClassroom);
if (pos == 0)
{
courseFeature = "";
}
else{
courseFeature = courseClassroomItem[pos];
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
spinnerSift.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
String[] courseSifts = getResources().getStringArray(R.array.classSift);
courseSift = courseSifts[pos];
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
courseTeacher = editTextTeacher.getText().toString();
Sifting = (Button) findViewById(R.id.buttonCourseSelectingSifting);
Sifting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbFindAll();
}
});
courseAdd = (Button) findViewById(R.id.buttonCourseSelectSelect);
courseAdd.setEnabled(false);
courseAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CourseAdd();
dbFindAll();
siftingCourse.setText("");
courseAdd.setEnabled(false);
Toast.makeText(CourseSelectingActivity.this,"选课成功!",Toast.LENGTH_SHORT).show();
}
});
getDetail = (Button) findViewById(R.id.buttonCourseSelectingQueryDetail);
getDetail.setEnabled(false);
getDetail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.putExtra("name", userName);
intent.putExtra("courseId", selId);
intent.setClass(CourseSelectingActivity.this, CourseBasicInfoActivity.class);
startActivity(intent);
CourseSelectingActivity.this.finish();
}
});
lv = (ListView) findViewById(R.id.lv6);
data = new ArrayList<Map<String, Object>>();//将data实例化
dbFindAll(); //查询的方法//查询
//鼠标点击数据可以获取相对应的数据存入Map中
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Map<String,Object> listItem = (Map<String,Object>)lv.getItemAtPosition(position);
siftingCourse.setText((String)listItem.get("cname"));
List<Course> courses = DataSupport.where("name = ? and id = ?", siftingCourse.getText().toString(), listItem.get("cid").toString() ).find(Course.class);
if(courses.isEmpty())
{
Toast.makeText(CourseSelectingActivity.this,"can't find the course, some wrong happened",Toast.LENGTH_SHORT).show();
}
else
{
Course course = courses.get(0);
selId = course.getId();
siftingCourse.setText((String)course.getName());
courseAdd.setEnabled(true);
getDetail.setEnabled(true);
}
}
});
}
private void CourseAdd()
{
}
private void dbFindAll () {
data.clear();//防止重复添加,每次清空
List<Course> courses;
if (courseSift.equals("classFeature") && !courseFeature.isEmpty())
{
courses = DataSupport.where(courseSift + "= ?", courseFeature).find(Course.class);
Toast.makeText(CourseSelectingActivity.this, courseSift+" with " + courseFeature, Toast.LENGTH_SHORT).show();
}
else if (courseSift.equals("credit") && !courseCredit.isEmpty())
{
courses = DataSupport.where(courseSift + "= ?", courseCredit).find(Course.class);
Toast.makeText(CourseSelectingActivity.this, courseSift+" with " + courseCredit, Toast.LENGTH_SHORT).show();
}
else if (courseSift.equals("classroom") && !courseClassroom.isEmpty())
{
courses = DataSupport.where(courseSift + "= ?", courseClassroom).find(Course.class);
Toast.makeText(CourseSelectingActivity.this, courseSift+" with " + courseClassroom, Toast.LENGTH_SHORT).show();
}
else if(courseSift.equals("teacher") && !courseTeacher.isEmpty())
{
courses = DataSupport.where(courseSift + "= ?", courseTeacher).find(Course.class);
Toast.makeText(CourseSelectingActivity.this, courseSift+" with " +courseTeacher, Toast.LENGTH_SHORT).show();
}
else
{
courses = DataSupport.findAll(Course.class);
Toast.makeText(CourseSelectingActivity.this, "without Sifting", Toast.LENGTH_SHORT).show();
}
if(courses.isEmpty())
{
Toast.makeText(CourseSelectingActivity.this, "No course satisfy the sifting item", Toast.LENGTH_SHORT).show();
}
else {
int num = 1;
for (Course course : courses) {
int uid = course.getId();
String uclass = course.getClassFeature();
String uname = course.getName();
int ucredit = course.getCredit();
item = new HashMap<String, Object>();
item.put("id", num);
item.put("cid", uid);
item.put("cclass", uclass);
item.put("cname", uname);
item.put("ccredit", ucredit);
data.add(item);
num++;
}
showList();
}
}
//显示所有的记录
public void showList () {
listAdapter = new SimpleAdapter(this, data,
R.layout.sqlist,
new String[]{"id", "cid", "cclass", "cname", "ccredit"},
new int[]{R.id.textID1, R.id.textCID1, R.id.textCourseClass1, R.id.textCourseName1, R.id.textCredit1});
lv.setAdapter(listAdapter);
}
}

@ -0,0 +1,272 @@
package com.example.softengineering_selectivecourse;
import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import org.litepal.crud.DataSupport;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Course_ManagerActivity extends AppCompatActivity {
private EditText inputclass;
private EditText inputName;
private EditText inputcredit;
private EditText professor;
private EditText studentNeed;
private EditText editClassRoom;
private EditText briefIntroduce;
private Button select;
private Button add;
private Button delete;
private Button update;
private Button User;
private ListView lv;
private ArrayList<Map<String,Object>> data;//所有记录
private Map<String,Object> item; //每一条记录
private SimpleAdapter listAdapter; //适配器
View view;
long selId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_course__manager);
inputclass = (EditText) findViewById(R.id.editClass);
inputName = (EditText) findViewById(R.id.inputCouseName);
inputcredit = (EditText) findViewById(R.id.editCredit);
professor = (EditText) findViewById(R.id.editTeacher);
studentNeed = (EditText) findViewById(R.id.editStuNeeded);
briefIntroduce = (EditText) findViewById(R.id.editBriefIntroduce);
editClassRoom = (EditText) findViewById(R.id.editClassRoom);
select = (Button) findViewById(R.id.buttonQuery);
add = (Button) findViewById(R.id.buttonAdd);
delete = (Button) findViewById(R.id.buttonDelete);
update = (Button) findViewById(R.id.buttonUpdate);
User = (Button) findViewById(R.id.userManager);
lv = (ListView) findViewById(R.id.lv);
data = new ArrayList<Map<String, Object>>();//将data实例化
dbFindAll(); //查询的方法//查询
select.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dbFindAll();
}
});
User.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setClass(Course_ManagerActivity.this, User_ManagerActivity.class);
startActivity(intent);
}
});
//添加
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dbAdd();
dbFindAll();
inputclass.setText("");
inputName.setText("");
inputcredit.setText("");
professor.setText("");
studentNeed.setText("");
editClassRoom.setText("");
briefIntroduce.setText("");
}
});
//删除
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dbDelete();
dbFindAll();
inputclass.setText("");
inputName.setText("");
inputcredit.setText("");
professor.setText("");
studentNeed.setText("");
editClassRoom.setText("");
briefIntroduce.setText("");
delete.setEnabled(false);
update.setEnabled(false);
Toast.makeText(Course_ManagerActivity.this,"删除成功!",Toast.LENGTH_SHORT).show();
}
});
//修改
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dbUpdate();
dbFindAll();
inputclass.setText("");
inputName.setText("");
inputcredit.setText("");
professor.setText("");
studentNeed.setText("");
editClassRoom.setText("");
briefIntroduce.setText("");
delete.setEnabled(false);
update.setEnabled(false);
inputName.setEnabled(true);
Toast.makeText(Course_ManagerActivity.this,"修改成功!",Toast.LENGTH_SHORT).show();
}
});
/*1.
2.
3.
4.*/
//鼠标点击数据可以获取相对应的数据存入Map中
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Map<String,Object> listItem = (Map<String,Object>)lv.getItemAtPosition(position);
inputName.setText((String)listItem.get("cname"));
List<Course> courses = DataSupport.where("name = ? and id = ?", inputName.getText().toString(), listItem.get("cid").toString() ).find(Course.class);
if(courses.isEmpty())
{
Toast.makeText(Course_ManagerActivity.this,"can't find the course, some wrong happened",Toast.LENGTH_SHORT).show();
}
else
{
Course course = courses.get(0);
selId = course.getId();
inputclass.setText((String)course.getClassFeature());
inputName.setText((String)course.getName());
inputcredit.setText(Integer.toString(course.getCredit()));
professor.setText(course.getTeacher());
studentNeed.setText(Integer.toString(course.getNumOfCourseNeeded()));
editClassRoom.setText(Integer.toString(course.getClassroom()));
briefIntroduce.setText(course.getBrief_introduction());
delete.setEnabled(true);
update.setEnabled(true);
}
}
});
}
private void dbUpdate(){
Course course = new Course();
course.setClassFeature(inputclass.getText().toString().trim());
course.setName(inputName.getText().toString().trim());
course.setCredit( Integer.parseInt(inputcredit.getText().toString().trim()));
course.setBrief_introduction(briefIntroduce.getText().toString().trim());
course.setNumOfCourseNeeded(Integer.parseInt(studentNeed.getText().toString().trim()));
course.setTeacher(professor.getText().toString().trim());
course.setClasstime(Integer.parseInt(inputcredit.getText().toString().trim()) * 16);
course.setClassroom(Integer.parseInt(editClassRoom.getText().toString().trim()));
course.setNumOfCourseSelected(0);
course.updateAll("id = ?", Long.toString(selId));
}
private void dbDelete(){
//the basic information is id and name
DataSupport.deleteAll(Course.class, "id = ? and name = ?", Long.toString(selId), inputName.getText().toString());
}
private void dbAdd(){
if(inputName.getText().toString().isEmpty() || inputclass.getText().toString().isEmpty() || inputcredit.getText().toString().isEmpty() ||
studentNeed.getText().toString().isEmpty() || professor.getText().toString().isEmpty())
{
Toast.makeText(Course_ManagerActivity.this,"添加失败,信息未填完整",Toast.LENGTH_SHORT).show();
}
else{
List<Course> courses = DataSupport.where("name = ?", inputName.getText().toString().trim()).find(Course.class);
if (!courses.isEmpty())
{
Toast.makeText(Course_ManagerActivity.this,"课程已存在,增加失败",Toast.LENGTH_SHORT).show();
}
else
{
Course course = new Course();
course.setClassFeature(inputclass.getText().toString().trim());
course.setName(inputName.getText().toString().trim());
course.setCredit( Integer.parseInt(inputcredit.getText().toString().trim()));
course.setBrief_introduction(briefIntroduce.getText().toString().trim());
course.setNumOfCourseNeeded(Integer.parseInt(studentNeed.getText().toString().trim()));
course.setTeacher(professor.getText().toString().trim());
course.setClasstime(Integer.parseInt(inputcredit.getText().toString().trim()) * 16);
course.setClassroom(Integer.parseInt(editClassRoom.getText().toString().trim()));
course.setNumOfCourseSelected(0);
if(course.save())
{
Toast.makeText(Course_ManagerActivity.this, "增加成功!", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(Course_ManagerActivity.this,"发生未知错误,增加失败",Toast.LENGTH_SHORT).show();
}
}
}
}
private void dbFindAll () {
data.clear();//防止重复添加,每次清空
List<Course> courses = DataSupport.findAll(Course.class);
int num = 1;
for (Course course : courses) {
int uid = course.getId();
String uclass = course.getClassFeature();
String uname = course.getName();
int ucredit = course.getCredit();
item = new HashMap<String, Object>();
item.put("id", num);
item.put("cid", uid);
item.put("cclass", uclass);
item.put("cname", uname);
item.put("ccredit", ucredit);
data.add(item);
num++;
}
showList();
}
//显示所有的记录
public void showList () {
listAdapter = new SimpleAdapter(this, data,
R.layout.sqlist,
new String[]{"id", "cid", "cclass", "cname", "ccredit"},
new int[]{R.id.textID1, R.id.textCID1, R.id.textCourseClass1, R.id.textCourseName1, R.id.textCredit1});
lv.setAdapter(listAdapter);
}
}

@ -0,0 +1,178 @@
package com.example.softengineering_selectivecourse;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.content.SharedPreferences;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import org.litepal.LitePal;
import org.litepal.crud.DataSupport;
import java.util.List;
import java.util.Random;
public class LoginActivity extends AppCompatActivity {
EditText username, pwd;
Button login, exit;
TextView register, us, showCode, forget;
CheckBox saveName;
String sname;
String spwd;
private int forgetpwd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
username = (EditText) findViewById(R.id.editText);
pwd = (EditText) findViewById(R.id.editText2);
login = (Button) findViewById(R.id.button);
exit = (Button) findViewById(R.id.button2);
register = (TextView) findViewById(R.id.textView4);
saveName = (CheckBox) findViewById(R.id.saveName);
forget = (TextView) findViewById(R.id.textView36);
//先判断是否存过
final SharedPreferences sp = getSharedPreferences("sname", MODE_PRIVATE);
final SharedPreferences sp1 = getSharedPreferences("spwd", MODE_PRIVATE);
sname = sp.getString("sname", "");
spwd = sp1.getString("spwd", "");
if (!sname.equals("") && !spwd.equals("")) {
username.setText(sp.getString("sname", ""));
pwd.setText(sp1.getString("spwd", ""));
saveName.setChecked(true); //what is the differece?
}
//创建连接,并打开数据库
LitePal.getDatabase();
saveName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (username.getText().toString().equals("") || pwd.getText().toString().equals("")) {
Toast.makeText(LoginActivity.this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();
}
}
});
forget.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(LoginActivity.this, "请联系管理员", Toast.LENGTH_SHORT).show();
}
});
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (username.getText().toString().equals("admin")&&pwd.getText().toString().equals("123")) {
Intent intent = new Intent();
intent.setClass(LoginActivity.this,Course_ManagerActivity.class);
startActivity(intent);
}
else {
List<User> users = DataSupport.findAll(User.class);
int flag = 0;
for (User user : users) {
if (username.getText().toString().trim().equals(user.getName()) && pwd.getText().toString().trim().equals(user.getPwd())) {
Toast.makeText(LoginActivity.this, "欢迎回来," + username.getText().toString().trim(), Toast.LENGTH_SHORT).show();
flag = 1;
Intent intent = new Intent();
intent.putExtra("name", username.getText().toString());
intent.setClass(LoginActivity.this, PersonalBasicInfoActivity.class);
startActivity(intent);
//登陆成功时存saveName
if (saveName.isChecked() == true) {
sname = username.getText().toString();
spwd = pwd.getText().toString();
SharedPreferences.Editor editor = sp.edit();
editor.putString("sname", sname);
SharedPreferences.Editor editor1 = sp1.edit();
editor1.putString("spwd", spwd);
editor.commit();
editor1.commit();
} else {
SharedPreferences.Editor editor = sp.edit();
editor.clear();
editor.commit();
}
}
}
if(flag == 0) {
Toast.makeText(LoginActivity.this, "用户名或密码不存在,登录失败!", Toast.LENGTH_SHORT).show();
}
}
}
});
//
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setClass(LoginActivity.this,RegisterActivity.class);
startActivity(intent);
}
});
//
exit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder ab = new AlertDialog.Builder(LoginActivity.this);
ab.setMessage("您是否要退出?");
ab.setPositiveButton("否", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(LoginActivity.this,"明智的选择",Toast.LENGTH_SHORT).show();
}
});
ab.setNegativeButton("是", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
LoginActivity.this.finish();//返回上一页面
android.os.Process.killProcess(android.os.Process.myPid());
}
});
ab.create().show();
}
});
long firstTime = 0;
// //keyCode按键的编码KeyEvent事件
// public boolean onKeyDown(int keyCode,KeyEvent event)
// {
// long secondTime = System.currentTimeMillis();//时间间隔
// //选择返回键
// if(keyCode==KeyEvent.KEYCODE_BACK){
// if(secondTime-firstTime<2000){
// System.exit(0);
// }else{
// Toast.makeText(LoginActivity.this,"再按一次,程序退出!",Toast.LENGTH_SHORT).show();
// firstTime = System.currentTimeMillis();
// }
// return true;
// }
// return super.onKeyDown(keyCode,event);
// }
}
}

@ -0,0 +1,189 @@
package com.example.softengineering_selectivecourse;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import org.litepal.crud.DataSupport;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PersonalBasicInfoActivity extends AppCompatActivity {
private TextView TextViewUserName;
private TextView TextViewUserID;
private TextView TextViewUserMajor;
private TextView TextViewUserCreditNotTaken_Military;
private TextView TextViewUserCreditNotTaken_Nature;
private TextView TextViewUserCreditNotTaken_Political;
private TextView TextViewUserCreditNotTaken_Humanity;
private ListView lv;
private TextView TextViewUserSelectedCourse;
private Button ButtonDropCourse;
private ArrayList<Map<String,Object>> data;//所有记录
private Map<String,Object> item; //每一条记录
private SimpleAdapter listAdapter; //适配器
View view;
int selCourseId;
long selUserId;
String selUserName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_personal_basic_info);
Intent intent = getIntent();
final String userName = intent.getStringExtra("name");
List<User> users = DataSupport.where("name = ?", userName).find(User.class);
TextViewUserName = (TextView) findViewById(R.id.textBasicInfoName);
TextViewUserID = (TextView) findViewById(R.id.textBasicINfoID1);
TextViewUserMajor = (TextView) findViewById(R.id.textBasicINfoMajor1);
TextViewUserCreditNotTaken_Military = (TextView) findViewById(R.id.textBasicINfoMilitary1);
TextViewUserCreditNotTaken_Nature = (TextView) findViewById(R.id.textBasicINfoNature1);
TextViewUserCreditNotTaken_Political = (TextView) findViewById(R.id.textBasicINfoPolitical1);
TextViewUserCreditNotTaken_Humanity = (TextView) findViewById(R.id.textBasicINfohumanity1);
TextViewUserSelectedCourse = (TextView) findViewById(R.id.textBasicINfoClikedCourse);
ButtonDropCourse = (Button) findViewById(R.id.buttonBasicInfoDrop);
Button buttonRecommend = (Button) findViewById(R.id.buttonBasicInfoRecommend);
Button buttonQuery = (Button) findViewById(R.id.buttonBasicInfoSelect);
buttonRecommend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("name", userName);
intent.setClass(PersonalBasicInfoActivity.this, CourseRecommendedActivity.class);
startActivity(intent);
}
});
buttonQuery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("name", userName);
intent.setClass(PersonalBasicInfoActivity.this, CourseSelectingActivity.class);
startActivity(intent);
}
});
lv = (ListView) findViewById(R.id.lv4);
if (users.isEmpty())
{
Toast.makeText(PersonalBasicInfoActivity.this,"发生未知错误,显示详细信息失败",Toast.LENGTH_SHORT).show();
}
else
{
User user = users.get(0);
TextViewUserName.setText(userName);
selUserId = user.getId();
selUserName = user.getName();
TextViewUserID.setText(Long.toString(user.getId()));
TextViewUserMajor.setText(user.getMajor());
TextViewUserCreditNotTaken_Humanity.setText(Integer.toString(user.getHumanity_class_NotTaken()));
TextViewUserCreditNotTaken_Political.setText(Integer.toString(user.getPolitical_class_NotTaken()));
TextViewUserCreditNotTaken_Nature.setText(Integer.toString(user.getNaturalScience_class_NotTaken()));
TextViewUserCreditNotTaken_Military.setText(Integer.toString(user.getMilitary_class_NotTaken()));
}
ButtonDropCourse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CourseDelete();
dbFindAll();
TextViewUserSelectedCourse.setText("");
ButtonDropCourse.setEnabled(false);
Toast.makeText(PersonalBasicInfoActivity.this,"删除成功!",Toast.LENGTH_SHORT).show();
}
});
// lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
// @Override
// public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Map<String,Object> listItem = (Map<String,Object>)lv.getItemAtPosition(position);
// TextViewUserSelectedCourse.setText((String)listItem.get("cname"));
// List<Course> courses = DataSupport.where("name = ? and id = ?", userName, listItem.get("id").toString() ).find(Course.class);
// if(courses.isEmpty())
// {
// Toast.makeText(PersonalBasicInfoActivity.this,"can't find the course, some wrong happened",Toast.LENGTH_SHORT).show();
// }
// Course course = courses.get(0);
// selCourseId = course.getId();
// ButtonDropCourse.setEnabled(true);
// }
// });
}
private void CourseDelete()
{
//TO DO
}
private void dbFindAll(){
data.clear();//防止重复添加,每次清空
List<User> users = DataSupport.where("id = ? and name = ?", Long.toString(selUserId), selUserName).find(User.class);
if (users.isEmpty())
{
Toast.makeText(PersonalBasicInfoActivity.this,"发生未知错误,显示详细信息失败",Toast.LENGTH_SHORT).show();
}
else
{
User user = users.get(0);
// ArrayList<User.courseIdentification> courses = user.getCourseAttend();
// int num = 1;
// for (User.courseIdentification course : courses)
// {
//
// }
List<Course> courses = user.getCourse_selected();
int num = 1;
for (Course course: courses)
{
int uid = course.getId();
String uclass = course.getClassFeature();
String uname = course.getName();
int ucredit = course.getCredit();
item = new HashMap<String, Object>();
item.put("id", num);
item.put("cid", uid);
item.put("cclass", uclass);
item.put("cname", uname);
item.put("ccredit", ucredit);
data.add(item);
num++;
}
}
showList();
}
//显示所有的记录
public void showList(){
listAdapter = new SimpleAdapter(this,data,
R.layout.sqlist,
new String[]{"id", "cid", "cclass", "cname", "ccredit"},
new int[]{R.id.textID1, R.id.textCID1, R.id.textCourseClass1, R.id.textCourseName1, R.id.textCredit1});
lv.setAdapter(listAdapter);
}
}

@ -0,0 +1,108 @@
package com.example.softengineering_selectivecourse;
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.annotation.TargetApi;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import org.litepal.crud.DataSupport;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
public class RegisterActivity extends AppCompatActivity {
private EditText username;
private EditText pwd;
private EditText major;
private Button register;
private Button back;
private Button btn1, btn2;
private ImageView picture;
//实例化
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
username = (EditText) findViewById(R.id.editText);
pwd = (EditText) findViewById(R.id.editText2);
major = (EditText) findViewById(R.id.editText4);
register = (Button) findViewById(R.id.button7);
back = (Button) findViewById(R.id.button8);
//返回监听
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
RegisterActivity.this.finish();
Intent intent = new Intent();
intent.setClass(RegisterActivity.this,LoginActivity.class);
startActivity(intent);
}
});
//创建连接
//打开数据库
//注册监听
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ContentValues values = new ContentValues();
List<User> Users = DataSupport.where("name = ?", username.getText().toString().trim()).find(User.class);
//如果可以注册
if(Users.isEmpty()){
User user = new User();
user.setName(username.getText().toString().trim());
user.setPwd(pwd.getText().toString().trim());
user.setMajor(major.getText().toString().trim());
user.setMilitary_class_NotTaken(4);
user.setHumanity_class_NotTaken(2);
user.setPolitical_class_NotTaken(3);
user.setNaturalScience_class_NotTaken(3);
if(user.save()){
Toast.makeText(RegisterActivity.this,"注册成功!",Toast.LENGTH_SHORT).show();
Intent intent = new Intent();
intent.setClass(RegisterActivity.this,LoginActivity.class);
startActivity(intent);
RegisterActivity.this.finish();//退出之前注销该活动
}
else
{
Toast.makeText(RegisterActivity.this,"发生未知错误,注册失败",Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(RegisterActivity.this,"用户名已存在!",Toast.LENGTH_SHORT).show();
}
}
});
}
}

@ -0,0 +1,180 @@
package com.example.softengineering_selectivecourse;
import org.litepal.crud.DataSupport;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class User extends DataSupport {
private long id;
private String name;
private String pwd;
private String major;
private List<Course> course_selected = new ArrayList<Course>();
private List<Course> completed_courses =new ArrayList<Course>();
private List<Comments> comments = new ArrayList<Comments>();
// private ArrayList<courseIdentification> courseAttend = new ArrayList<courseIdentification>();
// private ArrayList<courseIdentification> courseFinished = new ArrayList<courseIdentification>();
// private ArrayList<Integer> CommentsOF = new ArrayList<Integer>();
private int military_class_NotTaken;
private int humanity_class_NotTaken;
private int political_class_NotTaken;
private int naturalScience_class_NotTaken;
// public class courseIdentification{
// private int id;
// private String name;
// private String feature;
// private int credit;
//
// public int getCredit() {
// return credit;
// }
//
// public String getName() {
// return name;
// }
//
// public int getId() {
// return id;
// }
//
// public String getFeature() {
// return feature;
// }
//
// public void setFeature(String feature) {
// this.feature = feature;
// }
//
// public void setCredit(int credit) {
// this.credit = credit;
// }
//
// public void setName(String name) {
// this.name = name;
// }
//
// public void setId(int id) {
// this.id = id;
// }
// }
// public ArrayList<courseIdentification> getCourseAttend() {
// return courseAttend;
// }
//
// public ArrayList<courseIdentification> getCourseFinished() {
// return courseFinished;
// }
//
// public ArrayList<Integer> getCommentsOF() {
// return CommentsOF;
// }
//
// public void setCommentsOF(ArrayList<Integer> commentsOF) {
// CommentsOF = commentsOF;
// }
//
// public void setCourseAttend(ArrayList<courseIdentification> courseAttend) {
// this.courseAttend = courseAttend;
// }
// public void setCourseFinished(ArrayList<courseIdentification> courseFinished) {
// this.courseFinished = courseFinished;
// }
public void setPwd(String pwd) {
this.pwd = pwd;
}
public void setName(String name) {
this.name = name;
}
public void setMajor(String major) {
this.major = major;
}
public void setId(long id) {
this.id = id;
}
public void setComments(ArrayList<Comments> comments) {
this.comments = comments;
}
public void setCompleted_courses(ArrayList<Course> completed_courses) {
this.completed_courses = completed_courses;
}
public void setCourse_selected(ArrayList<Course> course_selected) {
this.course_selected = course_selected;
}
public void setHumanity_class_NotTaken(int humanity_class_NotTaken) {
this.humanity_class_NotTaken = humanity_class_NotTaken;
}
public void setMilitary_class_NotTaken(int military_class_NotTaken) {
this.military_class_NotTaken = military_class_NotTaken;
}
public void setNaturalScience_class_NotTaken(int naturalScience_class_NotTaken) {
this.naturalScience_class_NotTaken = naturalScience_class_NotTaken;
}
public void setPolitical_class_NotTaken(int political_class_NotTaken) {
this.political_class_NotTaken = political_class_NotTaken;
}
public String getName() {
return name;
}
public String getMajor() {
return major;
}
public String getPwd() {
return pwd;
}
public long getId() {
return id;
}
public List<com.example.softengineering_selectivecourse.Comments> getComments() {
return comments;
}
public List<Course> getCompleted_courses() {
return completed_courses;
}
public List<Course> getCourse_selected() {
return course_selected;
}
public int getHumanity_class_NotTaken() {
return humanity_class_NotTaken;
}
public int getMilitary_class_NotTaken() {
return military_class_NotTaken;
}
public int getNaturalScience_class_NotTaken() {
return naturalScience_class_NotTaken;
}
public int getPolitical_class_NotTaken() {
return political_class_NotTaken;
}
}

@ -0,0 +1,211 @@
package com.example.softengineering_selectivecourse;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import org.litepal.crud.DataSupport;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class User_ManagerActivity extends AppCompatActivity {
private EditText inputName;
private EditText inputPwd;
private EditText inputMajor;
private Button select;
private Button add;
private Button delete;
private Button update;
private ListView lv;
private ArrayList<Map<String,Object>> data;//所有记录
private Map<String,Object> item; //每一条记录
private SimpleAdapter listAdapter; //适配器
View view;
long selId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user__manager);
inputName = (EditText) findViewById(R.id.editTextName);
inputMajor = (EditText) findViewById(R.id.editMajor);
inputPwd = (EditText) findViewById(R.id.editPwd);
select = (Button) findViewById(R.id.buttonUserQuery);
add = (Button) findViewById(R.id.buttonUserAdd);
delete = (Button) findViewById(R.id.buttonUSerDelete);
update = (Button) findViewById(R.id.buttonUSerUpdate);
lv = (ListView) findViewById(R.id.lv2);
data = new ArrayList<Map<String, Object>>();//将data实例化
dbFindAll(); //查询的方法
//查询
select.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dbFindAll();
}
});
//添加
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dbAdd();
dbFindAll();
inputName.setText("");
inputPwd.setText("");
inputMajor.setText("");
}
});
//
// //删除
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dbDelete();
dbFindAll();
inputName.setText("");
inputPwd.setText("");
inputMajor.setText("");
delete.setEnabled(false);
update.setEnabled(false);
inputName.setEnabled(true);
Toast.makeText(User_ManagerActivity.this,"删除成功!",Toast.LENGTH_SHORT).show();
}
});
//
// //修改
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dbUpdate();
dbFindAll();
inputName.setText("");
inputPwd.setText("");
inputMajor.setText("");
delete.setEnabled(false);
update.setEnabled(false);
inputName.setEnabled(true);
Toast.makeText(User_ManagerActivity.this,"修改成功!",Toast.LENGTH_SHORT).show();
}
});
//
// //鼠标点击数据可以获取相对应的数据存入Map中
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Map<String,Object> listItem = (Map<String,Object>)lv.getItemAtPosition(position);
inputName.setText((String)listItem.get("uname"));
List<User> users = DataSupport.where("name = ? and id = ?", inputName.getText().toString(), listItem.get("uid").toString() ).find(User.class);
if(users.isEmpty())
{
Toast.makeText(User_ManagerActivity.this,"can't find the course, some wrong happened",Toast.LENGTH_SHORT).show();
}
User user = users.get(0);
selId = user.getId();
inputName.setText((String)user.getName());
inputPwd.setText((String)user.getPwd());
inputMajor.setText((String)user.getMajor());
delete.setEnabled(true);
update.setEnabled(true);
}
});
}
private void dbUpdate(){
User user = new User();
user.setName(inputName.getText().toString().trim());
user.setPwd(inputPwd.getText().toString().trim());
user.setMajor(inputMajor.getText().toString().trim());
user.updateAll("id = ?", Long.toString(selId));
}
//
private void dbDelete(){
DataSupport.deleteAll(User.class, "id = ? and name = ?", Long.toString(selId), inputName.getText().toString());
}
//
private void dbAdd(){
if(inputName.getText().toString().isEmpty() || inputMajor.getText().toString().isEmpty() || inputPwd.getText().toString().isEmpty())
{
Toast.makeText(User_ManagerActivity.this,"添加失败,信息未填完整",Toast.LENGTH_SHORT).show();
}
else{
List<User> users = DataSupport.where("name = ?", inputName.getText().toString().trim()).find(User.class);
if (!users.isEmpty())
{
Toast.makeText(User_ManagerActivity.this,"用户已存在,增加失败",Toast.LENGTH_SHORT).show();
}
else
{
User user = new User();
user.setName(inputName.getText().toString().trim());
user.setPwd(inputPwd.getText().toString().trim());
user.setMajor(inputMajor.getText().toString().trim());
user.setMilitary_class_NotTaken(4);
user.setHumanity_class_NotTaken(2);
user.setPolitical_class_NotTaken(3);
user.setNaturalScience_class_NotTaken(3);
if(user.save())
{
Toast.makeText(User_ManagerActivity.this, "增加成功!", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(User_ManagerActivity.this,"发生未知错误,增加失败",Toast.LENGTH_SHORT).show();
}
}
}
}
private void dbFindAll(){
data.clear();//防止重复添加,每次清空
List<User> users = DataSupport.findAll(User.class);
int num = 1;
for (User user: users) {
long uid = user.getId();
String name = user.getName();
String pwd = user.getPwd();
String major = user.getMajor();
item = new HashMap<String, Object>();
item.put("id",num);
item.put("uid",uid);
item.put("uname",name);
item.put("pwd",pwd);
item.put("major",major);
data.add(item);
num++;
}
showList();
}
//显示所有的记录
public void showList(){
listAdapter = new SimpleAdapter(this,data,
R.layout.user_sqlist,
new String[]{"id","uid","uname","pwd","major"},
new int[]{R.id.textUserID1,R.id.textUserCID1,R.id.textUserNamelist1,R.id.textUserKeylist1,R.id.textUserMajor1});
lv.setAdapter(listAdapter);
}
}

@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

@ -0,0 +1,230 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.softengineering_selectivecourse.Course_ManagerActivity"
>
<Button
android:id="@+id/userManager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户管理"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginTop="5dp"/>
<TextView
android:id="@+id/couseManagerTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="课 程 管 理"
android:textSize="25dp"
android:layout_marginTop="5dp"/>
<EditText
android:id="@+id/editClass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:hint="请输入课程类别"
android:gravity="center"
android:layout_below="@+id/couseManagerTitle"
android:layout_toRightOf="@+id/couseClass" />
<TextView
android:id="@+id/couseClass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/editClass"
android:layout_marginBottom="9dp"
android:text="课程类别:"
android:textSize="18dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="20dp" />
<TextView
android:id="@+id/couseName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="课 程 名:"
android:textSize="18dp"
android:layout_marginTop="9dp"
android:layout_below="@+id/editClass"
android:layout_alignParentLeft="true"
android:layout_marginLeft="20dp"/>
<TextView
android:id="@+id/courseCredit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18dp"
android:text=" 学 分:"
android:layout_below="@+id/couseName"
android:layout_alignBaseline="@+id/editCredit"
android:layout_marginTop="9dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="20dp"/>
<EditText
android:id="@+id/inputCouseName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入课程名"
android:gravity="center"
android:inputType="textPersonName"
android:layout_alignBottom="@+id/couseName"
android:layout_toRightOf="@+id/couseName" />
<EditText
android:id="@+id/editCredit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入学分"
android:gravity="center"
android:inputType="number"
android:layout_below="@+id/inputCouseName"
android:layout_toRightOf="@+id/courseCredit"
android:text="" />
<TextView
android:id="@+id/couseTeacher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18dp"
android:text=" 授课教师:"
android:layout_below="@+id/courseCredit"
android:layout_alignBaseline="@+id/editTeacher"
android:layout_marginTop="9dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="20dp"/>
<EditText
android:id="@+id/editTeacher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入授课教师"
android:gravity="center"
android:inputType="text"
android:layout_below="@+id/editCredit"
android:layout_toRightOf="@+id/couseTeacher"
android:text="" />
<TextView
android:id="@+id/couseStuNeeded"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18dp"
android:text=" 课程人数:"
android:layout_alignBaseline="@+id/editStuNeeded"
android:layout_below="@+id/couseTeacher"
android:layout_marginTop="9dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="20dp"/>
<EditText
android:id="@+id/editStuNeeded"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入课程人数"
android:gravity="center"
android:inputType="number"
android:layout_below="@+id/editTeacher"
android:layout_toRightOf="@+id/couseStuNeeded"
android:text="" />
<TextView
android:id="@+id/couseClassRoom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18dp"
android:text=" 授课教室:"
android:layout_alignBaseline="@+id/editClassRoom"
android:layout_below="@+id/couseStuNeeded"
android:layout_marginTop="9dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="20dp"/>
<EditText
android:id="@+id/editClassRoom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入授课教室"
android:gravity="center"
android:inputType="number"
android:layout_below="@+id/editStuNeeded"
android:layout_toRightOf="@+id/couseStuNeeded"
android:text="" />
<TextView
android:id="@+id/couseBriefIntroduce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18dp"
android:text=" 简 介:"
android:layout_alignBaseline="@+id/editBriefIntroduce"
android:layout_below="@+id/couseClassRoom"
android:layout_marginTop="9dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="20dp"/>
<EditText
android:id="@+id/editBriefIntroduce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入课程简介(选填)"
android:gravity="center"
android:inputType="text"
android:layout_below="@+id/couseClassRoom"
android:layout_toRightOf="@+id/couseBriefIntroduce"
android:text=""
android:maxLines="2"/>
<Button
android:id="@+id/buttonQuery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editBriefIntroduce"
android:text="查看"
android:layout_alignParentLeft="true" />
<Button
android:id="@+id/buttonAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editBriefIntroduce"
android:text="增加"
android:layout_toRightOf="@+id/buttonQuery" />
<Button
android:id="@+id/buttonDelete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除"
android:enabled="false"
android:layout_alignBaseline="@+id/buttonUpdate"
android:layout_alignBottom="@+id/buttonUpdate"
android:layout_toLeftOf="@+id/buttonUpdate" />
<Button
android:id="@+id/buttonUpdate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editBriefIntroduce"
android:enabled="false"
android:text="修改"
android:layout_alignParentRight="true" />
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/buttonQuery"
android:layout_alignParentLeft="true" />
</RelativeLayout>

@ -0,0 +1,231 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.softengineering_selectivecourse.CourseBasicInfoActivity"
>
<TextView
android:id="@+id/couseDetailInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="课 程 详 细 信 息"
android:textSize="25dp"
android:layout_marginTop="5dp"/>
<TextView
android:id="@+id/couseDetailClassLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_marginTop="60dp"
android:text="课程类别:"
android:textSize="20dp"
android:layout_marginLeft="20dp" />
<TextView
android:id="@+id/couseDetailClassRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入课程类别"
android:textSize="20dp"
android:layout_alignBaseline="@+id/couseDetailClassLeft"
android:layout_alignBottom="@+id/couseDetailClassLeft"
android:layout_toRightOf="@+id/couseDetailClassLeft"/>
<TextView
android:id="@+id/courseDetailNameLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="课 程 名:"
android:textSize="20dp"
android:layout_marginTop="9dp"
android:layout_below="@+id/couseDetailClassLeft"
android:layout_alignLeft="@+id/couseDetailClassLeft"
/>
<TextView
android:id="@+id/courseDetailNameRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入课程名"
android:textSize="20dp"
android:layout_alignBaseline="@+id/courseDetailNameLeft"
android:layout_alignBottom="@+id/courseDetailNameLeft"
android:layout_toRightOf="@+id/courseDetailNameLeft"/>
<TextView
android:id="@+id/courseDetailCreditLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" 学 分:"
android:textSize="20dp"
android:layout_marginTop="9dp"
android:layout_below="@+id/courseDetailNameLeft"
android:layout_alignLeft="@+id/courseDetailNameLeft"/>
<TextView
android:id="@+id/courseDetailCreditRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入学分"
android:textSize="20dp"
android:layout_alignBaseline="@+id/courseDetailCreditLeft"
android:layout_alignBottom="@+id/courseDetailCreditLeft"
android:layout_toRightOf="@+id/courseDetailCreditLeft" />
<TextView
android:id="@+id/courseDetailTeacherLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" 授课教师:"
android:textSize="20dp"
android:layout_marginTop="9dp"
android:layout_below="@+id/courseDetailCreditLeft"
android:layout_alignLeft="@+id/courseDetailCreditLeft"
/>
<TextView
android:id="@+id/courseDetailTeacherRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入授课教师"
android:textSize="20dp"
android:layout_alignBaseline="@+id/courseDetailTeacherLeft"
android:layout_alignBottom="@+id/courseDetailTeacherLeft"
android:layout_toRightOf="@+id/courseDetailTeacherLeft"
/>
<TextView
android:id="@+id/courseDetailStuNeededLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" 课程人数:"
android:textSize="20dp"
android:layout_marginTop="9dp"
android:layout_below="@+id/courseDetailTeacherLeft"
android:layout_alignLeft="@+id/courseDetailTeacherLeft"/>
<TextView
android:id="@+id/courseDetailStuNeededRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入课程人数"
android:textSize="20dp"
android:layout_alignBaseline="@+id/courseDetailStuNeededLeft"
android:layout_alignBottom="@+id/courseDetailStuNeededLeft"
android:layout_toRightOf="@+id/courseDetailStuNeededLeft"
/>
<TextView
android:id="@+id/courseDetailClassRoomLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" 授课教室:"
android:textSize="20dp"
android:layout_marginTop="9dp"
android:layout_below="@+id/courseDetailStuNeededLeft"
android:layout_alignLeft="@+id/courseDetailStuNeededLeft"/>
<TextView
android:id="@+id/courseDetailClassRoomRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入授课教室"
android:textSize="20dp"
android:layout_alignBaseline="@+id/courseDetailClassRoomLeft"
android:layout_alignBottom="@+id/courseDetailClassRoomLeft"
android:layout_toRightOf="@+id/courseDetailClassRoomLeft"/>
<TextView
android:id="@+id/courseDetailBriefIntroduceLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" 简 介:"
android:textSize="20dp"
android:layout_marginTop="9dp"
android:layout_below="@+id/courseDetailClassRoomLeft"
android:layout_alignLeft="@+id/courseDetailClassRoomLeft"/>
<TextView
android:id="@+id/courseDetailBriefIntroduceRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入课程简介"
android:textSize="20dp"
android:layout_alignBaseline="@+id/courseDetailBriefIntroduceLeft"
android:layout_alignBottom="@+id/courseDetailBriefIntroduceLeft"
android:layout_toRightOf="@+id/courseDetailBriefIntroduceLeft"
android:maxLines="2"/>
<EditText
android:id="@+id/courseDetailCommentInfo"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:textSize="20dp"
android:hint="请输入评论"
android:layout_marginTop="9dp"
android:layout_below="@+id/courseDetailBriefIntroduceLeft"
android:layout_alignLeft="@+id/courseDetailBriefIntroduceLeft"
/>
<Button
android:id="@+id/courseDetailComment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="评论"
android:textSize="20dp"
android:layout_marginTop="9dp"
android:layout_below="@+id/courseDetailBriefIntroduceLeft"
android:layout_alignParentRight="true"/>
<Button
android:id="@+id/courseDetailcommentDelete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除评论"
android:layout_marginTop="9dp"
android:layout_below="@+id/courseDetailComment"
android:layout_alignLeft="@+id/courseDetailClassRoomLeft"/>
<Button
android:id="@+id/courseDetailcommentUpdate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="更新评论"
android:layout_marginTop="9dp"
android:layout_below="@+id/courseDetailComment"
android:layout_alignParentRight="true"/>
<Button
android:id="@+id/courseDetailAdd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=" 选课"
android:layout_marginTop="9dp"
android:layout_below="@+id/courseDetailcommentDelete"
android:layout_alignLeft="@+id/courseDetailClassRoomLeft"
/>
<ListView
android:id="@+id/lvDetail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/courseDetailAdd"
android:layout_alignParentLeft="true" />
</RelativeLayout>

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.softengineering_selectivecourse.CourseRecommendedActivity"
>
<TextView
android:id="@+id/textRecommendedWelcome0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="35dp"
android:text="We calculate and select "
android:textSize="30dp" />
<TextView
android:id="@+id/textRecommendedWelcome1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textRecommendedWelcome0"
android:layout_centerHorizontal="true"
android:text="the following course for you"
android:textSize="30dp" />
<TextView
android:id="@+id/textCourseRecommendedCliked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选定课程"
android:textSize="20dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="40dp"
android:layout_marginTop="150dp" />
<TextView
android:id="@+id/textCourseRecommendedClikedCourse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="courseName"
android:textSize="20dp"
android:layout_alignBaseline="@+id/textCourseRecommendedCliked"
android:layout_alignBottom="@id/textCourseRecommendedCliked"
android:layout_toRightOf="@id/textCourseRecommendedCliked"
android:layout_marginLeft="160dp"/>
<Button
android:id="@+id/buttonCourseRecommendedSelect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="选课"
android:layout_below="@+id/textCourseRecommendedCliked"
android:layout_alignLeft="@+id/textCourseRecommendedCliked"
android:layout_marginRight="16dp" />
<Button
android:id="@+id/buttonCourseRecommendedQueryDetail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="课程详情"
android:layout_alignBaseline="@+id/buttonCourseRecommendedSelect"
android:layout_alignBottom="@id/buttonCourseRecommendedSelect"
android:layout_toRightOf="@+id/buttonCourseRecommendedSelect"
android:layout_marginLeft="160dp" />
<ListView
android:id="@+id/lv5"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/buttonCourseRecommendedSelect"
android:layout_marginTop="22dp"
android:layout_alignParentLeft="true" />
</RelativeLayout>

@ -0,0 +1,186 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.softengineering_selectivecourse.CourseRecommendedActivity"
>
<TextView
android:id="@+id/textCourseSelectingWelcome0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="35dp"
android:text="请根据关键词进行查询"
android:textSize="30dp" />
<TextView
android:id="@+id/textCourseSelectingFeature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="课程类型"
android:textSize="20dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="40dp"
android:layout_marginTop="100dp" />
<Spinner
android:entries="@array/classOrder"
android:id="@+id/spinnerCourseSelectingFeature"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_alignBaseline="@+id/textCourseSelectingFeature"
android:layout_alignBottom="@id/textCourseSelectingFeature"
android:layout_toRightOf="@id/textCourseSelectingFeature"
android:layout_marginLeft="160dp"/>
<TextView
android:id="@+id/textCourseSelectingCredit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="课程学分"
android:textSize="20dp"
android:layout_below="@id/textCourseSelectingFeature"
android:layout_alignLeft="@+id/textCourseSelectingFeature"
android:layout_marginTop="10dp"/>
<Spinner
android:entries="@array/classCredit"
android:id="@+id/spinnerCourseSelectingCredit"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_alignBaseline="@+id/textCourseSelectingCredit"
android:layout_alignBottom="@id/textCourseSelectingCredit"
android:layout_toRightOf="@id/textCourseSelectingCredit"
android:layout_marginLeft="160dp"/>
<TextView
android:id="@+id/textCourseSelectingclassRoom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="课程教学楼"
android:textSize="20dp"
android:layout_below="@id/textCourseSelectingCredit"
android:layout_alignLeft="@+id/textCourseSelectingCredit"
android:layout_marginTop="10dp"/>
<Spinner
android:entries="@array/classClassroom"
android:id="@+id/spinnerCourseSelectingClassRoom"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_alignBaseline="@+id/textCourseSelectingclassRoom"
android:layout_alignBottom="@id/textCourseSelectingclassRoom"
android:layout_alignLeft="@+id/spinnerCourseSelectingCredit"/>
<TextView
android:id="@+id/textCourseSelectingTeacher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="课程老师"
android:textSize="20dp"
android:layout_below="@id/textCourseSelectingclassRoom"
android:layout_alignLeft="@+id/textCourseSelectingclassRoom"
android:layout_marginTop="10dp"/>
<EditText
android:id="@+id/EditCourseSelectingTeacher"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:hint="请输入"
android:layout_alignBaseline="@+id/textCourseSelectingTeacher"
android:layout_alignBottom="@id/textCourseSelectingTeacher"
android:layout_toRightOf="@id/textCourseSelectingTeacher"
android:layout_marginLeft="160dp"/>
<TextView
android:id="@+id/textCourseSelectingItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="筛选选项"
android:textSize="20dp"
android:layout_below="@id/textCourseSelectingTeacher"
android:layout_alignLeft="@+id/textCourseSelectingTeacher"
android:layout_marginTop="10dp"/>
<Spinner
android:entries="@array/classSift"
android:id="@+id/spinnerCourseSelectingselItem"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_alignBaseline="@+id/textCourseSelectingItem"
android:layout_alignBottom="@id/textCourseSelectingItem"
android:layout_alignLeft="@+id/spinnerCourseSelectingCredit"/>
<TextView
android:id="@+id/textCourseSelectingCliked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选定课程"
android:textSize="20dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="40dp"
android:layout_marginTop="300dp" />
<TextView
android:id="@+id/textCourseSelectingClikedCourse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="courseName"
android:textSize="20dp"
android:layout_alignBaseline="@+id/textCourseSelectingCliked"
android:layout_alignBottom="@id/textCourseSelectingCliked"
android:layout_toRightOf="@id/textCourseSelectingCliked"
android:layout_marginLeft="160dp"/>
<Button
android:id="@+id/buttonCourseSelectSelect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="选课"
android:layout_below="@+id/textCourseSelectingCliked"
android:layout_alignLeft="@+id/textCourseSelectingCliked"
android:layout_marginRight="16dp" />
<Button
android:id="@+id/buttonCourseSelectingSifting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查询"
android:layout_alignBaseline="@+id/buttonCourseSelectSelect"
android:layout_alignBottom="@id/buttonCourseSelectSelect"
android:layout_toRightOf="@+id/buttonCourseSelectSelect"
android:layout_marginLeft="30dp" />
<Button
android:id="@+id/buttonCourseSelectingQueryDetail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="课程详情"
android:layout_alignBaseline="@+id/buttonCourseSelectSelect"
android:layout_alignBottom="@id/buttonCourseSelectSelect"
android:layout_toRightOf="@+id/buttonCourseSelectSelect"
android:layout_marginLeft="160dp" />
<ListView
android:id="@+id/lv6"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/buttonCourseSelectSelect"
android:layout_marginTop="22dp"
android:layout_alignParentLeft="true" />
</RelativeLayout>

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.softengineering_selectivecourse.LoginActivity"
>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="45dp"
android:text="登 录 界 面"
android:textColor="#FF7300"
android:textSize="25dp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text="用户名:"
android:layout_alignBaseline="@+id/editText"
android:layout_alignBottom="@+id/editText"
android:layout_toStartOf="@+id/textView"
android:layout_marginEnd="11dp"
android:layout_toLeftOf="@+id/textView"
android:layout_marginRight="11dp" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text="密码:"
android:layout_alignBaseline="@+id/editText2"
android:layout_alignBottom="@+id/editText2"
android:layout_alignStart="@+id/textView2"
android:layout_alignLeft="@+id/textView2" />
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:layout_marginStart="22dp"
android:layout_marginTop="46dp"
android:layout_toEndOf="@+id/textView2"
android:ems="10"
android:inputType="textPersonName"
android:hint="请输入用户名"
android:layout_marginLeft="22dp"
android:layout_toRightOf="@+id/textView2" />
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/editText"
android:layout_below="@+id/editText"
android:layout_marginTop="23dp"
android:ems="10"
android:hint="请输入密码"
android:inputType="textPassword"
android:layout_alignLeft="@+id/editText" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignStart="@+id/textView3"
android:layout_marginBottom="26dp"
android:text="确 定"
android:layout_alignLeft="@+id/textView3" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button"
android:layout_alignEnd="@+id/editText2"
android:text="退 出"
android:layout_alignRight="@+id/editText2" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="35dp"
android:text="点击我进行注册"
android:layout_above="@+id/button"
android:layout_centerHorizontal="true" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:text="联系我们"
android:layout_alignParentLeft="true" />
<CheckBox
android:id="@+id/saveName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="记住用户名密码"
android:layout_above="@+id/textView4"
android:layout_toEndOf="@+id/button"
android:layout_marginBottom="19dp"
android:layout_toRightOf="@+id/button" />
<TextView
android:id="@+id/textView36"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="忘记密码?"
android:textSize="20dp"
android:layout_alignRight="@+id/editText2" />
</RelativeLayout>

@ -0,0 +1,243 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.softengineering_selectivecourse.PersonalBasicInfoActivity"
>
<Button
android:id="@+id/buttonBasicInfoRecommend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="课程推荐"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
></Button>
<Button
android:id="@+id/buttonBasicInfoSelect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="课程查询"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
></Button>
<TextView
android:id="@+id/welcomeUserName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="欢迎你"
android:textSize="20dp"
android:layout_marginTop="35dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
/>
<TextView
android:id="@+id/textBasicInfoName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="name"
android:textSize="40dp"
android:layout_below="@+id/welcomeUserName"
android:layout_centerHorizontal="true"
></TextView>
<TextView
android:id="@+id/textBasicINfoID0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="编号:"
android:textSize="20dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="40dp"
android:layout_marginTop="120dp" />
<TextView
android:id="@+id/textBasicINfoID1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="id"
android:textSize="20dp"
android:layout_alignBaseline="@+id/textBasicINfoID0"
android:layout_alignBottom="@id/textBasicINfoID0"
android:layout_toRightOf="@id/textBasicINfoID0" />
<TextView
android:id="@+id/textBasicINfoMajor0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="专业:"
android:textSize="20dp"
android:layout_alignBaseline="@+id/textBasicINfoID0"
android:layout_alignBottom="@id/textBasicINfoID0"
android:layout_toRightOf="@id/textBasicINfoID0"
android:layout_marginLeft="180dp" />
<TextView
android:id="@+id/textBasicINfoMajor1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="major"
android:textSize="20dp"
android:layout_alignBaseline="@+id/textBasicINfoID0"
android:layout_alignBottom="@id/textBasicINfoID0"
android:layout_toRightOf="@id/textBasicINfoMajor0" />
<TextView
android:id="@+id/textBasicINfoClass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="类别:"
android:textSize="15dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="40dp"
android:layout_marginTop="160dp" />
<TextView
android:id="@+id/textBasicINfoMilitary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="军事基础"
android:textSize="15dp"
android:layout_alignBaseline="@+id/textBasicINfoClass"
android:layout_alignBottom="@id/textBasicINfoClass"
android:layout_toRightOf="@id/textBasicINfoClass"
android:layout_marginLeft="5dp" />
<TextView
android:id="@+id/textBasicINfoNature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="自然科学"
android:textSize="15dp"
android:layout_alignBaseline="@+id/textBasicINfoClass"
android:layout_alignBottom="@id/textBasicINfoClass"
android:layout_toRightOf="@id/textBasicINfoClass"
android:layout_marginLeft="75dp" />
<TextView
android:id="@+id/textBasicINfoPolitical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="政治理论"
android:textSize="15dp"
android:layout_alignBaseline="@+id/textBasicINfoClass"
android:layout_alignBottom="@id/textBasicINfoClass"
android:layout_toRightOf="@id/textBasicINfoClass"
android:layout_marginLeft="145dp" />
<TextView
android:id="@+id/textBasicINfohumanity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="人文科学"
android:textSize="15dp"
android:layout_alignBaseline="@+id/textBasicINfoClass"
android:layout_alignBottom="@id/textBasicINfoClass"
android:layout_toRightOf="@id/textBasicINfoClass"
android:layout_marginLeft="215dp" />
<TextView
android:id="@+id/textBasicINfoNoTaken"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="待修:"
android:textSize="15dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="40dp"
android:layout_marginTop="180dp" />
<TextView
android:id="@+id/textBasicINfoMilitary1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="credit"
android:textSize="15dp"
android:layout_alignBaseline="@+id/textBasicINfoNoTaken"
android:layout_alignBottom="@id/textBasicINfoNoTaken"
android:layout_toRightOf="@id/textBasicINfoNoTaken"
android:layout_marginLeft="5dp" />
<TextView
android:id="@+id/textBasicINfoNature1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="credit"
android:textSize="15dp"
android:layout_alignBaseline="@+id/textBasicINfoNoTaken"
android:layout_alignBottom="@id/textBasicINfoNoTaken"
android:layout_toRightOf="@id/textBasicINfoNoTaken"
android:layout_marginLeft="75dp" />
<TextView
android:id="@+id/textBasicINfoPolitical1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="credit"
android:textSize="15dp"
android:layout_alignBaseline="@+id/textBasicINfoNoTaken"
android:layout_alignBottom="@id/textBasicINfoNoTaken"
android:layout_toRightOf="@id/textBasicINfoNoTaken"
android:layout_marginLeft="145dp" />
<TextView
android:id="@+id/textBasicINfohumanity1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="credit"
android:textSize="15dp"
android:layout_alignBaseline="@+id/textBasicINfoNoTaken"
android:layout_alignBottom="@id/textBasicINfoNoTaken"
android:layout_toRightOf="@id/textBasicINfoNoTaken"
android:layout_marginLeft="215dp" />
<TextView
android:id="@+id/textBasicINfoCliked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选定课程"
android:textSize="20dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="40dp"
android:layout_marginTop="210dp" />
<TextView
android:id="@+id/textBasicINfoClikedCourse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="courseName"
android:textSize="20dp"
android:layout_alignBaseline="@+id/textBasicINfoCliked"
android:layout_alignBottom="@id/textBasicINfoCliked"
android:layout_toRightOf="@id/textBasicINfoCliked"
android:layout_marginLeft="160dp" />
<Button
android:id="@+id/buttonBasicInfoDrop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="200dp"
android:text="退课"
android:layout_below="@+id/welcomeUserName"
android:layout_toLeftOf="@+id/welcomeUserName"
android:layout_marginRight="16dp" />
<Button
android:id="@+id/button18"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="刷新"
android:layout_alignBaseline="@+id/buttonBasicInfoDrop"
android:layout_alignBottom="@id/buttonBasicInfoDrop"
android:layout_toRightOf="@+id/welcomeUserName"
android:layout_marginLeft="36dp" />
<ListView
android:id="@+id/lv4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/buttonBasicInfoDrop"
android:layout_marginTop="22dp"
android:layout_alignParentLeft="true" />
</RelativeLayout>

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用 户 注 册"
android:textSize="24dp"
tools:layout_editor_absoluteX="162dp"
tools:layout_editor_absoluteY="143dp"
android:layout_marginTop="17dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView5"
android:layout_marginTop="46dp"
android:ems="10"
android:layout_centerHorizontal="true"
android:gravity="center"
android:hint="请输入用户名"
android:inputType="textPersonName" />
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/editText"
android:layout_below="@+id/editText"
android:layout_marginTop="23dp"
android:gravity="center"
android:ems="10"
android:hint="请输入密码"
android:inputType="textPassword"
android:layout_alignLeft="@+id/editText" />
<EditText
android:id="@+id/editText4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/editText2"
android:layout_below="@+id/editText2"
android:layout_marginTop="24dp"
android:hint="请输入专业"
android:gravity="center"
android:ems="10"
android:inputType="text"
android:layout_alignRight="@+id/editText2" />
<Button
android:id="@+id/button7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="18dp"
android:layout_marginStart="64dp"
android:text="注 册"
android:layout_alignParentLeft="true"
android:layout_marginLeft="64dp" />
<Button
android:id="@+id/button8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button7"
android:layout_toEndOf="@+id/textView5"
android:text="返 回"
android:layout_toRightOf="@+id/textView5" />
</RelativeLayout>

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.softengineering_selectivecourse.User_ManagerActivity">
<TextView
android:id="@+id/textUsertitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="用 户 管 理"
android:textSize="25dp"
android:layout_marginTop="5dp"/>
<TextView
android:id="@+id/textUserName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名:"
android:textSize="18dp"
android:layout_alignBaseline="@+id/editTextName"
android:layout_alignBottom="@+id/editTextName"
android:layout_alignParentLeft="true"
android:layout_marginLeft="27dp" />
<EditText
android:id="@+id/editTextName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:text=""
android:hint="请输入用户名"
android:gravity="center"
android:layout_below="@+id/textUsertitle"
android:layout_toRightOf="@+id/textUserName" />
<TextView
android:id="@+id/textPwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="密 码:"
android:textSize="18dp"
android:layout_below="@+id/editTextName"
android:layout_alignLeft="@+id/textUserName" />
<TextView
android:id="@+id/textMajor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18dp"
android:text="专 业:"
android:layout_alignBaseline="@+id/editMajor"
android:layout_alignBottom="@+id/editMajor"
android:layout_alignLeft="@+id/textUserName" />
<EditText
android:id="@+id/editMajor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入专业"
android:gravity="center"
android:inputType="text"
android:text=""
android:layout_below="@+id/editPwd"
android:layout_marginTop="12dp"
android:layout_alignLeft="@+id/editTextName" />
<EditText
android:id="@+id/editPwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword"
android:hint="请输入密码"
android:gravity="center"
android:layout_below="@+id/editTextName"
android:layout_alignLeft="@+id/editTextName" />
<Button
android:id="@+id/buttonUserQuery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查询"
android:layout_below="@+id/editMajor"
android:layout_alignParentLeft="true" />
<Button
android:id="@+id/buttonUserAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="增加"
android:layout_below="@+id/editMajor"
android:layout_toRightOf="@+id/buttonUserQuery" />
<Button
android:id="@+id/buttonUSerDelete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除"
android:enabled="false"
android:layout_below="@+id/editMajor"
android:layout_toLeftOf="@+id/buttonUSerUpdate" />
<Button
android:id="@+id/buttonUSerUpdate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/buttonUSerDelete"
android:enabled="false"
android:text="修改"
android:layout_alignParentRight="true" />
<ListView
android:id="@+id/lv2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/buttonUserQuery"
android:layout_alignParentLeft="true" />
</RelativeLayout>

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textCommentID1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="序号"
android:layout_marginTop="35dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true" />
<TextView
android:id="@+id/textCommentCID1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ID"
android:layout_alignBaseline="@+id/textCommentID1"
android:layout_alignBottom="@+id/textCommentID1"
android:layout_alignLeft="@+id/textCommentCID0"
/>
<TextView
android:id="@+id/textCommentInfo1"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:text="评论"
android:layout_alignBaseline="@+id/textCommentID1"
android:layout_alignBottom="@+id/textCommentID1"
android:layout_alignLeft="@+id/textCommentInfo0"
/>
<TextView
android:id="@+id/textCommentProvider1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="评论者"
android:layout_alignBaseline="@+id/textCommentID1"
android:layout_alignBottom="@+id/textCommentID1"
android:layout_alignLeft="@+id/textCommentProvider0"></TextView>
<TextView
android:id="@+id/textCommnentID0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:text="序号"
/>
<TextView
android:id="@+id/textCommentCID0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textCommnentID0"
android:layout_alignBottom="@+id/textCommnentID0"
android:text="ID"
android:layout_toRightOf="@+id/textCommnentID0"
android:layout_marginLeft="5dp"
/>
<TextView
android:id="@+id/textCommentInfo0"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textCommnentID0"
android:layout_alignBottom="@+id/textCommnentID0"
android:text="评论"
android:layout_toRightOf="@+id/textCommentCID0"
android:layout_marginLeft="5dp"
/>
<TextView
android:id="@+id/textCommentProvider0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="评论者"
android:layout_alignBaseline="@+id/textCommnentID0"
android:layout_alignBottom="@+id/textCommnentID0"
android:layout_toRightOf="@+id/textCommentInfo0"
android:layout_marginLeft="10dp"></TextView>
</RelativeLayout>

@ -0,0 +1,102 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textID1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="序号"
android:layout_marginTop="35dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true" />
<TextView
android:id="@+id/textCID1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="课程编号"
android:layout_alignBaseline="@+id/textID1"
android:layout_alignBottom="@+id/textID1"
android:layout_alignLeft="@+id/textCID0"
/>
<TextView
android:id="@+id/textCourseClass1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="课程类别"
android:layout_alignBaseline="@+id/textID1"
android:layout_alignBottom="@+id/textID1"
android:layout_alignLeft="@+id/textCourseClass0"></TextView>
<TextView
android:id="@+id/textCourseName1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="课程名称"
android:layout_alignBaseline="@+id/textID1"
android:layout_alignBottom="@+id/textID1"
android:layout_alignLeft="@+id/textCourseName0" />
<TextView
android:id="@+id/textCredit1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="学分"
android:layout_alignBaseline="@+id/textID1"
android:layout_alignBottom="@+id/textID1"
android:layout_alignLeft="@+id/textCredit0"/>
<TextView
android:id="@+id/textID0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:text="序号"
/>
<TextView
android:id="@+id/textCID0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textID0"
android:layout_alignBottom="@+id/textID0"
android:text="课程编号"
android:layout_toRightOf="@+id/textID0"
android:layout_marginLeft="40dp"
/>
<TextView
android:id="@+id/textCourseClass0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="课程类别"
android:layout_alignBaseline="@+id/textID0"
android:layout_alignBottom="@+id/textID0"
android:layout_toRightOf="@+id/textCID0"
android:layout_marginLeft="40dp"></TextView>
<TextView
android:id="@+id/textCourseName0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textID0"
android:layout_alignBottom="@+id/textID0"
android:layout_toRightOf="@+id/textCourseClass0"
android:text="课程名称"
android:layout_marginLeft="40dp"
/>
<TextView
android:id="@+id/textCredit0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textID0"
android:layout_alignBottom="@+id/textID0"
android:layout_toRightOf="@+id/textCourseName0"
android:layout_marginLeft="40dp"
android:text="学分" />
</RelativeLayout>

@ -0,0 +1,102 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textUserID1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="序号"
android:layout_marginTop="35dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true" />
<TextView
android:id="@+id/textUserCID1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ID"
android:layout_alignBaseline="@+id/textUserID1"
android:layout_alignBottom="@+id/textUserID1"
android:layout_alignLeft="@+id/textUserCID0"
/>
<TextView
android:id="@+id/textUserNamelist1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名"
android:layout_alignBaseline="@+id/textUserID1"
android:layout_alignBottom="@+id/textUserID1"
android:layout_alignLeft="@+id/textUserNamelist0"></TextView>
<TextView
android:id="@+id/textUserKeylist1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密码"
android:layout_alignBaseline="@+id/textUserID1"
android:layout_alignBottom="@+id/textUserID1"
android:layout_alignLeft="@+id/textUserKeylist0" />
<TextView
android:id="@+id/textUserMajor1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="专业"
android:layout_alignBaseline="@+id/textUserID1"
android:layout_alignBottom="@+id/textUserID1"
android:layout_alignLeft="@+id/textUserMajor0"/>
<TextView
android:id="@+id/textUserID0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:text="序号"
/>
<TextView
android:id="@+id/textUserCID0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textUserID0"
android:layout_alignBottom="@+id/textUserID0"
android:text="ID"
android:layout_toRightOf="@+id/textUserID0"
android:layout_marginLeft="40dp"
/>
<TextView
android:id="@+id/textUserNamelist0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名"
android:layout_alignBaseline="@+id/textUserID0"
android:layout_alignBottom="@+id/textUserID0"
android:layout_toRightOf="@+id/textUserCID0"
android:layout_marginLeft="40dp"></TextView>
<TextView
android:id="@+id/textUserKeylist0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textUserID0"
android:layout_alignBottom="@+id/textUserID0"
android:layout_toRightOf="@+id/textUserNamelist0"
android:text="密码"
android:layout_marginLeft="50dp"
/>
<TextView
android:id="@+id/textUserMajor0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textUserID0"
android:layout_alignBottom="@+id/textUserID0"
android:layout_toRightOf="@+id/textUserKeylist0"
android:layout_marginLeft="70dp"
android:text="专业" />
</RelativeLayout>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#6200EE</color>
<color name="colorPrimaryDark">#3700B3</color>
<color name="colorAccent">#03DAC5</color>
</resources>

@ -0,0 +1,5 @@
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="classOrder">
<item>请选取</item>
<item>Military</item>
<item>Nature</item>
<item>Humanity</item>
<item>Political</item>
</string-array>
<string-array name="classCredit">
<item>请选取</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
</string-array>
<string-array name="classClassroom">
<item>请选取</item>
<item>301</item>
<item>302</item>
<item>303</item>
<item>304</item>
<item>305</item>
<item>306</item>
</string-array>
<string-array name="classSift">
<item>classFeature</item>
<item>credit</item>
<item>classroom</item>
<item>teacher</item>
</string-array>
</resources>

@ -0,0 +1,12 @@
<resources>
<string name="app_name">SoftEngineering_selectiveCourse</string>
<string name="title_activity_login">LoginActivity</string>
<string name="prompt_email">Email</string>
<string name="prompt_password">Password</string>
<string name="action_sign_in">Sign in or register</string>
<string name="action_sign_in_short">Sign in</string>
<string name="welcome">"Welcome !"</string>
<string name="invalid_username">Not a valid username</string>
<string name="invalid_password">Password must be >5 characters</string>
<string name="login_failed">"Login failed"</string>
</resources>

@ -0,0 +1,10 @@
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>

@ -0,0 +1,17 @@
package com.example.softengineering_selectivecourse;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() {
assertEquals(4, 2 + 2);
}
}

@ -0,0 +1,24 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:4.0.1"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}

@ -0,0 +1,19 @@
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app"s APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true

@ -0,0 +1,6 @@
#Sun Feb 14 11:27:02 CST 2021
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip

@ -0,0 +1,172 @@
#!/usr/bin/env sh
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn () {
echo "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=$(save "$@")
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi
exec "$JAVACMD" "$@"

@ -0,0 +1,84 @@
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

@ -0,0 +1,2 @@
include ':app'
rootProject.name = "SoftEngineering_selectiveCourse"

Binary file not shown.
Loading…
Cancel
Save